Skip to content

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.json on 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,... or data:video/mp4;base64,...
  • An HTTP(S) URL when NIM_ALLOW_URL_INPUT is 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.