Developer guideReviewed August 22, 2026

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.

Brushed aluminum speaker on wet black stone under a warm edge light
Product lightVisual study

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.

01

Access routes

Kie versus fal at a glance

AreaKie.aifal
Model routingUnified Seedance 2.5 model and input objectSeparate text-to-video, image-to-video and reference-to-video model IDs
Reviewed resolution fields480p, 720p and 1080p in the current form schema480p and 720p in current model documentation
Reference inputsfirst/last frame plus image, video and audio URL arraysEndpoint-specific image/reference schemas
DurationNumeric duration field; provider page markets up to 30 secondsauto or 4–30 seconds in the text route documentation
Task handlingTask status and callback support documented by providerQueue SDK/REST with status updates; queue recommended for longer runs
Pricing signalCheck account pricing and calculatorToken formula; current documentation gives approximate per-second examples
Best fitOne normalized Seedance integration surfaceTyped 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.

02

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;
03

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.

FieldUseValidation
promptShot description and temporal directionRequired by your product even if provider behavior varies
first_frame_url / last_frame_urlOpening and optional ending compositionHTTPS URL, supported image type and provider size limit
reference_image_urlsCharacter, product or style referencesProvider page currently shows up to 30 files
reference_video_urlsMotion or scene referencesProvider page currently shows up to 10; also validate total duration
reference_audio_urlsAudio reference materialProvider page currently shows up to 10; validate type, size and rights
resolution / duration / aspect_ratioOutput and cost controlsAllowlist values server-side; never trust browser input
nsfw_checkerProvider safety pre-checkKeep enabled, then add your own policy and review controls
04

Reliability

Production integration checklist

  1. 01

    Create your own task first

    Reserve credits and persist your internal task ID before calling a provider.

  2. 02

    Store provider identity

    Save the actual provider, model ID and provider task ID so polling never guesses the route.

  3. 03

    Use idempotency boundaries

    Do not fall back to a second provider after a network timeout; the first request may already be running.

  4. 04

    Treat failure states explicitly

    Refund only on a confirmed terminal failure, not on a slow queue or temporary polling error.

  5. 05

    Copy durable outputs

    Provider result URLs may expire. Move completed videos to controlled storage according to user and provider terms.

  6. 06

    Observe cost and latency

    Log resolution, duration, provider, retries, final status and cost without recording sensitive prompts unnecessarily.

05

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.
FAQ

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

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.

Open the generator