Video Generation

Generate short videos from text prompts. Video generation is asynchronous: submit a job, poll its status, then download the finished MP4. Each model renders one fixed spec at a flat per-video price.

Models & pricing

Every model pins its settings server-side and bills a flat price per video, charged when your submission is accepted:

ModelOutputPriceSeedCreate endpoint
Seedance 2.0 Fast
bytedance/seedance-2.0-fast
8s · 1280x720 · audio¥250 / videooptional integer/openrouter/videos/create

Each model has its own create endpoint (shown above); the job status and download endpoints are shared by all models.

POST
/openrouter/videos/.../create

1. Submit a job

POST your prompt (and an optional integer seed, where the model supports one) to the model's create endpoint from the table above. A successful submission returns HTTP 202 with a job id. The example uses the default model's endpoint.

Request
curl https://api.fastmetal.ai/openrouter/videos/create \
  -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d {"prompt": "A paper crane folds itself on a wooden desk, soft morning light"}
Response (202)
{
  "id": "AbCdEf123456",
  "status": "pending",
  "poll_path": "/openrouter/videos/jobs/AbCdEf123456"
}
GET
/openrouter/videos/jobs/{id}

2. Poll for completion

Poll the job every 15–30 seconds. Generation typically takes one to three minutes. Statuses: pending, in_progress, completed, failed.

Request
curl https://api.fastmetal.ai/openrouter/videos/jobs/AbCdEf123456 \
  -H "Authorization: Bearer YOUR_API_KEY"
Response
{
  "id": "AbCdEf123456",
  "status": "completed",
  "poll_path": "/openrouter/videos/jobs/AbCdEf123456",
  "content_path": "/openrouter/videos/jobs/AbCdEf123456/content"
}
GET
/openrouter/videos/jobs/{id}/content

3. Download the video

Once completed, download the MP4 from the content path. Download promptly — generated videos are retained upstream only for a limited time.

Request
curl https://api.fastmetal.ai/openrouter/videos/jobs/AbCdEf123456/content?index=0 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o video.mp4

Billing

  • Each model's flat price is deducted from your key's balance once per accepted submission (HTTP 202).
  • Polling and downloading are free, as are rejected submissions (HTTP 4xx/5xx).
  • Do not retry after receiving a 202 — each accepted submission is billed. A received error response (4xx/5xx) was not billed and is safe to retry. If you never received any response (timeout, dropped connection), the outcome is unknown: the submission may already have been accepted and billed, so do not blindly retry.
  • If a job is accepted but later reaches status "failed", contact support with the job id for a service credit.

Limits

  • Each model's duration, resolution, and audio are fixed server-side; requests with other values are rejected with HTTP 400.
  • Prompts are limited to 2,000 characters.
  • Video generation is rate-limited platform-wide; HTTP 429 means retry shortly.