---
type: AI Model
id: nemotron
title: Nemotron 3.5 Super API
provider: NVIDIA
description: "Nemotron 3.5 Super is a reasoning model from NVIDIA. Ask it a question or give it a task in plain language, alone or about one image (JPEG or PNG) or one video of 2 minutes or less, and get a text answer, optionally with the reasoning behind it."
resource: https://www.pixazo.ai/models/nemotron
docs_url: https://www.pixazo.ai/models/nemotron
latest_version: 3.5 super
tags:
  - image-to-text
  - video-to-text
  - nvidia
variants:
  - id: nemotron-3-5-super
    name: Nemotron 3.5 Super
    version: 3.5 Super
    capabilities:
      - Text to Text
      - Image to Text
      - Video to Text
timestamp: 2026-10-26T13:00:08.480Z
---

# Nemotron 3.5 Super API

> Provider: **NVIDIA**
> Source: https://www.pixazo.ai/models/nemotron

Nemotron 3.5 Super is a reasoning model from NVIDIA. Ask it a question or give it a task in plain language, alone or about one image (JPEG or PNG) or one video of 2 minutes or less, and get a text answer, optionally with the reasoning behind it.

## Nemotron 3.5 Super

### Text to Text

## Nemotron 3.5 Super Text API Documentation

Ask NVIDIA Nemotron 3.5 Super a question or give it a task in `prompt`, with optional instructions in `system_prompt`. Set `reasoning_mode` to `think` to also get the model's reasoning, and cap the answer with `max_tokens`. Asynchronous: submit returns a `request_id`; poll the status endpoint until the request is `COMPLETED`, then read the answer from `output.output`.

```
POST https://gateway.pixazo.ai/nemotron-3-5-super-text/v1/text-to-text
```

## Authentication

All requests require an API key passed via header.

Header

Type

Required

Description

Ocp-Apim-Subscription-Key

string

Yes

Your API subscription key

## Text to Text - Nemotron 3.5 Super Text

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/nemotron-3-5-super-text/v1/text-to-text
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Explain in two sentences why the sky looks blue.",
  "max_tokens": 256
}
```

```
import requests

url = "https://gateway.pixazo.ai/nemotron-3-5-super-text/v1/text-to-text"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "Explain in two sentences why the sky looks blue.",
  "max_tokens": 256
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
```

```
const res = await fetch("https://gateway.pixazo.ai/nemotron-3-5-super-text/v1/text-to-text", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "Explain in two sentences why the sky looks blue.",
  "max_tokens": 256
})
});
console.log(await res.json());
```

```
curl -X POST 'https://gateway.pixazo.ai/nemotron-3-5-super-text/v1/text-to-text' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "Explain in two sentences why the sky looks blue.", "max_tokens": 256}'
```

## Output

```
{
  "request_id": "nemotron-3-5-super-text_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-text_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=nemotron-3-5-super-text&operation=text-to-text)

## Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

Header

Required

Description

X-Webhook-URL

To enable

HTTPS URL to receive the Webhook callback.

X-Webhook-Mode

No

`terminal` (default, one callback on COMPLETED/ERROR) or `sync` (per-poll callbacks).

### Example: enable Webhook

```
curl -X POST 'https://gateway.pixazo.ai/nemotron-3-5-super-text/v1/text-to-text' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"prompt": "Explain in two sentences why the sky looks blue.", "max_tokens": 256}'
```

### Callback Payload (success)

```
{
  "request_id": "nemotron-3-5-super-text_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "nemotron-3-5-super-text",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.json"
    ],
    "media_type": "application/json",
    "output": "The answer.",
    "finish_reason": "stop",
    "usage": {
      "input_tokens": 52,
      "output_tokens": 61
    }
  },
  "created_at": "2026-10-09T10:04:54.387Z",
  "completed_at": "2026-10-09 10:06:21"
}
```

### Failure callback shape

```
{
  "request_id": "nemotron-3-5-super-text_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "nemotron-3-5-super-text",
  "error": "Description of the failure"
}
```

#### Delivery semantics

-   **terminal** mode: one Webhook callback when the request is COMPLETED or ERROR.
-   **sync** mode: a Webhook callback on every poll while the request is processing (status `PROCESSING`), plus the final COMPLETED/ERROR callback.
-   Callbacks are idempotent on `request_id` — de-duplicate on it.
-   Respond `200` within a few seconds; the Webhook endpoint must be HTTPS.

## Request Parameters

Parameter

Required

Type

Default

Allowed values / range

Description

`prompt`

Yes

string

—

Non-empty text, up to 100000 characters

Your question or task.

`system_prompt`

No

string

—

Text, up to 20000 characters

Instructions that steer how the model answers, for example `Answer in one sentence.`

`reasoning_mode`

No

string

`"no_think"`

`think`, `no_think`

`think` returns the model's reasoning in `output.reasoning` before the answer; `no_think` answers directly.

`max_tokens`

No

integer

`1024`

Whole number, 1 to 32000

The most tokens the model may generate, reasoning included. A small value can cut the answer short (see Reasoning and max\_tokens below).

`temperature`

No

number

`1`

0 to 2

Sampling temperature: lower values give more focused answers.

`top_p`

No

number

`0.95`

0.01 to 1

Nucleus sampling: the share of probability mass the model samples from.

`enable_safety_checker`

No

boolean

`true`

`true`, `false`

Check the request for unsafe content.

### Good to know

-   Each request returns **one answer**. `batch_size`, `num_images`, `number_of_images`, `n` and `count` are rejected — send one request per answer.
-   This API has no length setting: use `max_tokens` to cap the answer. `duration`, `seconds`, `num_frames`, `frames_per_second` and `music_length_ms` are rejected.
-   Send every field at the top level of the JSON body; `parameters`, `content` and `text` are rejected.
-   `max_tokens` takes a whole number from 1 to 32000 (`1024` when you leave it out); any other value is refused at submit.
-   `image_url`, `video_url`, `image_urls` and `video_urls` are rejected (this endpoint answers text only: use Nemotron 3.5 Super Vision for an image or Nemotron 3.5 Super Video for a video).
-   `messages` is rejected (send the question as `prompt`).
-   `max_new_tokens` and `max_completion_tokens` are rejected (use `max_tokens`).
-   Use the JSON types shown: `prompt`, `system_prompt` and `reasoning_mode` are strings, `max_tokens` is a whole number (not `"1024"`), `temperature` and `top_p` are numbers, and `enable_safety_checker` is `true` or `false`.
-   Omit a field instead of sending `null`.
-   Results are always returned as a URL in `output.media_url`; `sync_mode` is accepted only as `false`.
-   Webhooks are set with the `X-Webhook-URL` / `X-Webhook-Mode` headers; `webhook_url`, `webhook_mode` and `callback_url` in the JSON body are rejected.
-   `stream` is not supported: the result is delivered when the job completes.
-   Options this API does not offer are rejected: `input` and `model`.

## Reasoning and max\_tokens

-   `max_tokens` caps everything the model generates, its reasoning included. When the cap is reached, `output.finish_reason` is `length` instead of `stop`.
-   With `reasoning_mode` `think`, the reasoning comes first: a small `max_tokens` can be used up by the reasoning, and `output.output` is then an empty string. Allow a few thousand tokens for `think`.
-   An empty or cut-short answer is billed like any other: you pay for the tokens used, shown in `output.usage`.

### Example: show the reasoning

```
{
  "prompt": "Is 1001 a prime number? Answer yes or no.",
  "reasoning_mode": "think",
  "max_tokens": 4096
}
```

## Instructions

-   Put standing instructions (tone, length, format) in `system_prompt` and the question itself in `prompt`.
-   There is no conversation history: each request stands alone. To continue a conversation, include the earlier turns in `prompt`.

### Example: instructions in system\_prompt

```
{
  "system_prompt": "You are a concise assistant. Answer in one sentence.",
  "prompt": "What does an API gateway do?",
  "temperature": 0.6
}
```

## Example Request

```
{
  "prompt": "Explain in two sentences why the sky looks blue.",
  "max_tokens": 256
}
```

## Example Response

```
{
  "request_id": "nemotron-3-5-super-text_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-text_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Request Headers

Header

Required

Description

Content-Type

Yes

`application/json`

Ocp-Apim-Subscription-Key

Yes

Your API subscription key.

X-Webhook-URL

No

Enable Webhook callbacks (see Webhook section).

X-Webhook-Mode

No

`terminal` (default) or `sync` (see Webhook section).

## Response Handling

Status Code

Meaning

202

Accepted — request queued; returns `request_id` and `polling_url`.

400

Invalid request — a required field is missing, a value has the wrong type, is too long, out of range or not one of the allowed values, or a field this operation does not accept was sent. The message says what to fix.

401

Unauthorized — missing or invalid subscription key.

402

Insufficient balance for the hold this request needs.

429

Too many requests.

500

Internal server error.

Parameter problems are caught when you submit and returned as a `400`, before any hold is placed on your balance. Problems that need the model to run are reported through the status endpoint as `status: "ERROR"`, with a message in `error` saying what went wrong. Failed requests are not billed — the hold is released in full.

Condition

How it surfaces

Missing or invalid subscription key

synchronous `401`

Balance too low for the hold

synchronous `402`

Missing or empty `prompt`, `prompt` not a string, or longer than 100000 characters

synchronous `400`

`system_prompt` not a string, or longer than 20000 characters

synchronous `400`

`reasoning_mode` not one of the allowed values (written exactly as listed)

synchronous `400`

`enable_safety_checker` not `true` or `false` — for example the string `"true"`

synchronous `400`

`max_tokens` not a whole number from 1 to 32000 — for example `0`, `32001` or the string `"1"`

synchronous `400`

`temperature` not a number — for example the string `"5"`

synchronous `400`

`top_p` not a number — for example the string `"5"`

synchronous `400`

`sync_mode` set to anything other than `false` (results are always returned as a URL in `output.media_url`)

synchronous `400`

`image_url`, `video_url`, `image_urls`, `video_urls` (this endpoint answers text only: use Nemotron 3.5 Super Vision for an image or Nemotron 3.5 Super Video for a video)

synchronous `400`

`messages` (send the question as `prompt`)

synchronous `400`

`max_new_tokens`, `max_completion_tokens` (use `max_tokens`)

synchronous `400`

`batch_size`, `num_images`, `number_of_images`, `n`, `count` (one answer per request)

synchronous `400`

`duration`, `seconds`, `num_frames`, `frames_per_second`, `music_length_ms` (use `max_tokens` to cap the answer)

synchronous `400`

`parameters`, `content`, `text` (send the fields at the top level of the JSON body)

synchronous `400`

`webhook_url`, `webhook_mode`, `callback_url` in the JSON body (use the `X-Webhook-URL` / `X-Webhook-Mode` headers)

synchronous `400`

`stream` (the result is delivered when the job completes)

synchronous `400`

`input`, `model` (not accepted by this operation)

synchronous `400`

A request the model refuses, for example under its content policy (the safety checker)

`status: "ERROR"`

### Example error responses

A refused request returns `error`, a `message` that joins every problem found, and the same problems one by one in `violations`.

#### Missing `prompt` (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'prompt' is required",
  "violations": [
    "'prompt' is required"
  ]
}
```

#### `max_tokens` above 32000 (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'max_tokens' must be <= 32000 (got 40000)",
  "violations": [
    "'max_tokens' must be <= 32000 (got 40000)"
  ]
}
```

#### A chat-style `messages` list (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'prompt' is required; 'messages' must be one of:  (got [{\"role\":\"user\",\"content\":\"Hello\"}]); 'messages' is not accepted. Send the question as 'prompt' and optional instructions as 'system_prompt'.",
  "violations": [
    "'prompt' is required",
    "'messages' must be one of:  (got [{\"role\":\"user\",\"content\":\"Hello\"}])",
    "'messages' is not accepted. Send the question as 'prompt' and optional instructions as 'system_prompt'."
  ]
}
```

#### An image sent to the text endpoint (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'image_url' must be one of:  (got \"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg\"); 'image_url' is not accepted. This endpoint answers text only: use nemotron-3-5-super-vision for an image or nemotron-3-5-super-video for a video.",
  "violations": [
    "'image_url' must be one of:  (got \"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg\")",
    "'image_url' is not accepted. This endpoint answers text only: use nemotron-3-5-super-vision for an image or nemotron-3-5-super-video for a video."
  ]
}
```

#### More than one answer per request (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'n' must be one of:  (got 2); 'n' is not supported: each request returns one answer. Send one request per question.",
  "violations": [
    "'n' must be one of:  (got 2)",
    "'n' is not supported: each request returns one answer. Send one request per question."
  ]
}
```

## Retrieving Results

Poll the status endpoint with the `request_id` from the submit response until `status` is `COMPLETED` or `ERROR`, then read the answer in `output.output` (the same JSON is stored as a file at `output.media_url[0]`). Treat any status other than `QUEUED`, `PROCESSING` or `COMPLETED` as a failure.

### Endpoint

```
GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
```

### cURL example

```
curl 'https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-text_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'
```

### Completed response

```
{
  "request_id": "nemotron-3-5-super-text_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "nemotron-3-5-super-text",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.json"
    ],
    "media_type": "application/json",
    "output": "The answer.",
    "finish_reason": "stop",
    "usage": {
      "input_tokens": 52,
      "output_tokens": 61
    }
  },
  "created_at": "2026-10-09T10:04:54.387Z",
  "completed_at": "2026-10-09 10:06:21"
}
```

## Response Fields

Field

Type

Description

request\_id

string

Unique request identifier.

status

string

QUEUED, PROCESSING, COMPLETED or ERROR.

model\_id

string

The model that handled the request — `nemotron-3-5-super-text` for this endpoint.

output.output

string

The answer. It can be empty when `max_tokens` runs out during the reasoning.

output.reasoning

string

The model's reasoning, only with `reasoning_mode` `think`.

output.finish\_reason

string

`stop` (the answer is complete) or `length` (`max_tokens` was reached).

output.usage

object

`input_tokens` and `output_tokens`: what the request is billed for.

output.truncated

boolean

Present and `true` only when a text longer than 32 KB was shortened in this response; the file at `output.media_url[0]` holds it in full.

output.media\_url

array of strings

URL of a JSON file holding the same fields in full.

output.media\_type

string

`application/json`.

created\_at

string

Request creation timestamp.

completed\_at

string

Completion timestamp.

error

string

Error message when `status` is ERROR.

polling\_url

string

Status URL for this request (submit response only).

## Status Values & Flow

`QUEUED` → `PROCESSING` → `COMPLETED` (success) or `ERROR` (failure).

### Typical workflow

1.  Send the request to `POST https://gateway.pixazo.ai/nemotron-3-5-super-text/v1/text-to-text`.
2.  Save the `request_id` from the `202` response.
3.  Poll `GET /v2/requests/status/{request_id}` every 10 seconds or so, or use a Webhook instead.
4.  When `status` is `COMPLETED`, read the answer in `output.output` (the same JSON is stored as a file at `output.media_url[0]`).

## How Billing Is Measured

Billing is measured **per 1,000 tokens** of input plus output (your prompt and instructions count as input; the answer and any reasoning count as output), rounded up to the next 1,000, with a minimum of one unit per request. A hold for the most the request can use is placed when you submit; when the answer is ready, the charge is set from the tokens actually used, shown in `output.usage`, and the rest of the hold is released. A failed request is not charged. The current rate is shown in the pricing panel on this page.

### Image to Text

## Nemotron 3.5 Super Vision API Documentation

Ask NVIDIA Nemotron 3.5 Super about one image: send the image in `image_url` (JPEG or PNG) and your question in `prompt`, for example to describe a scene or read text and charts. Asynchronous: submit returns a `request_id`; poll the status endpoint until the request is `COMPLETED`, then read the answer from `output.output`.

```
POST https://gateway.pixazo.ai/nemotron-3-5-super-vision/v1/image-to-text
```

## Authentication

All requests require an API key passed via header.

Header

Type

Required

Description

Ocp-Apim-Subscription-Key

string

Yes

Your API subscription key

## Image to Text - Nemotron 3.5 Super Vision

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/nemotron-3-5-super-vision/v1/image-to-text
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Describe this image in one sentence.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "max_tokens": 256
}
```

```
import requests

url = "https://gateway.pixazo.ai/nemotron-3-5-super-vision/v1/image-to-text"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "Describe this image in one sentence.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "max_tokens": 256
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
```

```
const res = await fetch("https://gateway.pixazo.ai/nemotron-3-5-super-vision/v1/image-to-text", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "Describe this image in one sentence.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "max_tokens": 256
})
});
console.log(await res.json());
```

```
curl -X POST 'https://gateway.pixazo.ai/nemotron-3-5-super-vision/v1/image-to-text' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "Describe this image in one sentence.", "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg", "max_tokens": 256}'
```

## Output

```
{
  "request_id": "nemotron-3-5-super-vision_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-vision_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=nemotron-3-5-super-vision&operation=image-to-text)

## Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

Header

Required

Description

X-Webhook-URL

To enable

HTTPS URL to receive the Webhook callback.

X-Webhook-Mode

No

`terminal` (default, one callback on COMPLETED/ERROR) or `sync` (per-poll callbacks).

### Example: enable Webhook

```
curl -X POST 'https://gateway.pixazo.ai/nemotron-3-5-super-vision/v1/image-to-text' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"prompt": "Describe this image in one sentence.", "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg", "max_tokens": 256}'
```

### Callback Payload (success)

```
{
  "request_id": "nemotron-3-5-super-vision_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "nemotron-3-5-super-vision",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.json"
    ],
    "media_type": "application/json",
    "output": "The answer.",
    "finish_reason": "stop",
    "usage": {
      "input_tokens": 52,
      "output_tokens": 61
    }
  },
  "created_at": "2026-10-09T10:04:54.387Z",
  "completed_at": "2026-10-09 10:06:21"
}
```

### Failure callback shape

```
{
  "request_id": "nemotron-3-5-super-vision_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "nemotron-3-5-super-vision",
  "error": "Description of the failure"
}
```

#### Delivery semantics

-   **terminal** mode: one Webhook callback when the request is COMPLETED or ERROR.
-   **sync** mode: a Webhook callback on every poll while the request is processing (status `PROCESSING`), plus the final COMPLETED/ERROR callback.
-   Callbacks are idempotent on `request_id` — de-duplicate on it.
-   Respond `200` within a few seconds; the Webhook endpoint must be HTTPS.

## Request Parameters

Parameter

Required

Type

Default

Allowed values / range

Description

`prompt`

Yes

string

—

Non-empty text, up to 100000 characters

Your question or task.

`image_url`

Yes

string

—

A publicly reachable `https` URL (recommended) or a base64 data URI of a JPEG or PNG image

The image to ask about. Other formats (WebP, GIF, HEIC, ...) are refused at submit.

`system_prompt`

No

string

—

Text, up to 20000 characters

Instructions that steer how the model answers, for example `Answer in one sentence.`

`reasoning_mode`

No

string

`"no_think"`

`think`, `no_think`

`think` returns the model's reasoning in `output.reasoning` before the answer; `no_think` answers directly.

`max_tokens`

No

integer

`1024`

Whole number, 1 to 32000

The most tokens the model may generate, reasoning included. A small value can cut the answer short (see Reasoning and max\_tokens below).

`temperature`

No

number

`1`

0 to 2

Sampling temperature: lower values give more focused answers.

`top_p`

No

number

`0.95`

0.01 to 1

Nucleus sampling: the share of probability mass the model samples from.

`enable_safety_checker`

No

boolean

`true`

`true`, `false`

Check the request for unsafe content.

### Good to know

-   Each request returns **one answer**. `batch_size`, `num_images`, `number_of_images`, `n` and `count` are rejected — send one request per answer.
-   This API has no length setting: use `max_tokens` to cap the answer. `duration`, `seconds`, `num_frames`, `frames_per_second` and `music_length_ms` are rejected.
-   Send every field at the top level of the JSON body; `parameters`, `content` and `text` are rejected.
-   Send one image as `image_url`: a publicly reachable `https` URL (recommended) or a base64 data URI of a JPEG or PNG. An image in another format is refused at submit, with nothing charged.
-   `max_tokens` takes a whole number from 1 to 32000 (`1024` when you leave it out); any other value is refused at submit.
-   `video_url`, `video_urls` and `image_urls` are rejected (this endpoint reads one image, as `image_url`; use Nemotron 3.5 Super Video for a video).
-   `messages` is rejected (send the question as `prompt`).
-   `max_new_tokens` and `max_completion_tokens` are rejected (use `max_tokens`).
-   Use the JSON types shown: `prompt`, `system_prompt` and `reasoning_mode` are strings, `max_tokens` is a whole number (not `"1024"`), `temperature` and `top_p` are numbers, and `enable_safety_checker` is `true` or `false`.
-   Omit a field instead of sending `null`.
-   Results are always returned as a URL in `output.media_url`; `sync_mode` is accepted only as `false`.
-   Webhooks are set with the `X-Webhook-URL` / `X-Webhook-Mode` headers; `webhook_url`, `webhook_mode` and `callback_url` in the JSON body are rejected.
-   `stream` is not supported: the result is delivered when the job completes.
-   Options this API does not offer are rejected: `input` and `model`.

## Reasoning and max\_tokens

-   `max_tokens` caps everything the model generates, its reasoning included. When the cap is reached, `output.finish_reason` is `length` instead of `stop`.
-   With `reasoning_mode` `think`, the reasoning comes first: a small `max_tokens` can be used up by the reasoning, and `output.output` is then an empty string. Allow a few thousand tokens for `think`.
-   An empty or cut-short answer is billed like any other: you pay for the tokens used, shown in `output.usage`.
-   The image counts as input tokens: a larger image uses more of them.

### Example: show the reasoning

```
{
  "prompt": "How many people are in this image? Explain briefly.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "reasoning_mode": "think",
  "max_tokens": 4096
}
```

## Example Request

```
{
  "prompt": "Describe this image in one sentence.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg",
  "max_tokens": 256
}
```

## Example Response

```
{
  "request_id": "nemotron-3-5-super-vision_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-vision_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Request Headers

Header

Required

Description

Content-Type

Yes

`application/json`

Ocp-Apim-Subscription-Key

Yes

Your API subscription key.

X-Webhook-URL

No

Enable Webhook callbacks (see Webhook section).

X-Webhook-Mode

No

`terminal` (default) or `sync` (see Webhook section).

## Response Handling

Status Code

Meaning

202

Accepted — request queued; returns `request_id` and `polling_url`.

400

Invalid request — a required field is missing, a value has the wrong type, is too long, out of range or not one of the allowed values, or a field this operation does not accept was sent. The message says what to fix.

401

Unauthorized — missing or invalid subscription key.

402

Insufficient balance for the hold this request needs.

429

Too many requests.

500

Internal server error.

Parameter problems are caught when you submit and returned as a `400`, before any hold is placed on your balance. Problems that need the model to run are reported through the status endpoint as `status: "ERROR"`, with a message in `error` saying what went wrong. Failed requests are not billed — the hold is released in full.

Condition

How it surfaces

Missing or invalid subscription key

synchronous `401`

Balance too low for the hold

synchronous `402`

Missing or empty `prompt`, `prompt` not a string, or longer than 100000 characters

synchronous `400`

Missing or empty `image_url`, `image_url` not a string

synchronous `400`

`system_prompt` not a string, or longer than 20000 characters

synchronous `400`

`reasoning_mode` not one of the allowed values (written exactly as listed)

synchronous `400`

`enable_safety_checker` not `true` or `false` — for example the string `"true"`

synchronous `400`

`max_tokens` not a whole number from 1 to 32000 — for example `0`, `32001` or the string `"1"`

synchronous `400`

`temperature` not a number — for example the string `"5"`

synchronous `400`

`top_p` not a number — for example the string `"5"`

synchronous `400`

`sync_mode` set to anything other than `false` (results are always returned as a URL in `output.media_url`)

synchronous `400`

`video_url`, `video_urls`, `image_urls` (this endpoint reads one image, as `image_url`; use Nemotron 3.5 Super Video for a video)

synchronous `400`

`messages` (send the question as `prompt`)

synchronous `400`

`max_new_tokens`, `max_completion_tokens` (use `max_tokens`)

synchronous `400`

`batch_size`, `num_images`, `number_of_images`, `n`, `count` (one answer per request)

synchronous `400`

`duration`, `seconds`, `num_frames`, `frames_per_second`, `music_length_ms` (use `max_tokens` to cap the answer)

synchronous `400`

`parameters`, `content`, `text` (send the fields at the top level of the JSON body)

synchronous `400`

`webhook_url`, `webhook_mode`, `callback_url` in the JSON body (use the `X-Webhook-URL` / `X-Webhook-Mode` headers)

synchronous `400`

`stream` (the result is delivered when the job completes)

synchronous `400`

`input`, `model` (not accepted by this operation)

synchronous `400`

An `image_url` whose file is not a JPEG or PNG image (for example WebP, GIF or HEIC)

synchronous `400`

An image that cannot be downloaded or read

`status: "ERROR"`

A request the model refuses, for example under its content policy (the safety checker)

`status: "ERROR"`

### Example error responses

A refused request returns `error`, a `message` that joins every problem found, and the same problems one by one in `violations`.

#### Missing `image_url` (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'image_url' is required",
  "violations": [
    "'image_url' is required"
  ]
}
```

#### A reasoning mode that does not exist (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'reasoning_mode' must be one of: \"think\", \"no_think\" (got \"deep\")",
  "violations": [
    "'reasoning_mode' must be one of: \"think\", \"no_think\" (got \"deep\")"
  ]
}
```

#### A video sent to the image endpoint (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'video_url' must be one of:  (got \"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4\"); 'video_url' is not accepted. This endpoint reads one image: use nemotron-3-5-super-video for a video.",
  "violations": [
    "'video_url' must be one of:  (got \"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4\")",
    "'video_url' is not accepted. This endpoint reads one image: use nemotron-3-5-super-video for a video."
  ]
}
```

#### More than one image per request (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'image_urls' must be one of:  (got [\"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg\",\"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg\"]); 'image_urls' is not accepted: each request reads at most one image, as 'image_url' (nemotron-3-5-super-vision).",
  "violations": [
    "'image_urls' must be one of:  (got [\"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg\",\"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg\"])",
    "'image_urls' is not accepted: each request reads at most one image, as 'image_url' (nemotron-3-5-super-vision)."
  ]
}
```

#### `top_p` of 0 (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'top_p' must be >= 0.01 (got 0)",
  "violations": [
    "'top_p' must be >= 0.01 (got 0)"
  ]
}
```

## Retrieving Results

Poll the status endpoint with the `request_id` from the submit response until `status` is `COMPLETED` or `ERROR`, then read the answer in `output.output` (the same JSON is stored as a file at `output.media_url[0]`). Treat any status other than `QUEUED`, `PROCESSING` or `COMPLETED` as a failure.

### Endpoint

```
GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
```

### cURL example

```
curl 'https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-vision_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'
```

### Completed response

```
{
  "request_id": "nemotron-3-5-super-vision_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "nemotron-3-5-super-vision",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.json"
    ],
    "media_type": "application/json",
    "output": "The answer.",
    "finish_reason": "stop",
    "usage": {
      "input_tokens": 52,
      "output_tokens": 61
    }
  },
  "created_at": "2026-10-09T10:04:54.387Z",
  "completed_at": "2026-10-09 10:06:21"
}
```

## Response Fields

Field

Type

Description

request\_id

string

Unique request identifier.

status

string

QUEUED, PROCESSING, COMPLETED or ERROR.

model\_id

string

The model that handled the request — `nemotron-3-5-super-vision` for this endpoint.

output.output

string

The answer. It can be empty when `max_tokens` runs out during the reasoning.

output.reasoning

string

The model's reasoning, only with `reasoning_mode` `think`.

output.finish\_reason

string

`stop` (the answer is complete) or `length` (`max_tokens` was reached).

output.usage

object

`input_tokens` and `output_tokens`: what the request is billed for.

output.truncated

boolean

Present and `true` only when a text longer than 32 KB was shortened in this response; the file at `output.media_url[0]` holds it in full.

output.media\_url

array of strings

URL of a JSON file holding the same fields in full.

output.media\_type

string

`application/json`.

created\_at

string

Request creation timestamp.

completed\_at

string

Completion timestamp.

error

string

Error message when `status` is ERROR.

polling\_url

string

Status URL for this request (submit response only).

## Status Values & Flow

`QUEUED` → `PROCESSING` → `COMPLETED` (success) or `ERROR` (failure).

### Typical workflow

1.  Send the request to `POST https://gateway.pixazo.ai/nemotron-3-5-super-vision/v1/image-to-text`.
2.  Save the `request_id` from the `202` response.
3.  Poll `GET /v2/requests/status/{request_id}` every 10 seconds or so, or use a Webhook instead.
4.  When `status` is `COMPLETED`, read the answer in `output.output` (the same JSON is stored as a file at `output.media_url[0]`).

## How Billing Is Measured

Billing is measured **per 1,000 tokens** of input plus output (your prompt, instructions and the image count as input; the answer and any reasoning count as output), rounded up to the next 1,000, with a minimum of one unit per request. A hold for the most the request can use is placed when you submit; when the answer is ready, the charge is set from the tokens actually used, shown in `output.usage`, and the rest of the hold is released. A failed request is not charged. The current rate is shown in the pricing panel on this page.

### Video to Text

## Nemotron 3.5 Super Video API Documentation

Ask NVIDIA Nemotron 3.5 Super about one video: send the video in `video_url` (MP4, 2 minutes or less) and your question in `prompt`, for example to summarize what happens or find a moment. Asynchronous: submit returns a `request_id`; poll the status endpoint until the request is `COMPLETED`, then read the answer from `output.output`.

```
POST https://gateway.pixazo.ai/nemotron-3-5-super-video/v1/video-to-text
```

## Authentication

All requests require an API key passed via header.

Header

Type

Required

Description

Ocp-Apim-Subscription-Key

string

Yes

Your API subscription key

## Video to Text - Nemotron 3.5 Super Video

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/nemotron-3-5-super-video/v1/video-to-text
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Summarize what happens in this video in one sentence.",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4",
  "max_tokens": 256
}
```

```
import requests

url = "https://gateway.pixazo.ai/nemotron-3-5-super-video/v1/video-to-text"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "Summarize what happens in this video in one sentence.",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4",
  "max_tokens": 256
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
```

```
const res = await fetch("https://gateway.pixazo.ai/nemotron-3-5-super-video/v1/video-to-text", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "Summarize what happens in this video in one sentence.",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4",
  "max_tokens": 256
})
});
console.log(await res.json());
```

```
curl -X POST 'https://gateway.pixazo.ai/nemotron-3-5-super-video/v1/video-to-text' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "Summarize what happens in this video in one sentence.", "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4", "max_tokens": 256}'
```

## Output

```
{
  "request_id": "nemotron-3-5-super-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=nemotron-3-5-super-video&operation=video-to-text)

## Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

Header

Required

Description

X-Webhook-URL

To enable

HTTPS URL to receive the Webhook callback.

X-Webhook-Mode

No

`terminal` (default, one callback on COMPLETED/ERROR) or `sync` (per-poll callbacks).

### Example: enable Webhook

```
curl -X POST 'https://gateway.pixazo.ai/nemotron-3-5-super-video/v1/video-to-text' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"prompt": "Summarize what happens in this video in one sentence.", "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4", "max_tokens": 256}'
```

### Callback Payload (success)

```
{
  "request_id": "nemotron-3-5-super-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "nemotron-3-5-super-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.json"
    ],
    "media_type": "application/json",
    "output": "The answer.",
    "finish_reason": "stop",
    "usage": {
      "input_tokens": 52,
      "output_tokens": 61
    }
  },
  "created_at": "2026-10-09T10:04:54.387Z",
  "completed_at": "2026-10-09 10:06:21"
}
```

### Failure callback shape

```
{
  "request_id": "nemotron-3-5-super-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "nemotron-3-5-super-video",
  "error": "Description of the failure"
}
```

#### Delivery semantics

-   **terminal** mode: one Webhook callback when the request is COMPLETED or ERROR.
-   **sync** mode: a Webhook callback on every poll while the request is processing (status `PROCESSING`), plus the final COMPLETED/ERROR callback.
-   Callbacks are idempotent on `request_id` — de-duplicate on it.
-   Respond `200` within a few seconds; the Webhook endpoint must be HTTPS.

## Request Parameters

Parameter

Required

Type

Default

Allowed values / range

Description

`prompt`

Yes

string

—

Non-empty text, up to 100000 characters

Your question or task.

`video_url`

Yes

string

—

A publicly reachable `https` URL (recommended) or a base64 data URI of an MP4 video of 2 minutes or less

The video to ask about. A video measured longer than 2 minutes is refused at submit.

`system_prompt`

No

string

—

Text, up to 20000 characters

Instructions that steer how the model answers, for example `Answer in one sentence.`

`reasoning_mode`

No

string

`"no_think"`

`think`, `no_think`

`think` returns the model's reasoning in `output.reasoning` before the answer; `no_think` answers directly.

`max_tokens`

No

integer

`1024`

Whole number, 1 to 32000

The most tokens the model may generate, reasoning included. A small value can cut the answer short (see Reasoning and max\_tokens below).

`temperature`

No

number

`1`

0 to 2

Sampling temperature: lower values give more focused answers.

`top_p`

No

number

`0.95`

0.01 to 1

Nucleus sampling: the share of probability mass the model samples from.

`enable_safety_checker`

No

boolean

`true`

`true`, `false`

Check the request for unsafe content.

### Good to know

-   Each request returns **one answer**. `batch_size`, `num_images`, `number_of_images`, `n` and `count` are rejected — send one request per answer.
-   This API has no length setting: use `max_tokens` to cap the answer. `duration`, `seconds`, `num_frames`, `frames_per_second` and `music_length_ms` are rejected.
-   Send every field at the top level of the JSON body; `parameters`, `content` and `text` are rejected.
-   Send one video as `video_url`: a publicly reachable `https` URL (recommended) or a base64 data URI of an MP4 of 2 minutes or less. A video measured longer than 2 minutes is refused at submit, with nothing charged.
-   `max_tokens` takes a whole number from 1 to 32000 (`1024` when you leave it out); any other value is refused at submit.
-   `image_url`, `image_urls` and `video_urls` are rejected (this endpoint reads one video, as `video_url`; use Nemotron 3.5 Super Vision for an image).
-   `messages` is rejected (send the question as `prompt`).
-   `max_new_tokens` and `max_completion_tokens` are rejected (use `max_tokens`).
-   Use the JSON types shown: `prompt`, `system_prompt` and `reasoning_mode` are strings, `max_tokens` is a whole number (not `"1024"`), `temperature` and `top_p` are numbers, and `enable_safety_checker` is `true` or `false`.
-   Omit a field instead of sending `null`.
-   Results are always returned as a URL in `output.media_url`; `sync_mode` is accepted only as `false`.
-   Webhooks are set with the `X-Webhook-URL` / `X-Webhook-Mode` headers; `webhook_url`, `webhook_mode` and `callback_url` in the JSON body are rejected.
-   `stream` is not supported: the result is delivered when the job completes.
-   Options this API does not offer are rejected: `input` and `model`.

## Reasoning and max\_tokens

-   `max_tokens` caps everything the model generates, its reasoning included. When the cap is reached, `output.finish_reason` is `length` instead of `stop`.
-   With `reasoning_mode` `think`, the reasoning comes first: a small `max_tokens` can be used up by the reasoning, and `output.output` is then an empty string. Allow a few thousand tokens for `think`.
-   An empty or cut-short answer is billed like any other: you pay for the tokens used, shown in `output.usage`.
-   The video counts as input tokens: a longer video uses more of them. The content of the frames does not change the count.

### Example: show the reasoning

```
{
  "prompt": "What changes between the start and the end of this video?",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4",
  "reasoning_mode": "think",
  "max_tokens": 4096
}
```

## Example Request

```
{
  "prompt": "Summarize what happens in this video in one sentence.",
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/video/input-5s.mp4",
  "max_tokens": 256
}
```

## Example Response

```
{
  "request_id": "nemotron-3-5-super-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Request Headers

Header

Required

Description

Content-Type

Yes

`application/json`

Ocp-Apim-Subscription-Key

Yes

Your API subscription key.

X-Webhook-URL

No

Enable Webhook callbacks (see Webhook section).

X-Webhook-Mode

No

`terminal` (default) or `sync` (see Webhook section).

## Response Handling

Status Code

Meaning

202

Accepted — request queued; returns `request_id` and `polling_url`.

400

Invalid request — a required field is missing, a value has the wrong type, is too long, out of range or not one of the allowed values, or a field this operation does not accept was sent. The message says what to fix.

401

Unauthorized — missing or invalid subscription key.

402

Insufficient balance for the hold this request needs.

429

Too many requests.

500

Internal server error.

Parameter problems are caught when you submit and returned as a `400`, before any hold is placed on your balance. Problems that need the model to run are reported through the status endpoint as `status: "ERROR"`, with a message in `error` saying what went wrong. Failed requests are not billed — the hold is released in full.

Condition

How it surfaces

Missing or invalid subscription key

synchronous `401`

Balance too low for the hold

synchronous `402`

Missing or empty `prompt`, `prompt` not a string, or longer than 100000 characters

synchronous `400`

Missing or empty `video_url`, `video_url` not a string

synchronous `400`

`system_prompt` not a string, or longer than 20000 characters

synchronous `400`

`reasoning_mode` not one of the allowed values (written exactly as listed)

synchronous `400`

`enable_safety_checker` not `true` or `false` — for example the string `"true"`

synchronous `400`

`max_tokens` not a whole number from 1 to 32000 — for example `0`, `32001` or the string `"1"`

synchronous `400`

`temperature` not a number — for example the string `"5"`

synchronous `400`

`top_p` not a number — for example the string `"5"`

synchronous `400`

`sync_mode` set to anything other than `false` (results are always returned as a URL in `output.media_url`)

synchronous `400`

`image_url`, `image_urls`, `video_urls` (this endpoint reads one video, as `video_url`; use Nemotron 3.5 Super Vision for an image)

synchronous `400`

`messages` (send the question as `prompt`)

synchronous `400`

`max_new_tokens`, `max_completion_tokens` (use `max_tokens`)

synchronous `400`

`batch_size`, `num_images`, `number_of_images`, `n`, `count` (one answer per request)

synchronous `400`

`duration`, `seconds`, `num_frames`, `frames_per_second`, `music_length_ms` (use `max_tokens` to cap the answer)

synchronous `400`

`parameters`, `content`, `text` (send the fields at the top level of the JSON body)

synchronous `400`

`webhook_url`, `webhook_mode`, `callback_url` in the JSON body (use the `X-Webhook-URL` / `X-Webhook-Mode` headers)

synchronous `400`

`stream` (the result is delivered when the job completes)

synchronous `400`

`input`, `model` (not accepted by this operation)

synchronous `400`

A `video_url` measured longer than 2 minutes (the response names the measured length)

synchronous `400`

A video that cannot be downloaded or read, or one the model does not accept

`status: "ERROR"`

A request the model refuses, for example under its content policy (the safety checker)

`status: "ERROR"`

### Example error responses

A refused request returns `error`, a `message` that joins every problem found, and the same problems one by one in `violations`.

#### Missing `video_url` (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'video_url' is required",
  "violations": [
    "'video_url' is required"
  ]
}
```

#### A length setting (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'duration' must be one of:  (got 10); 'duration' is not accepted: this API has no length setting. Use 'max_tokens' to cap the answer.",
  "violations": [
    "'duration' must be one of:  (got 10)",
    "'duration' is not accepted: this API has no length setting. Use 'max_tokens' to cap the answer."
  ]
}
```

#### An image sent to the video endpoint (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'image_url' must be one of:  (got \"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg\"); 'image_url' is not accepted. This endpoint reads one video: use nemotron-3-5-super-vision for an image.",
  "violations": [
    "'image_url' must be one of:  (got \"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg\")",
    "'image_url' is not accepted. This endpoint reads one video: use nemotron-3-5-super-vision for an image."
  ]
}
```

#### `max_tokens` as a string (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'max_tokens' must be integer (got string)",
  "violations": [
    "'max_tokens' must be integer (got string)"
  ]
}
```

#### Instructions inside an `input` object (synchronous `400`)

```
{
  "error": "Invalid request parameters",
  "message": "'prompt' is required; 'input' must be one of:  (got {\"prompt\":\"Summarize what happens in this video in one sentence.\"}); 'input' is not accepted by this model. Send the fields at the top level of the JSON body.",
  "violations": [
    "'prompt' is required",
    "'input' must be one of:  (got {\"prompt\":\"Summarize what happens in this video in one sentence.\"})",
    "'input' is not accepted by this model. Send the fields at the top level of the JSON body."
  ]
}
```

## Retrieving Results

Poll the status endpoint with the `request_id` from the submit response until `status` is `COMPLETED` or `ERROR`, then read the answer in `output.output` (the same JSON is stored as a file at `output.media_url[0]`). Treat any status other than `QUEUED`, `PROCESSING` or `COMPLETED` as a failure.

### Endpoint

```
GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
```

### cURL example

```
curl 'https://gateway.pixazo.ai/v2/requests/status/nemotron-3-5-super-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'
```

### Completed response

```
{
  "request_id": "nemotron-3-5-super-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "nemotron-3-5-super-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.json"
    ],
    "media_type": "application/json",
    "output": "The answer.",
    "finish_reason": "stop",
    "usage": {
      "input_tokens": 52,
      "output_tokens": 61
    }
  },
  "created_at": "2026-10-09T10:04:54.387Z",
  "completed_at": "2026-10-09 10:06:21"
}
```

## Response Fields

Field

Type

Description

request\_id

string

Unique request identifier.

status

string

QUEUED, PROCESSING, COMPLETED or ERROR.

model\_id

string

The model that handled the request — `nemotron-3-5-super-video` for this endpoint.

output.output

string

The answer. It can be empty when `max_tokens` runs out during the reasoning.

output.reasoning

string

The model's reasoning, only with `reasoning_mode` `think`.

output.finish\_reason

string

`stop` (the answer is complete) or `length` (`max_tokens` was reached).

output.usage

object

`input_tokens` and `output_tokens`: what the request is billed for.

output.truncated

boolean

Present and `true` only when a text longer than 32 KB was shortened in this response; the file at `output.media_url[0]` holds it in full.

output.media\_url

array of strings

URL of a JSON file holding the same fields in full.

output.media\_type

string

`application/json`.

created\_at

string

Request creation timestamp.

completed\_at

string

Completion timestamp.

error

string

Error message when `status` is ERROR.

polling\_url

string

Status URL for this request (submit response only).

## Status Values & Flow

`QUEUED` → `PROCESSING` → `COMPLETED` (success) or `ERROR` (failure).

### Typical workflow

1.  Send the request to `POST https://gateway.pixazo.ai/nemotron-3-5-super-video/v1/video-to-text`.
2.  Save the `request_id` from the `202` response.
3.  Poll `GET /v2/requests/status/{request_id}` every 10 seconds or so, or use a Webhook instead.
4.  When `status` is `COMPLETED`, read the answer in `output.output` (the same JSON is stored as a file at `output.media_url[0]`).

## How Billing Is Measured

Billing is measured **per 1,000 tokens** of input plus output (your prompt, instructions and the video count as input; the answer and any reasoning count as output), rounded up to the next 1,000, with a minimum of one unit per request. A hold for the most the request can use is placed when you submit; when the answer is ready, the charge is set from the tokens actually used, shown in `output.usage`, and the rest of the hold is released. A failed request is not charged. The current rate is shown in the pricing panel on this page.
