Seedance 2.5 API: Kie or fal for production?
Both providers expose Seedance 2.5, but their schemas, model routing and billing differ. Choose the contract your application can operate safely, then isolate it behind your own provider adapter.
Use Kie when one unified Seedance schema and broad reference fields fit your product. Use fal when explicit text, image and reference endpoints plus a documented queue SDK fit your engineering workflow. Keep both behind a server-side adapter if uptime matters.

Site-made motion study · 6-second loop · not model output
Kie model
bytedance/seedance-2-5
Unified model identifier in the reviewed schema.
fal routes
3 explicit endpoints
Text, image and reference-to-video.
Task pattern
Asynchronous queue
Create, persist task ID, poll or receive webhook.
Secret rule
Server only
Never expose provider keys in browser code.
Access routes
Kie versus fal at a glance
| Area | Kie.ai | fal |
|---|---|---|
| Model routing | Unified Seedance 2.5 model and input object | Separate text-to-video, image-to-video and reference-to-video model IDs |
| Reviewed resolution fields | 480p, 720p and 1080p in the current form schema | 480p and 720p in current model documentation |
| Reference inputs | first/last frame plus image, video and audio URL arrays | Endpoint-specific image/reference schemas |
| Duration | Numeric duration field; provider page markets up to 30 seconds | auto or 4–30 seconds in the text route documentation |
| Task handling | Task status and callback support documented by provider | Queue SDK/REST with status updates; queue recommended for longer runs |
| Pricing signal | Check account pricing and calculator | Token formula; current documentation gives approximate per-second examples |
| Best fit | One normalized Seedance integration surface | Typed endpoint separation and SDK-driven queues |
Do not generalize provider marketing
Kie's editorial page advertises 4K, while its reviewed input form lists up to 1080p and fal documents 480p/720p. Your product should promise only the resolution actually accepted and returned by the route you call.
Minimal request
A current fal text-to-video request
fal documents the model ID below and recommends its queue API for longer generations. In B2B use, send a stable, non-sensitive end_user_id as required by the provider—never an email or raw personal identifier.
Server-side JavaScript
import { fal } from '@fal-ai/client';
fal.config({ credentials: process.env.FAL_KEY });
const result = await fal.subscribe(
'bytedance/seedance-2.5/text-to-video',
{
input: {
prompt: 'A ceramic artist lifts a cobalt bowl, slow dolly in.',
duration: '10',
resolution: '720p',
aspect_ratio: '16:9',
generate_audio: true,
end_user_id: internalHashedUserId
},
logs: true
}
);
const videoUrl = result.data.video.url;Unified input
Kie input fields to normalize
Kie's reviewed form exposes a unified object. Your application can map text, image and reference modes into that object while omitting unused arrays rather than sending empty or contradictory fields.
| Field | Use | Validation |
|---|---|---|
| prompt | Shot description and temporal direction | Required by your product even if provider behavior varies |
| first_frame_url / last_frame_url | Opening and optional ending composition | HTTPS URL, supported image type and provider size limit |
| reference_image_urls | Character, product or style references | Provider page currently shows up to 30 files |
| reference_video_urls | Motion or scene references | Provider page currently shows up to 10; also validate total duration |
| reference_audio_urls | Audio reference material | Provider page currently shows up to 10; validate type, size and rights |
| resolution / duration / aspect_ratio | Output and cost controls | Allowlist values server-side; never trust browser input |
| nsfw_checker | Provider safety pre-check | Keep enabled, then add your own policy and review controls |
Reliability
Production integration checklist
- 01
Create your own task first
Reserve credits and persist your internal task ID before calling a provider.
- 02
Store provider identity
Save the actual provider, model ID and provider task ID so polling never guesses the route.
- 03
Use idempotency boundaries
Do not fall back to a second provider after a network timeout; the first request may already be running.
- 04
Treat failure states explicitly
Refund only on a confirmed terminal failure, not on a slow queue or temporary polling error.
- 05
Copy durable outputs
Provider result URLs may expire. Move completed videos to controlled storage according to user and provider terms.
- 06
Observe cost and latency
Log resolution, duration, provider, retries, final status and cost without recording sensitive prompts unnecessarily.
Hard requirements
API security and rights checks
- Keep Kie and fal secrets in server-side environment variables; never prefix them as public client variables.
- Validate URLs, MIME types, file sizes, counts, duration and allowlisted output settings before spending credits.
- Rate-limit by account and internal end-user ID, not only by IP address.
- Require users to have rights to every image, video, audio and character reference they submit.
- Store the provider terms/version reviewed for your commercial-use decision.
- Build moderation and appeal handling in addition to provider safety filters.
Common questions
Is there an official public ByteDance Seedance 2.5 API?+
Official access and regional availability can differ from third-party access. This guide covers current Kie and fal provider routes; verify ByteDance or BytePlus documentation separately before describing a route as official.
Which Seedance 2.5 API is cheaper?+
There is no stable universal answer. Compare the exact resolution, aspect ratio, duration, audio setting, plan discount and failure policy on your account. Cost per accepted output is more useful than headline cost per call.
Should I automatically fail over from Kie to fal?+
Only before a task may have been accepted, such as a validated provider rejection. Do not resubmit after a timeout or unknown server error because both providers might generate and charge.
Can I call these APIs from the browser?+
Do not expose provider secrets in client code. Send a validated request to your own server, create an internal task, then call the provider from the server.
Sources reviewed
- Kie.ai — Seedance 2.5 API form and schema
- fal — Seedance 2.5 text-to-video API, schema and pricing
- fal — Seedance 2.5 image-to-video API
- fal — Seedance 2.5 reference-to-video API
Endpoints, schemas and prices are time-sensitive. Verify the linked official provider documentation and your account dashboard before committing production budgets. SeedanceAI.dev does not resell a public API on this page.
Test the product workflow first
Validate prompts, settings and result handling in the browser before building your own integration.
