Start creating

Leap API

Seedance 2.5 APIByteDance's model, through Leap

Lifelike motion with sound made in the same take, from text, a first frame with no real person in it, or up to 30 images, 10 videos and 10 sounds it follows. One Leap key and one balance run it and every other model, priced per call in dollars.

First $5 top-up, no card fee.

  • One key for every model
  • Every call quoted first
  • A failed call costs nothing
curl https://api.tryleap.ai/v1/generations \  -H "x-api-key: $LEAP_API_KEY" \  -H "content-type: application/json" \  -H "prefer: wait=60" \  -d '{    "model": "bytedance/seedance-2.5",    "input": {      "prompt": "A heron lands on a still lake at dawn",      "aspect_ratio": "16:9",      "duration": 5,      "resolution": "720p"    }  }' # Video often outlasts the wait and answers "queued" or "running".# Put its "id" in GENERATION_ID and read it again until it is done:# curl https://api.tryleap.ai/v1/generations/$GENERATION_ID -H "x-api-key: $LEAP_API_KEY"

Set LEAP_API_KEY and send it. With prefer: wait=60 the answer holds the result when the call finishes within a minute; a longer one is read again by its ID.

Model ID
bytedance/seedance-2.5
Price per call
$0.75 to $10.50
This call
A 5-second 720p 16:9 clip costs $1.55.
First top-up
A first top-up of $5, with no fee, covers three calls like it.

What it makes

Made with Seedance 2.5

Real Seedance 2.5 runs on Leap. Each one passed Leap's media quality check before it was shown.

  • Rooftop leap, made on Leap with Seedance 2.5

    “Shot 1: a drone shot sweeps over city rooftops at golden hour toward a free runner in a grey hoodie sprinting along a ledge. Shot 2: slow-motion side shot as she leaps a wide gap between two buildings, hair and hoodie flying, the sun flaring behind her. Shot 3: low angle as she lands, rolls and keeps running without breaking stride. Wind rushing, footsteps on gravel, a pounding electronic beat.”

  • The hamster boss, made on Leap with Seedance 2.5

    “Shot 1: a tiny golden hamster in a burgundy velvet smoking jacket sits at the head of a long, dark boardroom table, lit like a thriller, rain on the tall windows behind it. Shot 2: close-up as it narrows its eyes and says in a deep, slow, menacing voice: "You thought you could take my seeds?" Shot 3: wide shot as the boardroom lights flicker and a single sunflower seed spins on the polished table. Tense orchestral score, thunder outside.”

  • Grandma's diss track, made on Leap with Seedance 2.5

    “Shot 1: an 80-year-old grandmother in a pastel cardigan and pearls grips a vintage microphone on a small stage in a packed, smoky basement club, purple and red light. Shot 2: close-up as she raps fast and fierce over a hard boom-bap beat: "Your Wi-Fi's weak and so are your knees, I knit a better flow than you, please." Shot 3: the crowd erupts, arms in the air, as she drops the mic and adjusts her glasses, unbothered.”

  • Day 47, made on Leap with Seedance 2.5

    “A vertical selfie video. A tired office worker in a lanyard and a creased shirt holds the phone at arm's length and says, completely deadpan: "Day forty-seven of pretending I know what synergy means." Behind him the open-plan office is quietly on fire, flames on the desks and ceiling tiles, and his coworkers keep typing and sipping coffee as if nothing is happening. A sprinkler starts dripping on his head; he does not react. Office hum, crackling fire, a printer still printing.”

  • Skincare, the horror cut, made on Leap with Seedance 2.5

    “A glossy skincare advert shot like a horror film. Shot 1: a flickering fluorescent bathroom light, a woman in a white robe gently applies a pale cream to her cheeks in the mirror. Shot 2: she stops and looks down at the sink, but her reflection in the mirror keeps smiling and slowly keeps applying the cream. Shot 3: extreme close-up on the reflection's perfect glowing skin as it whispers: "Glow... forever." Low drone, dripping tap, a sudden silence.”

  • Samurai cats, made on Leap with Seedance 2.5

    “Cel-shaded anime. Shot 1: two cats in samurai armour face each other on a wooden bridge under falling cherry blossoms, wind blowing the petals. Shot 2: rapid cuts as their katanas clash in bright sparks, one cat spins in mid-air. Shot 3: they freeze back to back, then one cat's tiny topknot falls off and it hisses in outrage. Steel clashes, a shamisen sting, petals rustling.”

The answer

What comes back

A generation. Check status first: succeeded has the file in output, a signed link that works for 24 hours, so download what you keep. failed has error and failure_cause, and costs nothing. usage.cost_usd is what the call was charged.

200 OK, trimmed
{  "id": "gen_...",  "object": "generation",  "model": "bytedance/seedance-2.5",  "status": "succeeded",  "output": [    {      "type": "video",      "url": "https://api.tryleap.ai/files/..."    }  ],  "error": null,  "usage": {    "cost_usd": "1.55"  }}

Your own photo

Start from an image

Upload the image to POST /v1/files and pass the ID it returns in first_frame. Inputs take file IDs, not URLs. Files and uploads covers video and sound.

curl, with jq
# Upload the photo (PNG, JPEG or WebP, up to 4 MB) and keep its ID.FILE_ID=$(curl -s "https://api.tryleap.ai/v1/files?filename=photo.jpg" \  -H "x-api-key: $LEAP_API_KEY" \  -H "content-type: image/jpeg" \  --data-binary @photo.jpg | jq -r .id) # Then run the model with it.jq -n --arg file "$FILE_ID" '{  "model": "bytedance/seedance-2.5",  "input": {    "prompt": "A heron lands on a still lake at dawn",    "aspect_ratio": "16:9",    "duration": 5,    "resolution": "720p",    "first_frame": $file  }}' \  | curl https://api.tryleap.ai/v1/generations \    -H "x-api-key: $LEAP_API_KEY" \    -H "content-type: application/json" \    -H "prefer: wait=60" \    -d @- # Still "queued" or "running" after the wait? Read it again by its "id".

Inputs

What Seedance 2.5 takes

Only prompt is needed; everything else has a default. The same schema is public, with no key, at api.tryleap.ai/v1/public/models/bytedance/seedance-2.5.

Promptprompt
Text, up to 4,000 characters, required
First framefirst_frame
An imageAn image the video starts from. It is cropped to the video's shape.
Last framelast_frame
An image
Reference imagesimages
Up to 30 imagesUploaded images the clip follows, by ID, named @Image1, @Image2 in the prompt: a person, a product, a storyboard sheet. Up to 30. Not with a first or last frame.
Reference videosvideos
Up to 10 imagesUploaded MP4 or MOV clips whose motion, camera or look the video follows, or that it extends, by ID, named @Video1, @Video2 in the prompt. Not for edits: a prompt that replaces, adds or removes something in a clip is refused. Up to 10, each 2 to 30 seconds and 30 in all; their seconds are billed too.
Reference soundsaudio_files
Up to 10 imagesUploaded MP3 or WAV sounds the video follows, by ID, named @Audio1, @Audio2 in the prompt: a voice to speak in, a song to move to. Up to 10, each 2 to 30 seconds and 30 in all.
Aspect ratioaspect_ratio
16:9, 9:16, 1:1, 4:3, 3:4, 21:9. Default: 16:9
Durationduration
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 s. Default: 5 s
Resolutionresolution
480p, 720p, 1080p. Default: 720p
Soundaudio
On or off. Default: onGenerate dialogue, effects and music with the video.

Pricing

Price per call

A 5-second 720p 16:9 clip costs $1.55. A first top-up of $5, with no fee, covers three default calls. Prices are the provider's list price plus our margin (35% on most models, less on the dearest video), read from the catalog, and a quote gives the exact price of any input for free.

Seedance 2.5 and its family

A free quote
curl https://api.tryleap.ai/v1/quotes \  -H "x-api-key: $LEAP_API_KEY" \  -H "content-type: application/json" \  -d '{    "model": "bytedance/seedance-2.5",    "input": {      "prompt": "A heron lands on a still lake at dawn",      "aspect_ratio": "16:9",      "duration": 5,      "resolution": "720p"    }  }'

How it works

How the Seedance 2.5 API works

Every model takes the same request, a model ID and its input, and results, prices, failures and limits work the same way for all of them.

  • Wait for it, or hear when it ends

    prefer: wait=60 holds the request until the result is ready, for up to a minute. A longer run is read again by its ID, or a signed webhook tells your server when it ends.

    prefer: wait=60 / "webhook": "https://..."

    In the docs
  • Failed calls cost nothing

    The price is held when a call starts and charged only if it succeeds. A failed or refused call comes back with its failure_cause, and the hold is released.

    "status": "failed" / "failure_cause": "provider_refused"

    In the docs
  • The price before the call

    POST /v1/quotes takes the same body as a generation and returns its exact price, with the input checked, for free. Every result carries what it was charged.

    POST https://api.tryleap.ai/v1/quotes / "cost_usd"

    In the docs
  • Rate limits

    600 requests a minute per API key and 300 per IP address. A 429 carries Retry-After with the seconds to wait.

    RateLimit-Remaining / Retry-After

    In the docs
  • Safe retries

    Send an idempotency key and a retry after a dropped connection returns the same generation instead of starting a second one.

    idempotency-key: <uuid>

    In the docs
  • Batches

    POST /v1/batches starts up to 50 calls in one request, priced and held together, so either all start or none do.

    POST https://api.tryleap.ai/v1/batches

    In the docs

MCP

Or let your agent call it.

Leap's MCP server lets Claude Code, Claude, VS Code and other MCP clients run Seedance 2.5, read its inputs and fetch the result, on your balance. Signing in happens in the browser, so there is no key to paste.

Add Leap to Claude Code
claude mcp add --transport http leap https://app.tryleap.ai/api/mcp

Claude Code signs you in through the browser the first time it calls Leap.

Teach your coding agent the Leap API
curl -fsSL https://www.tryleap.ai/install.sh | sh

Installs the Leap skill for every coding agent it finds: which endpoint to call, how to read a model's inputs, when to wait and when to poll.

Questions

Seedance 2.5 API questions

How much does the Seedance 2.5 API cost?
A 5-second 720p 16:9 clip costs $1.55. By length, resolution and shape, a call costs $0.75 to $10.50. That is the provider's list price plus our margin, the same as in the studio. POST /v1/quotes prices any input for free before you run it.
Can I try the Seedance 2.5 API for free?
No. API keys run on paid credit, so a key's first call needs a top-up, and quotes are free. A 5-second 720p 16:9 clip costs $1.55. A first top-up of $5, with no fee, covers three default calls.
Do I pay for calls that fail?
No. The price is held when a call starts and charged only if it succeeds. A call that fails, or that the model's safety filter refuses, comes back with status "failed" and a failure_cause, and the hold is released.
Is this ByteDance's own API?
No. Leap is a separate service: it sends your call to ByteDance's model and gives you what it makes, so you need no ByteDance account. One Leap key runs Seedance 2.5 and every other model in the catalog, from one balance.
What are the rate limits?
600 requests a minute per API key and 300 a minute per IP address. A batch starts up to 50 calls in one request. A 429 says how long to wait in its Retry-After header.
Can an AI agent call it?
Yes. Leap's MCP server lets Claude Code, Claude, VS Code and other MCP clients find Seedance 2.5, read its inputs, run it and fetch the result on your balance. The client signs you in through the browser, so there is no key to paste.

Build with Seedance 2.5.

Keys run on paid credit, and the first top-up has no fee. The same key runs every model on Leap.

Get an API key