Leap API
OmniHuman 1.5 APIByteDance's model, through Leap
The person in a photo speaks, sings or raps your recording, with the face, hands and body moving to it. Billed by the length of the recording. 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
# Videos and sounds go up in three steps: start an upload of the file's# exact size, PUT the file where the answer says, then complete it.upload() { UPLOAD=$(jq -n --arg type "$2" --arg name "$1" --argjson bytes "$(wc -c < "$1")" \ '{content_type: $type, bytes: $bytes, filename: $name}' \ | curl -s https://api.tryleap.ai/v1/uploads -H "x-api-key: $LEAP_API_KEY" \ -H "content-type: application/json" -d @-) echo "$UPLOAD" | jq -r '"url = \"\(.upload_url)\"", "request = \"\(.upload_method)\"", (.upload_headers | to_entries[] | "header = \"\(.key): \(.value)\"")' \ | curl -sf -K - -T "$1" > /dev/null curl -s -X POST "https://api.tryleap.ai/v1/uploads/$(echo "$UPLOAD" | jq -r .id)/complete" \ -H "x-api-key: $LEAP_API_KEY" -H "content-type: application/json" -d '{}' | jq -r .id} AUDIO_FILE_ID=$(upload voice.mp3 audio/mpeg) # Upload the image (PNG, JPEG or WebP, up to 4 MB) and keep its ID.CHARACTER_IMAGE_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 them.jq -n --arg audio_file "$AUDIO_FILE_ID" --arg character_image "$CHARACTER_IMAGE_ID" '{ "model": "bytedance/omnihuman-1.5", "input": { "prompt": "A heron lands on a still lake at dawn", "audio_file": $audio_file, "character_image": $character_image }}' \ | curl https://api.tryleap.ai/v1/generations \ -H "x-api-key: $LEAP_API_KEY" \ -H "content-type: application/json" \ -H "prefer: wait=60" \ -d @- # 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. It uploads your recording and image first, since inputs take file IDs, not URLs. 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/omnihuman-1.5
- Price per call
- $0.21 a second of your recording
- This call
- It costs $0.21 a second of your recording.
- First top-up
- A first top-up of $5, with no fee, pays for your first calls.
What it makes
Made with OmniHuman 1.5
Real OmniHuman 1.5 runs on Leap. Each one passed Leap's media quality check before it was shown.

A line cook who needs all of the limes
Inputs
What OmniHuman 1.5 takes
Only character_image and audio_file are needed; everything else has a default. The same schema is public, with no key, at api.tryleap.ai/v1/public/models/bytedance/omnihuman-1.5.
MCP
Or let your agent call it.
Leap's MCP server lets Claude Code, Claude, VS Code and other MCP clients run OmniHuman 1.5, read its inputs and fetch the result, on your balance. Signing in happens in the browser, so there is no key to paste.
claude mcp add --transport http leap https://app.tryleap.ai/api/mcpClaude Code signs you in through the browser the first time it calls Leap.
curl -fsSL https://www.tryleap.ai/install.sh | shInstalls 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
OmniHuman 1.5 API questions
- How much does the OmniHuman 1.5 API cost?
- It costs $0.21 a second of your recording. 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 OmniHuman 1.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 first top-up of $5, with no fee, pays for your first 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 OmniHuman 1.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 OmniHuman 1.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 OmniHuman 1.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