Start creating

Leap API

Seedream 4.5 APIByteDance's model, through Leap

2K or 4K images with crisp typography, and edits of up to 14 reference images. 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/seedream-4.5",    "input": {      "prompt": "A silk scarf in the wind on a ferry deck",      "aspect_ratio": "1:1"    }  }' # 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/seedream-4.5
Price per call
$0.054
This call
An image costs $0.054.
First top-up
A first top-up of $5, with no fee, covers 92 calls like it.

What it makes

Made with Seedream 4.5

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

  • The first frame of 5 da manhã, shot 1

    “Wide shot, 35mm, 5 a.m. in an empty steep street in Alfama, Lisbon: wet cobbles, sodium streetlights, a yellow vintage tram passing close to camera in motion blur; beyond it, under a streetlight, the dancer from the reference image in the same red-and-cream windbreaker, wide black trousers and white sneakers stands mid-move with one arm up. No readable text, no logos. Shot on 35mm, handheld feel, grain. Palette: tram yellow, track-jacket red, azulejo blue, dawn pink. Lisbon at the end of the night.”

  • Half Shade campaign, made on Leap

    “Outdoor brand campaign poster for an invented Australian sunscreen brand called HALF SHADE. Photograph: a 72-year-old Greek Australian man, short and barrel-chested, deeply tanned and wrinkled skin, white chest hair, a battered straw hat, a white singlet, a thick stripe of white zinc cream across his nose, stands proudly in his backyard vegetable garden in suburban Melbourne holding up a huge bunch of homegrown tomatoes on the vine, tall tomato plants on stakes, a rotary washing line and a corrugated tin fence behind him, harsh midday sun, shot from slightly low. Typography: the HALF SHADE wordmark in a heavy rounded sans serif in white at the bottom left; under it, small: "Made for people who stay out too long."; at the bottom right a white sunscreen tube with an orange cap printed with the same wordmark. Hard sun, crisp shadows, real skin. No other text.”

  • The first frame of 5 da manhã, shot 3

    “Vertical medium shot, 35mm: the dancer from the reference image, same red-and-cream windbreaker, mid-spin in front of a wall of blue-and-white azulejo tiles at night, jacket flaring open, eyes closed, sodium light from the side. No readable text, no logos. Shot on 35mm, handheld feel, grain. Palette: tram yellow, track-jacket red, azulejo blue, dawn pink. Lisbon at the end of the night.”

  • The first frame of KOLO, shot 1

    “Vertical candid selfie photo taken at arm's length, the photo itself filling the frame, slight wide-angle distortion, evening lamp light: a 19-year-old Filipino American nursing student, petite, a high ponytail, braces, navy scrubs, sits cross-legged on her dorm bed with fairy lights and stacked textbooks behind her, holding the terracotta espresso maker from the reference image up next to her face, an open cardboard shipping box in her lap, excited. No readable text, no logos. Real UGC look: this image is the photo itself, full frame, as a phone camera would capture it; never show a phone, a screen, a bezel or a status bar. Natural light, slight wide-angle distortion, unpolished.”

  • The first frame of KOLO, shot 3

    “Vertical candid selfie photo taken at arm's length, the photo itself filling the frame, misty dawn light: a 44-year-old Black dad with a big full beard flecked with grey, a knit beanie and a red flannel shirt sits in the open door of a tent beside a misty lake in north Georgia, kids' sleeping bags just visible behind him, holding the terracotta espresso maker from the reference image. No readable text, no logos. Real UGC look: this image is the photo itself, full frame, as a phone camera would capture it; never show a phone, a screen, a bezel or a status bar. Natural light, slight wide-angle distortion, unpolished.”

  • The first frame of KOLO, shot 4

    “Vertical candid photo, dawn: the terracotta espresso maker from the reference image standing on a mossy tree stump at the edge of a misty lake, a large hand with a silver ring reaching for its plunger, steam rising from the small clear cup in the cold air. No readable text, no logos. Real UGC look: this image is the photo itself, full frame, as a phone camera would capture it; never show a phone, a screen, a bezel or a status bar. Natural light, slight wide-angle distortion, unpolished.”

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/seedream-4.5",  "status": "succeeded",  "output": [    {      "type": "image",      "url": "https://api.tryleap.ai/files/..."    }  ],  "error": null,  "usage": {    "cost_usd": "0.054"  }}

Your own photo

Start from an image

Upload the image to POST /v1/files and pass the ID it returns in images. 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/seedream-4.5",  "input": {    "prompt": "A silk scarf in the wind on a ferry deck",    "aspect_ratio": "1:1",    "images": [      $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 Seedream 4.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/seedream-4.5.

Promptprompt
Text, up to 32,000 characters, required
Reference imagesimages
Up to 14 imagesUploaded files to edit or combine, by ID.
Aspect ratioaspect_ratio
1:1, 4:3, 3:4, 3:2, 2:3, 16:9, 9:16, 21:9. Default: 1:1
Imagesn
1 to 4. Default: 1
Resolutionsettings.resolution
2K, 4K. Default: 2K

Pricing

Price per call

An image costs $0.054. A first top-up of $5, with no fee, covers 92 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.

Seedream 4.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/seedream-4.5",    "input": {      "prompt": "A silk scarf in the wind on a ferry deck",      "aspect_ratio": "1:1"    }  }'

How it works

How the Seedream 4.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 Seedream 4.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

Seedream 4.5 API questions

How much does the Seedream 4.5 API cost?
An image costs $0.054. 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 Seedream 4.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. An image costs $0.054. A first top-up of $5, with no fee, covers 92 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 Seedream 4.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 Seedream 4.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 Seedream 4.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