Focused server-side examples for building with seedance-2 and seedance-2-fast on PoYo.
Model Page | Docs | Get API Key | Pricing | Main Examples
Seedance 2 is useful for product clips, short social videos, reference-driven video, and motion ideas where optional generated audio can be part of the first draft.
Sample output: PoYo model page sample.
This is an official PoYo model page sample, not a file generated by this repo.
- Text-to-video with
seedance-2 - Faster generation path with
seedance-2-fast - cURL and Node.js backend examples
- Async task flow: submit, store
data.task_id, poll status, retrieve files - Webhook receiver notes for production callbacks
- Prompt examples and production integration notes
cp .env.example .env
# Edit .env and set POYO_API_KEYRun the Node.js example:
cd node
npm startKeep POYO_API_KEY on the server. Do not expose it in browser code, mobile apps, screenshots, or public logs.
Submit a video task:
POST https://api.poyo.ai/api/generate/submit
Authorization: Bearer <POYO_API_KEY>
Content-Type: application/jsonStore the returned data.task_id, then poll:
GET https://api.poyo.ai/api/generate/status/{task_id}
Authorization: Bearer <POYO_API_KEY>For production queues, pass callback_url during submit and use a webhook receiver for terminal task updates.
{
"model": "seedance-2",
"input": {
"prompt": "A short product teaser for a matte black electric kettle. Steam rises slowly, morning light enters from the window, camera pushes in, subtle kitchen ambience",
"resolution": "720p",
"duration": 8,
"aspect_ratio": "16:9",
"generate_audio": true
}
}Use seedance-2-fast when you want a quicker draft before spending more time on final video iterations.
{
"model": "seedance-2-fast",
"callback_url": "https://example.com/api/poyo/webhook",
"input": {
"prompt": "A quick product motion draft for a matte black electric kettle. Steam rises slowly, camera pushes in, subtle kitchen ambience",
"resolution": "720p",
"duration": 8,
"aspect_ratio": "16:9",
"generate_audio": true
}
}| Path | What it covers |
|---|---|
curl/generate.md |
Copy-paste submit and status requests. |
node/ |
Native Node.js submit and poll flow. |
webhooks/express-webhook/ |
Minimal Express receiver for PoYo callbacks. |
docs/prompt-examples.md |
Practical prompts for product workflows and creative tests. |
docs/production-notes.md |
Security and reliability notes before launch. |
{
"code": 200,
"data": {
"task_id": "task-unified-example",
"status": "not_started",
"created_time": "2026-05-23T08:00:00"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-example",
"status": "finished",
"progress": 100,
"files": [
{
"file_url": "https://storage.poyo.ai/generated/video.mp4",
"file_type": "video"
}
],
"error_message": null
}
}- Keep
POYO_API_KEYserver-side only. - Validate prompts and source media URLs before submit.
- Store
data.task_idbefore polling or waiting for webhooks. - Treat
finishedandfailedas terminal states. - Log task IDs and status transitions, not API keys or private prompts.
- Make webhook handlers idempotent.
- Download returned files before they expire.
- Check current model availability and cost on the PoYo model page.
make checkOn Windows:
./scripts/check.ps1MIT