AI Models
Seedance 2.0
AI video generation from text, images, video, or audio references. 4-15 seconds, flexible aspect ratios, optional audio.
POST
~$1.50 est./v1/media/queueOverview
High-quality video generation from text prompts, images, video references, or audio references. Async operation — submit a job, poll for completion.
| Property | Value |
|---|---|
| Model ID | bytedance/seedance-2-0 |
| Upstream Model | dreamina-seedance-2-0-260128 |
| Resolutions | 480p, 720p |
| Duration | 4–15 seconds (continuous) |
| Aspect Ratios | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 |
| Audio Generation | Optional (built-in) |
| Billing | Token-based (dynamic) |
| Pricing | ~$14.0/1M tokens |
Usage
All media models use the async job queue. Submit a job, then poll for the result.
Step 1: Submit Job
Text-to-Video
const res = await fetch('https://api.yepapi.com/v1/media/queue', {
method: 'POST',
headers: {
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'bytedance/seedance-2-0',
prompt: 'A golden retriever running through wildflowers at sunset, cinematic',
options: {
aspectRatio: '16:9',
duration: '8',
generateAudio: true,
},
}),
});
const { data } = await res.json();
// data.jobId — use this to poll for resultscurl -X POST https://api.yepapi.com/v1/media/queue \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "bytedance/seedance-2-0", "prompt": "A golden retriever running through wildflowers at sunset", "options": {"aspectRatio": "16:9", "duration": "8", "generateAudio": true}}'Image-to-Video
Pass a reference image via imageData with an imageRole to control how the image is used.
const res = await fetch('https://api.yepapi.com/v1/media/queue', {
method: 'POST',
headers: {
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'bytedance/seedance-2-0',
prompt: 'Animate this scene — clouds drifting, light changing',
options: {
aspectRatio: '16:9',
duration: '8',
imageRole: 'first_frame',
},
imageData: {
mimeType: 'image/jpeg',
base64: '...', // Base64-encoded image
},
}),
});Step 2: Poll for Result
const status = await fetch(`https://api.yepapi.com/v1/media/status/${data.jobId}`, {
headers: { 'x-api-key': 'YOUR_API_KEY' },
});
const { data: job } = await status.json();
// job.status — "pending" | "processing" | "completed" | "failed"
// job.result.video — { mimeType, base64 } when completedcurl https://api.yepapi.com/v1/media/status/JOB_ID \
-H "x-api-key: YOUR_API_KEY"Request Body
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
model | string | Yes | bytedance/seedance-2-0 or alias seedance | — |
prompt | string | Yes | Text description of the video to generate | — |
options.aspectRatio | string | No | 21:9, 16:9, 4:3, 1:1, 3:4, or 9:16 | 16:9 |
options.duration | string | No | 4 to 15 (seconds) | 5 |
options.generateAudio | boolean | No | Generate audio track for the video | false |
options.watermark | boolean | No | Add watermark to output | false |
options.imageRole | string | No | How to use the input image: first_frame, last_frame, or reference_image | first_frame |
options.referenceVideoUrl | string | No | URL of a reference video for style/motion guidance | — |
options.referenceAudioUrl | string | No | URL of a reference audio track | — |
imageData.mimeType | string | No | MIME type of input image | — |
imageData.base64 | string | No | Base64-encoded input image for image-to-video | — |
Pricing
Token-based billing. Cost varies by resolution and duration.
| Metric | Cost |
|---|---|
| Per 1M tokens | $14.00 |
| Typical 5s video (720p) | ~$1.50 |
Info
Latency: typically 30-90 seconds. Results retained for 1 hour.
Under the Hood
Powered by ByteDance's Seedance 2.0 via BytePlus ModelArk API. 100% margin on upstream costs.