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:
| Model | Output | Price | Seed | Create endpoint |
|---|---|---|---|---|
Seedance 2.0 Fast bytedance/seedance-2.0-fast | 8s · 1280x720 · audio | ¥250 / video | optional integer | /openrouter/videos/create |
Each model has its own create endpoint (shown above); the job status and download endpoints are shared by all models.
/openrouter/videos/.../create1. 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.
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"}{
"id": "AbCdEf123456",
"status": "pending",
"poll_path": "/openrouter/videos/jobs/AbCdEf123456"
}/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.
curl https://api.fastmetal.ai/openrouter/videos/jobs/AbCdEf123456 \
-H "Authorization: Bearer YOUR_API_KEY"{
"id": "AbCdEf123456",
"status": "completed",
"poll_path": "/openrouter/videos/jobs/AbCdEf123456",
"content_path": "/openrouter/videos/jobs/AbCdEf123456/content"
}/openrouter/videos/jobs/{id}/content3. Download the video
Once completed, download the MP4 from the content path. Download promptly — generated videos are retained upstream only for a limited time.
curl https://api.fastmetal.ai/openrouter/videos/jobs/AbCdEf123456/content?index=0 \
-H "Authorization: Bearer YOUR_API_KEY" \
-o video.mp4Billing
- 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.