Documentation

Video API

LLMPool exposes separate asynchronous video protocols for MiniMax and Doubao. Their paths and request bodies are different and must not be mixed.

Authentication and models

Use an account API key created in Board:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

The examples use https://<LLMPOOL_HOST> as the LLMPool service root. Video APIs do not use the OpenAI /openai/v1 path. Set model to a model ID shown on the Models page.

Video generation is asynchronous. After creation returns a task_id, poll the task every 5-10 seconds until it succeeds or fails.

Protocol capabilities

CapabilityMiniMaxDoubao
CreatePOST /minimax/v2/video_generationPOST /doubao/v1/video/generations
RetrieveGET /minimax/v2/video_generation/{task_id}GET /doubao/v1/video/generations/{task_id}
ListGET /minimax/v2/video_generationGET /doubao/v1/video/generations
Cancel queued taskSupportedNot currently supported

MiniMax create

curl -X POST "https://<LLMPOOL_HOST>/minimax/v2/video_generation" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: minimax-demo-001" \
  -d '{
    "model":"MiniMax-H3",
    "content":[{"type":"text","text":"A red sports car driving through a neon city"}],
    "resolution":"768P",
    "duration":5,
    "ratio":"16:9",
    "seed":42,
    "aigc_watermark":false
  }'

A successful request returns {"task_id":"video_xxx"}.

MiniMax currently accepts 768P, a duration of 4-15 seconds, and text-mode ratios 16:9, 4:3, or 1:1. Image mode accepts one image_url content item with role: "first_frame" and uses the adaptive ratio. The image can be a public HTTPS URL or an image data URL. callback_url is unsupported and aigc_watermark must be false.

MiniMax retrieve, list, and cancel

curl "https://<LLMPOOL_HOST>/minimax/v2/video_generation/video_xxx" \
  -H "Authorization: Bearer YOUR_API_KEY"

curl "https://<LLMPOOL_HOST>/minimax/v2/video_generation?limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

curl -X DELETE "https://<LLMPOOL_HOST>/minimax/v2/video_generation/video_xxx" \
  -H "Authorization: Bearer YOUR_API_KEY"

Each list accepts limit (1-100), the after cursor, and optional source=api|playground, and returns tasks for its own protocol only.

Only an upstream queued task can be cancelled. An in_progress task returns task_not_cancellable. For a terminal task, DELETE removes the task instead of cancelling generation.

Doubao create

curl -X POST "https://<LLMPOOL_HOST>/doubao/v1/video/generations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: doubao-demo-001" \
  -d '{
    "model":"DOUBAO_MODEL_FROM_MODELS_PAGE",
    "prompt":"A red sports car driving through a neon city",
    "images":[],
    "metadata":{
      "resolution":"720p",
      "ratio":"16:9",
      "duration":5,
      "generate_audio":false,
      "seed":42,
      "watermark":false
    }
  }'

A successful response contains task_id, model, status: "queued", and progress: 0.

Doubao requires a non-empty prompt of at most 7,000 characters. images accepts up to four image data URLs or credential-free HTTPS URLs. Duration is 1-60 seconds. The Playground offers 480p, 720p, and 1080p, with 16:9, 4:3, and 1:1 ratios. generate_audio must be false or omitted. Actual upstream capabilities may vary by model, so use the options shown in Models and Playground.

Doubao list and retrieve

List the current account's Doubao tasks:

curl "https://<LLMPOOL_HOST>/doubao/v1/video/generations?limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

The Doubao list also accepts limit, after, and optional source=api|playground, and returns Doubao tasks only. Doubao does not currently expose task cancellation.

Retrieve one task:

curl "https://<LLMPOOL_HOST>/doubao/v1/video/generations/video_xxx" \
  -H "Authorization: Bearer YOUR_API_KEY"

data.status is QUEUED, IN_PROGRESS, SUCCESS, or FAILURE. On success, the video appears in both data.result_url and data.data.content.video_url. Result URLs are short-lived; retrieve the task again to obtain a fresh URL.

Idempotency, billing, and errors

Send a unique Idempotency-Key with every create request. Retrying the same body with the same key returns the original task; reusing the key with different parameters returns a conflict.

The platform precharges the wallet using the model, duration, resolution, and configured price rules. An insufficient balance returns insufficient_credit without creating a task. Failed or cancelled tasks are refunded by asynchronous settlement, so usage records can appear later.

Common errors include invalid_parameter, unsupported_parameter, model_not_found, rate_limit_exceeded, insufficient_credit, and task_not_cancellable. See Error Responses and Troubleshooting.

GraphQL videoPriceQuote estimates price only; it does not create or retrieve video tasks.