On this page
- Short answer
- From API key to finished clip in five steps
- Which route fits your project
- Seedance API price per second on KreatorFlow
- What do you need before you start?
- How do you call the Seedance API from n8n?
- What goes in the JSON body?
- How does the workflow wait for the video?
- How do you save the MP4 in n8n?
- Can n8n turn an image into a Seedance video?
- How do you give an n8n AI Agent Seedance tools over MCP?
- How do you use the Seedance MCP server in Claude Code and Cursor?
- What does the MCP client config look like?
- Which tools does the developer MCP server have?
- What should a workflow do when a call fails?
- What does a clip cost from n8n or an agent?
- Frequently asked questions
Short answer
There are two ways to use the Seedance API without writing an app. In n8n, an HTTP Request node posts the prompt to https://kreatorflow.ai/v1/videos with your key as a Bearer token, a Wait node pauses until the job is done, and a second HTTP Request node downloads the MP4. For AI agents, the KreatorFlow MCP server at https://kreatorflow.ai/v1/mcp takes the same key and gives Claude Code, Cursor or an n8n AI Agent the tools generate_video and get_job. Either way a 5-second Seedance 2.0 clip at 720p costs $0.55 (as of 23 October 2026).
Get started
From API key to finished clip in five steps
- 1
Create an API key
Give it the videos:create and jobs:read scopes (models:read for get_balance) and top up from $20.
- 2
Store it as a Bearer credential
n8n: a Bearer Auth credential. MCP clients: an Authorization: Bearer header.
- 3
Start the job
n8n: POST /v1/videos from an HTTP Request node. MCP: the agent calls generate_video. Both return a queued job and its quote.
- 4
Wait for the result
n8n: a Wait node resumed by the webhook. MCP: the agent calls get_job every few seconds.
- 5
Fetch the MP4
n8n: GET /v1/jobs/{id}/output as a file. MCP: get_job returns providerOutputUrl when the job is completed.
Which route fits your project
Every route uses the same key, token prices and job records, so you can mix them on one account.
| Route | Best for | Endpoint |
|---|---|---|
| n8n HTTP Request nodes | Fixed pipelines: a sheet row or form in, a clip out | POST /v1/videos |
| n8n AI Agent + MCP Client Tool | A model writes or picks the prompt | https://kreatorflow.ai/v1/mcp |
| Claude Code, Cursor, other MCP clients | Clips from your editor or terminal | https://kreatorflow.ai/v1/mcp |
| Claude and ChatGPT apps | Plan credits, sign-in instead of a key | https://kreatorflow.ai/api/mcp |
Sources, as checked:
- n8n docs: HTTP Request node (checked 23 October 2026): docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest
- n8n docs: Wait node (checked 23 October 2026): docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait
- n8n docs: MCP Client Tool node (checked 23 October 2026): docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp
- n8n source: MCP transport options (checked 23 October 2026): github.com/n8n-io/n8n/blob/master/packages/%40n8n/nodes-langchain/nodes/mcp/shared/descriptions.ts
Seedance API price per second on KreatorFlow
Seedance 2.0 and 2.5 at 720p and above on the KreatorFlow API: price per second, tokens per 5-second clip, and clips per prepaid top-up.
| Model · resolution | Tokens | Per second | USD per second | $20 top-up · 400 tokens | $50 top-up · 1,000 tokens | $100 top-up · 2,000 tokens | $250 top-up · 5,000 tokens |
|---|---|---|---|---|---|---|---|
| Seedance 2.0 · 720p | 11/5s | 2.2/s | $0.110/s | 36 | 90 | 181 | 454 |
| Seedance 2.0 · 1080p | 24/5s | 4.8/s | $0.240/s | 16 | 41 | 83 | 208 |
| Seedance 2.0 · 4K | 58/5s | 11.6/s | $0.580/s | 6 | 17 | 34 | 86 |
| Seedance 2.5 · 720p | 21/5s | 4.2/s | $0.210/s | 19 | 47 | 95 | 238 |
| Seedance 2.5 · 1080p | 45/5s | 9/s | $0.450/s | 8 | 22 | 44 | 111 |
| Seedance 2.5 · 4K | 100/5s | 20/s | $1.000/s | 4 | 10 | 20 | 50 |
Seedance 2.0 and 2.5, 720p and above. Top-up columns: 5-second clips each top-up covers, without a video input. Billing is per second of video, so a 10-second clip uses twice the tokens.
What do you need before you start?
An API key and a token balance. Tokens are prepaid (1 token = $0.05, top-ups from $20), so a workflow that loops by mistake stops at your balance instead of running up a bill. Keep the key in n8n's credential store or an environment variable, never in a node field or a shared export. KreatorFlow is an official partner of BytePlus, a ByteDance company, and the video models are ByteDance's Seedance family.
How do you call the Seedance API from n8n?
Add an HTTP Request node after your trigger. Set authentication to Generic Credential Type, then Bearer Auth, so n8n sends your key on every call. Turn on Send Body, pick JSON and paste the body from the next section.
duration is in seconds (Seedance 2.0 takes 4, 5, 6, 8, 10, 12 and 15); GET /v1/models lists every model id with its limits. An Idempotency-Key built from the row id means a step that runs twice still makes one job and one charge. The answer is an immediate HTTP 202 with data.job (id and status) and quoted_token_cost.
n8n HTTP Request node settings
Node: HTTP Request ("Create Seedance job") Method: POST URL: https://kreatorflow.ai/v1/videos Authentication: Generic Credential Type > Bearer Auth (token: your kf_ key) Send Headers: on Idempotency-Key = {{ $json.id }}-seedance (any value unique to this row) Send Body: on, Body Content Type: JSON, Specify Body: Using JSON
What goes in the JSON body?
A vertical 720p clip with sound. $execution.resumeUrl is the resume address n8n creates for the Wait node, unique to each execution, so parallel runs never swap clips. webhook_url must be public HTTPS: a plain http URL, such as a local n8n on localhost, is ignored and the job runs without a callback, so local setups should poll instead.
JSON body (Specify Body: Using JSON)
{ "model": "kreator-video-seedance-2", "prompt": "{{ $json.prompt }}", "duration": 5, "aspect_ratio": "9:16", "resolution": "720p", "generate_audio": true, "webhook_url": "{{ $execution.resumeUrl }}" }
How does the workflow wait for the video?
Add a Wait node set to Resume On Webhook Call, HTTP Method POST, with Limit Wait Time on as a safety net. When the job ends (completed, failed, canceled or blocked), KreatorFlow posts an event of type job.<status> with the job in data.job. As with n8n's Webhook node, the posted event sits under body in the node's output. n8n does not check the X-KreatorFlow-Signature header, so treat the event as a notice and fetch the file with your own key.
Without a public HTTPS address, poll: a Wait node, a GET of the job and an IF node that loops until the status is final. GET /v1/jobs/{id} allows 120 requests per 60 seconds, far above a 15-second loop.
Polling loop (no HTTPS resume URL)
1. Wait Resume: After Time Interval, 15 seconds 2. HTTP Request GET https://kreatorflow.ai/v1/jobs/{{ $('Create Seedance job').item.json.data.job.id }} Authentication: the same Bearer Auth credential 3. IF {{ ["completed","failed","canceled","blocked"].includes($json.data.job.status) }} is true true -> continue to the download false -> back to node 1
How do you save the MP4 in n8n?
When the status is completed, GET the output with the same credential and the response format set to File; the Google Drive, S3 or YouTube nodes take the binary as-is. Send failed, canceled or blocked jobs down another branch with their errorCode. Tokens held for a failed job are given back.
Download node
Node: HTTP Request ("Download MP4") Method: GET URL: https://kreatorflow.ai/v1/jobs/{{ $('Create Seedance job').item.json.data.job.id }}/output Authentication: the same Bearer Auth credential Options > Response > Response Format: File (binary property: data)
Can n8n turn an image into a Seedance video?
Yes. Send the picture's public URL as first_frame_url and describe the motion. With aspect_ratio adaptive, the clip keeps the picture's shape. Images are not billed: the clip costs the same as text to video.
Image-to-video body
{ "model": "kreator-video-seedance-2", "prompt": "The camera slowly pushes in while steam rises from the cup.", "first_frame_url": "{{ $json.image_url }}", "duration": 5, "aspect_ratio": "adaptive", "resolution": "720p", "webhook_url": "{{ $execution.resumeUrl }}" }
How do you give an n8n AI Agent Seedance tools over MCP?
When a model should write the prompt or pick the format, attach n8n's MCP Client Tool to an AI Agent node and point it at the developer MCP server with Bearer Auth. Choose HTTP Streamable: the server does not offer the older Server Sent Events transport. Expose only list_models, generate_video, get_job and get_balance, so the agent can read costs, start a clip, check on it and see your balance.
n8n MCP Client Tool settings
Node: MCP Client Tool (attach it to an AI Agent node's Tool input) Endpoint: https://kreatorflow.ai/v1/mcp Server Transport: HTTP Streamable Authentication: Bearer Auth (token: your kf_ key) Tools to Include: Selected > list_models, generate_video, get_job, get_balance
How do you use the Seedance MCP server in Claude Code and Cursor?
https://kreatorflow.ai/v1/mcp is for clients that can send your key in a header. Claude Code adds it with one command; Cursor, VS Code and most other clients take the config in the next section. Claude's and ChatGPT's apps connect with an OAuth sign-in instead, so there use the connector at https://kreatorflow.ai/api/mcp, which spends plan credits rather than API tokens.
Claude Code
claude mcp add --transport http kreatorflow-api https://kreatorflow.ai/v1/mcp \ --header "Authorization: Bearer $KREATORFLOW_API_KEY"
What does the MCP client config look like?
Replace the placeholder with your key and keep the file out of version control. The server is stateless, so every request is a plain POST; a 401 invalid_api_key means the key is wrong and a 403 account_not_active means the developer account needs attention.
mcp.json (clients that accept headers)
{ "mcpServers": { "kreatorflow-api": { "url": "https://kreatorflow.ai/v1/mcp", "headers": { "Authorization": "Bearer kf_your_key_here" } } } }
Which tools does the developer MCP server have?
10 tools: list_models, generate_image, generate_video, edit_video, lip_sync, list_voices, generate_speech, generate_sound, get_job and get_balance. Each calls the same /v1 endpoint as the REST API, so an agent's clip is quoted and billed like one from your code. generate_video takes prompt, model, duration, aspect_ratio, resolution, first_frame_url, last_frame_url, reference_image_urls, generate_audio and idempotency_key.
The agent polls get_job about every 3 seconds until the status is completed, then reads providerOutputUrl. get_job needs the jobs:read scope; get_balance and list_voices need models:read.
What should a workflow do when a call fails?
Errors are JSON with success: false and a code, over REST and MCP alike. Branch on the code.
- invalid_api_key, scope_missing or insufficient_balance: stop and fix the key or top up; nothing was charged
- rate_limited (429): wait the seconds in Retry-After (POST /v1/videos: 20 per 60 seconds on the standard tier)
- Use n8n's Retry On Fail only with an Idempotency-Key, so a second attempt returns the first job
What does a clip cost from n8n or an agent?
The same as any API call, billed per second by model and resolution, with the exact quote returned before anything renders. A 5-second Seedance 2.0 clip at 720p is $0.55 as of 23 October 2026. Status checks and downloads are free. For agents, keep the balance small while testing and expose get_balance.
Checked 17 October 2026
The cheapest Seedance API at 720p and above
Seedance 2.0 and 2.5 at 720p, 1080p, 4K cost less per video than on any of the 9 Seedance APIs we track (list prices from each provider's own page, checked 17 October 2026).
Frequently asked questions
Is there a Seedance node for n8n?
You do not need one. The built-in HTTP Request node calls the API with a Bearer Auth credential, and the Wait node pauses until the job is done.
Is there a Seedance MCP server?
Yes: https://kreatorflow.ai/v1/mcp for developers (kf_ API key, API tokens) and https://kreatorflow.ai/api/mcp for Claude and ChatGPT users (sign-in, plan credits).
Which n8n transport should I choose?
HTTP Streamable. The KreatorFlow server does not offer Server Sent Events.
Why does my n8n workflow never resume?
Usually the resume URL is not public HTTPS. KreatorFlow ignores non-https webhook URLs, so a local n8n needs the polling loop.
Does the MCP server upload files?
No. Pass images as public URLs, or upload your files with the REST endpoint POST /v1/uploads first.



