0G Foundation 제공
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.
부터 $4
제공자가 보고하는 비디오 토큰 1M당
480p · 720p · 1080p · 4k
청구 등급 — 전송하는 크기가 아님
참조 동영상 사용 시: 480p $4.3 · 720p $4.3 · 1080p $4.7 · 4k $2.4 100만 토큰당
비동기 API — 비디오 생성은 비동기 흐름을 사용합니다: 작업을 제출하고, 완료될 때까지 폴링한 다음, 별도 엔드포인트에서 파일을 다운로드하세요. 생성에는 몇 분이 걸리므로 3~5초마다 폴링하세요. 아래 예시는 세 단계를 모두 보여줍니다.
# 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
| 입력 | 역할 | 유형 | 최대 | 시나리오 |
|---|---|---|---|---|
| 첫 프레임 | first_frame | 이미지 | 1 | 첫 / 마지막 프레임 |
| 마지막 프레임첫 프레임 필요 | last_frame | 이미지 | 1 | 첫 / 마지막 프레임 |
| 참조 이미지 | reference_image | 이미지 | 9 | 멀티모달 참조 |
| 참조 동영상 | reference_video | 동영상 | 3 | 멀티모달 참조 |
| 참조 오디오 | reference_audio | 오디오 | 3 | 멀티모달 참조 |
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.
| 필드 | 값 | 기본값 |
|---|---|---|
| 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 | 임의의 정수 | — |
Billed by the tokens the vendor reports; jobs with a reference video use the lower video-input rate.
제공자 라우팅
X-0G-Provider-* 요청 헤더를 사용하여 요청을 처리할 제공자를 제어합니다.
X-0G-Provider-Address는 제공자를 고정하고, X-0G-Provider-Identity는 해당 제공자의 업스트림 중 어느 것을 통해 라우팅할지 고정합니다. 두 값 모두 GET /v1/providers의 address 및 provider_identity 필드에서 가져옵니다. 이 둘을 함께 사용하면 특정 제공자의 특정 업스트림 하나를 지정합니다. 둘 다 보내지 않으면 라우터는 이전과 똑같이 가격과 상태에 따라 선택합니다.
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
}'