API Reference¶
Use this compact reference for runtime routing, the shared Generator request envelope, media inputs, and the common Generator response. Task-specific rules and examples live with each task workflow.
Check
/openapi.jsonon the running Generator or Reasoner for routes supplied by the active runtime and selected image.
Runtime and Primary Endpoints¶
One selected profile starts one backend. A Generator profile does not serve
Reasoner completion APIs, and a Reasoner profile does not serve /v1/infer.
| Runtime | API | Guide |
|---|---|---|
| Generator | POST /v1/infer for T2I, T2V, I2V, and V2V |
Generation |
| Generator | POST /v1/infer with action_params |
Action |
| Generator | POST /v1/infer with transfer |
Transfer |
| Reasoner | POST /v1/chat/completions |
Reasoning |
| Reasoner | POST /v1/responses and optional state routes |
Reasoning |
| Reasoner (streaming enabled) | WebSocket /v1/streaming/ws and REST /v1/streaming/* |
Streaming Endpoints |
Reasoner features are in
Reasoning. Check the
active model_type and inference_endpoint in /v1/metadata. Other framework
endpoints are in
Inspect the Running Service.
Generator Endpoint¶
The Generator serves POST /v1/infer. It accepts one synchronous JSON object
and rejects unknown fields. Every request must set model_mode to identify the
task.
NIM_MODEL_VARIANT chooses the checkpoint at container start, and model_mode
chooses the task per request.
model_mode |
Task | input_reference |
|---|---|---|
text2image |
T2I | Forbidden |
text2video |
T2V | Forbidden |
image2video |
I2V | Required image |
video2video |
V2V | Required video |
video2video with transfer |
Transfer | Optional for precomputed controls; required for derived edge/blur |
forward_dynamics |
Forward dynamics | Required image |
policy |
Policy | Required image |
inverse_dynamics |
Inverse dynamics | Required video |
The task guides define the remaining required inputs and invalid combinations.
Common Generator Request Fields¶
Defaults are for video / text-to-image (T2I). Transfer and Action defaults are on their pages.
| Field | Type | Video / T2I Default | Applies To |
|---|---|---|---|
model_mode |
required enum | None | Selects one of the seven modes above |
prompt |
string or null; maximum 20,000 characters | None | Required and non-empty for T2I/T2V; task-dependent otherwise |
negative_prompt |
string or null; maximum 20,000 characters | Built-in / empty | Tasks and models that permit negative prompting |
input_reference |
encoded image/video string or null | None | I2V, V2V, Action, and derived Transfer; media type follows model_mode |
seed |
non-negative integer or null | Service-generated | Reproducibility |
guidance_scale |
finite number in [1.0,7.0] |
6.0 / 4.0 |
Sampling when not owned by a specialist model |
num_inference_steps |
integer in [1,100] |
35 / 50 |
Sampling when not owned by a specialist model |
flow_shift |
finite number greater than 0 | 10.0 / 3.0 |
Sampling when not owned by a specialist model |
resolution |
enum | 720 / 720_1_1 |
Generation and Transfer; refer to Resolution Keys |
num_frames |
integer | 189 / 1 |
Generation and Transfer; Action derives it and rejects the field |
fps |
finite number in [1.0,60.0] |
24.0 |
Video tasks; retained but not encoded for T2I |
condition_frame_indexes_vision |
integer array or null | [0, 1] |
V2V only |
condition_video_keep |
first, last, or null |
first |
V2V only |
action_params |
object | None | Action modes only; Action |
transfer |
object | None | video2video only; Transfer |
Empty or whitespace-only media strings are treated as absent.
Strict JSON Types¶
Integer and finite-number fields use strict JSON types. For example, "35",
35.0, and true are not accepted spellings of integer
num_inference_steps=35. Unknown nested fields are rejected too.
Media Inputs¶
Generator image and video inputs (input_reference and Transfer control
videos) can be supplied in the following ways:
- Raw base64
- A MIME-aware data URL such as
data:image/jpeg;base64,...ordata:video/mp4;base64,... - An HTTP(S) URL when
NIM_ALLOW_URL_INPUTis enabled (the default)
A data URL must use ;base64 and an image/* or video/* MIME type matching
the field. An HTTP(S) URL is fetched with a 30-second timeout and must respond
with a Content-Type of image/* or video/*. Generic
application/octet-stream is accepted for video only when the URL or
Content-Disposition names an .mp4 file. Prefer data URLs. Remote inputs
need container network access and can time out or change.
Input videos must use an MP4/MOV, Matroska/WebM, FLV, or AVI container with H.264, H.265/HEVC, MPEG-4 Part 2, VP8, VP9, or AV1. Other codecs return HTTP 422. Decode paths and image formats are in the Support Matrix.
Generation inputs have these size caps:
- Image-to-video (I2V) images: 20,000,000 encoded characters
- Video-to-video (V2V) decoded video: 75 MB
Transfer limits are in Transfer.
Generator Response¶
A successful Generator response contains an image, a video, or—on a compatible specialist policy profile—an action without visual media. T2I returns:
{
"b64_image": "<RAW_BASE64_JPEG>"
}
Video modes return:
{
"b64_video": "<RAW_BASE64_MP4>",
"action": null
}
Media fields are raw base64 (JPEG for T2I, VP9-in-MP4 for video), not data or file URLs. Inactive fields are omitted or null. Only general Policy and inverse dynamics return video plus an action object.
A specialist action-only policy can return the following response. The data
array is shortened to one row here. A complete response has 32 rows of eight
values, matching shape: [32, 8]:
{
"action": {
"data": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]],
"shape": [32, 8],
"dtype": "float32",
"raw_action_dim": 8,
"action_mode": "policy",
"domain_id": 8
}
}
In that case both b64_image and b64_video are absent or null. Clients must
branch on the fields actually present rather than assuming every non-T2I
request has b64_video. Refer to Edge-/Nano-DROID
Policy.
Errors and Live Schema¶
A request for the other runtime's primary route returns HTTP 404 with the common NIM error envelope naming the active runtime and its endpoint. Refer to Errors and Troubleshooting. Do not automate on exact error-message text.
Save the active runtime's OpenAPI document:
curl -fsS http://localhost:8000/openapi.json -o openapi.json
python3 -m json.tool openapi.json >/dev/null
Treat the running NIM's schema as authoritative for available routes and constraints in the deployed image.