0G Foundation tarafından
ByteDance Seedance 2.0 text-to-video and image-to-video, with first/last-frame control and multimodal references (images, video, audio). 4–15 second clips at 480p, 720p, 1080p or 4K, with optional generated audio. Billed on the tokens the vendor reports for each clip; jobs with a reference video use a lower rate.
itibaren $4
sağlayıcının bildirdiği 1M video token başına
480p · 720p · 1080p · 4k
faturalandırma kademeleri — gönderdiğiniz boyut değil
Referans video ile: 480p $4.3 · 720p $4.3 · 1080p $4.7 · 4k $2.4 1M token başına
Async API — Video üretimi asenkron bir akış kullanır: bir iş gönderin, tamamlanana kadar yoklayın ve ardından dosyayı ayrı bir uç noktadan indirin. Üretim dakikalar sürer, bu yüzden her 3-5 saniyede bir yoklayın. Aşağıdaki örnekler üç adımı da gösterir.
# 1. Submit the job. model, prompt and seconds are required. Each account may hold only a small number of
# unfinished jobs at once — 5 by default, set per deployment — and one over that returns 429
# video_jobs_in_flight_limit.
#
# The model's own options go under "metadata"; every field and the values it accepts are listed below.
# Media references go in metadata.content as {type, <type>: {url}, role}. Images and reference audio take a URL
# or a base64 data: URI (the whole request is capped at 24 MB); reference videos must be URLs. First/last frame
# and reference media cannot be mixed in one request.
curl "https://router-api.0g.ai/v1/videos" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{
"model": "bytedance/seedance-2.0",
"prompt": "A cat surfing a wave at sunset",
"seconds": 5,
"metadata": {
"resolution": "720p",
"ratio": "adaptive",
"generate_audio": true,
"return_last_frame": true,
"watermark": false
}
}'
# Response: {"id": "v0_426354818031858", "status": "queued", "provider_address": "0x..."}
# 2. Poll until status is "completed". Generation takes minutes — 3-5s is a sane interval. The poll answers
# 200 and reports the job's own status, so a failure arrives as 200 + {"status":"failed"}, NOT as an error
# code. The SUBMIT response echoes what you sent; the POLL response reports what was actually rendered — so
# reconcile against the poll. Which fields carry that answer depends on the upstream:
# usage.output_video_duration when the provider reported a duration, size/seconds on some providers and not
# others. Read what is present rather than assuming a particular field.
curl "https://router-api.0g.ai/v1/videos/<VIDEO_ID>" \
-H "Authorization: Bearer <YOUR_API_KEY>"
# 3. Download the finished file. This is where 409 / 424 / 429 live: 409 = not ready yet, 429 = too many
# concurrent downloads (both retryable), 424 = the job failed and has no output (terminal).
curl "https://router-api.0g.ai/v1/videos/<VIDEO_ID>/content" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-o video.mp4
| Girdi | rol | Tür | Maks | Senaryo |
|---|---|---|---|---|
| İlk kare | first_frame | Görsel | 1 | İlk / son kare |
| Son kareİlk kare gerektirir | last_frame | Görsel | 1 | İlk / son kare |
| Referans görsel | reference_image | Görsel | 9 | Çok modlu referans |
| Referans video | reference_video | Video | 3 | Çok modlu referans |
| Referans ses | reference_audio | Ses | 3 | Çok modlu referans |
Media references go in metadata.content as {type, <type>: {url}, role}. Images and reference audio take a URL or a base64 data: URI (the whole request is capped at 24 MB); reference videos must be URLs. First/last frame and reference media cannot be mixed in one request.
| Alan | Değerler | Varsayılan |
|---|---|---|
| metadata.resolution | 480p · 720p · 1080p · 4k | 720p |
| metadata.ratio | adaptive · 16:9 · 4:3 · 1:1 · 3:4 · 9:16 · 21:9 | adaptive |
| seconds | 4–15s | 5 |
| metadata.generate_audio | true · false | true |
| metadata.return_last_frame | true · false | true |
| metadata.watermark | true · false | false |
| metadata.seed | Herhangi bir tam sayı | — |
Billed by the tokens the vendor reports; jobs with a reference video use the lower video-input rate.
Sağlayıcı Yönlendirme
X-0G-Provider-* istek başlıklarını kullanarak isteğinizi hangi sağlayıcının işleyeceğini belirleyin.
X-0G-Provider-Address bir sağlayıcıyı sabitler; X-0G-Provider-Identity, sağlayıcının üst akışlarından hangisine yönlendirme yapılacağını sabitler. Her iki değer de GET /v1/providers uç noktasındaki address ve provider_identity alanlarından gelir. Birlikte, bir sağlayıcının belirli bir üst akışını adreslerler. İkisi de gönderilmezse yönlendirme katmanı, tıpkı önceki gibi fiyata ve sağlık durumuna göre seçer.
curl "https://router-api.0g.ai/v1/videos" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-H "X-0G-Provider-Address: <PROVIDER_ADDRESS>" \
-H "X-0G-Provider-Identity: <UPSTREAM>" \
-H "X-0G-Provider-Sort: latency" \
-H "X-0G-Provider-Allow-Fallbacks: true" \
-d '{
"model": "bytedance/seedance-2.0",
"prompt": "A cat surfing a wave at sunset",
"seconds": 6
}'