Skip to main content
POST
cURL

Overview

The Chat Completions API is fully compatible with OpenAI’s chat completions specification, supporting both text-only and multimodal (vision) requests. Use it to generate responses from Perceptron Mk1. Perceptron Mk1 triggers thinking and structured grounding through the typed vision_config body field.

vision_config

For perceptron-mk1, pass a top-level vision_config object alongside messages:

When to enable_thinking

  • On for text Q&A, captioning, OCR, and video clipping (annotation_format: "clip").
  • Off for spatial detection (annotation_format in "point", "box", "polygon").

Example: Grounded detection

Example: Video clipping

Example: Video from pre-decoded frames

If you’ve already sampled frames client-side, pass them inline with a video_frames content part instead of a single video_url. Each frame carries an image_url (HTTP(S) URL or base64 data URL) and a timestamp_ms offset from the start of the clip. Provide between two and 256 frames, ordered by non-decreasing timestamp_ms. For optimal performance, follow a uniform sampling strategy aligned with the Video Token Counting guide.

Example: Image reasoning with focus


Streaming

Set "stream": true to receive Server-Sent Events (SSE). To get token usage, also set stream_options.include_usage: true — when enabled, usage is attached to the final chunk (the one with finish_reason: "stop"), immediately before data: [DONE].

Best Practices

  1. Thinking pairs well with text and clipping; not with spatial detection. Turn enable_thinking on for text Q&A, captioning, OCR, and annotation_format: "clip". Turn it off for "point", "box", and "polygon".
  2. Leave temperature unset. The default is 0.0 (deterministic). Only set a non-zero value if you want more varied outputs.
  3. Image format: HTTP(S) URLs and base64 data URLs are both supported. MIME types: image/png, image/jpeg, image/webp, video/mp4, video/webm.
  4. Inline frames vs. video_url: Send a whole clip with video_url, or — if you’ve already sampled frames — pass them inline with video_frames (two to 256 frames, timestamp_ms non-decreasing). Inline frames give you precise control over exactly which frames the model sees; for optimal performance, sample uniformly in line with the Video Token Counting guide.
  5. Token limits: 32K context, 8K output.

Limits

For large images, resize client-side before uploading. See the Tokenization guide for optimization tips.

Authorizations

Authorization
string
header
required

Bearer token authentication using your Perceptron API key

Body

application/json
messages
object[]
required

Conversation history listed in order. Supported roles: system, user, assistant.

Author role of the message as defined by the OpenAI Chat Completions spec.

model
string
required

The model to invoke. Available options: isaac-0.1, isaac-0.2-1b, isaac-0.2-2b-preview, perceptron-mk1.

frequency_penalty
number<float> | null

Positive values discourage the model from repeating previously used tokens.

Required range: -2 <= x <= 2
max_completion_tokens
integer<int32> | null

Maximum number of completion tokens to generate.

Model-specific limits:

  • Isaac 0.1: The combined total of input tokens and output tokens must not exceed 8192 tokens.
Required range: x >= 0
presence_penalty
number<float> | null

Positive values encourage the model to introduce new concepts.

Required range: -2 <= x <= 2
regex
string | null

Regex pattern for constrained generation.

response_format
object

An object specifying the format that the model must output. Setting to { "type": "json_schema", "json_schema": {...} } enables Structured Outputs which ensures the model will match your supplied JSON schema.

stream
boolean | null
default:false

Set to true for SSE streaming. When omitted, the API returns a single JSON response.

stream_options
null | object

Optional streaming flags. Token usage is always reported in the final chunk of a streaming response.

temperature
number<float> | null

Sampling temperature. Lower values yield deterministic replies; higher values explore more creative outputs.

Model-specific recommendations:

  • Isaac 0.1: Default and recommended value is 0.0.
Required range: 0 <= x <= 2
top_k
integer<int32> | null

Top-k sampling. The model samples from the top k most likely tokens.

Required range: x >= 0
top_p
number<float> | null

Nucleus sampling probability. The model samples from the smallest token set whose cumulative probability exceeds this threshold.

Required range: x <= 1
vision_config
null | object

Perceptron vision-model controls (thinking, spatial output format, internal-tool toggles). Only supported on Perceptron-owned models.

Response

Chat completion generated successfully.

Non-streaming response body when stream=false.

choices
object[]
required
created
integer<int64>
required
Required range: x >= 0
id
string
required
model
string
required
object
string
required
usage
null | object

Token accounting emitted with every completion.