Generate video, images and audio from your own code with the same models and the same credit prices as
the studio. One endpoint creates a job, you poll it, then download the file.
The API is a small REST interface over HTTPS. Requests are multipart forms (or URL-encoded forms when no file is
sent), responses are JSON, results are files you download. Generation is asynchronous: POST /api/jobs answers
at once with a job in status queued; most images take seconds, video takes about 1-5 minutes.
Method
Path
Auth
What it does
GET
/api/models
none
Public model catalog as JSON: ids, aspects, options with prices, limits, and available (false while a model is temporarily down).
POST
/api/jobs
key
Create a generation (multipart form). Charges credits up front.
GET
/api/jobs?limit=60
key
Your latest jobs, newest first (limit 1-200), plus your credit balance.
GET
/api/jobs/{id}/file
key
Download the result. Add ?download=1 for a Content-Disposition file name.
PATCH
/api/jobs/{id}
key
Star / unstar: JSON body {"starred": true}.
DELETE
/api/jobs/{id}
key
Delete a finished job and its file.
Base URL
text
https://turbogen.app
There is no CORS: call the API from a server, script or app, not from browser code on another site
(that would also expose your key).
Authentication
Send your API key in the Authorization header on every /api/jobs call:
http
Authorization: Bearer lk_...
API access comes with the Boost, Turbo and Max packs: buy one once and
the API page in the studio unlocks. Keys start with lk_ and are shown only once when created.
Up to 5 active keys per account (20 with the Max pack). Revoke a key on the same
page; it stops working immediately.
Keys work only on /api/jobs and its sub-paths. GET /api/models needs no key. Any other
path answers 401.
Credits come from the same balance as the studio; jobs made with a key appear in your studio history too.
Daily free generations are web-only: every API job is charged.
Up to 3 jobs queued or running at a time (10 with the
Max pack) and up to 30 new jobs per minute.
Quick start
Text-to-video with curl. Put your key in an environment variable first
(export TURBOGEN_API_KEY=lk_...):
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=veo-3.1-fast \
-F aspect=16:9 \
-F option=4s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
import time
import requests
BASE = "https://turbogen.app"
H = {"Authorization": "Bearer lk_..."} # your API key
# 1. create the job (multipart form; add files=[("refs", open("frame.jpg", "rb"))] for image-to-video)
r = requests.post(f"{BASE}/api/jobs", headers=H, data={
"model": "veo-3.1-fast", "aspect": "16:9", "option": "4s",
"prompt": "Slow push-in on a lighthouse at dusk, waves breaking on the rocks below",
})
if not r.ok:
raise SystemExit(f"{r.status_code}: {r.json()['detail']}")
job = r.json()["job"]
print("job", job["id"], "cost", job["cost"], "credits left", r.json()["credits"])
# 2. poll the job list until our job is done or failed
while job["status"] in ("queued", "running"):
time.sleep(5)
jobs = requests.get(f"{BASE}/api/jobs", headers=H, params={"limit": 20}).json()["jobs"]
job = next(j for j in jobs if j["id"] == job["id"])
if job["status"] != "done":
raise SystemExit("failed: " + (job["note"] or "")) # credits are refunded automatically
# 3. download the result
f = requests.get(BASE + job["url"], headers=H)
f.raise_for_status()
ext = {"video/mp4": "mp4", "audio/mpeg": "mp3", "image/jpeg": "jpg", "image/webp": "webp"}.get(job["mime"], "png")
open(f"{job['id']}.{ext}", "wb").write(f.content)
JavaScript (fetch)
javascript
// Node 18+ (built-in fetch / FormData / Blob). Run it on your server: never put the key in browser code.
import { readFile, writeFile } from "node:fs/promises";
const BASE = "https://turbogen.app";
const H = { Authorization: `Bearer ${process.env.TURBOGEN_API_KEY}` };
// 1. create the job
const form = new FormData();
form.append("model", "nano-banana-2");
form.append("aspect", "1:1");
form.append("option", "1K");
form.append("prompt", "A ceramic coffee cup on a wooden table, soft morning window light");
// optional reference picture:
// form.append("refs", new Blob([await readFile("ref.jpg")]), "ref.jpg");
const res = await fetch(`${BASE}/api/jobs`, { method: "POST", headers: H, body: form });
if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).detail}`);
let { job, credits } = await res.json();
console.log("job", job.id, "cost", job.cost, "credits left", credits);
// 2. poll until done or failed
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 5000));
const list = await (await fetch(`${BASE}/api/jobs?limit=20`, { headers: H })).json();
job = list.jobs.find((j) => j.id === job.id);
}
if (job.status !== "done") throw new Error(`failed: ${job.note}`); // credits are refunded
// 3. download
const file = await fetch(BASE + job.url, { headers: H });
await writeFile(`${job.id}.png`, Buffer.from(await file.arrayBuffer()));
Jobs lifecycle
Create: POST /api/jobs. All checks run first (model, values, prompt, files, balance); on any
error nothing is charged. On success the price is taken from your balance and the job is queued.
Poll: GET /api/jobs?limit=20 every 3-10 seconds and find your job by id.
There is no single-job GET; the list is newest first, so a small limit is enough while you wait.
Download: when status is done, fetch url
(/api/jobs/{id}/file) with the same key.
Clean up (optional): DELETE /api/jobs/{id} removes the job and its file. Otherwise files are
deleted automatically 7 days after the job finished (expires_at); the job stays in the
list with expired: true and the file URL answers 410.
Statuses
Status
Meaning
queued
Accepted and paid, waiting for a slot.
running
Being generated.
done
Finished: url and mime are set.
failed
Did not finish. The full price is refunded automatically; note says why (for example the model's own safety filter refused the prompt).
A job can be done with a note when a paid extra (watermark removal, upscale)
could not be applied: the plain result is delivered and that extra is refunded.
What POST /api/jobs returns
HTTP 200 with the new job, your balance after the charge, and today's free-generation state (web only; API jobs
never use it):
Job id (UUID). Use it to find the job in the list, download or delete it.
model
The model id you sent.
model_name
Display name of the model.
kind
image, video or audio.
prompt
The prompt as stored (trimmed).
params
What was ordered: aspect, option, addons (remove_logo / upscale_2x / upscale_4x), refs (number of uploaded files), plus video_refs, duration (video upscale) and lyrics when used.
cost
Credits charged for this job.
free
true when the job ran as a free generation (never for API-key calls).
status
queued, running, done or failed.
starred
Your favourite flag (PATCH /api/jobs/{id}).
note
Human-readable note: the failure reason (credits refunded), or an extra that was skipped and refunded.
mime
MIME type of the result once done: image/png, image/jpeg, image/webp, video/mp4 or audio/mpeg.
url
Relative download path /api/jobs/{id}/file once status is done, else null.
expired
true when the job finished but its file was already deleted (after the retention period).
expires_at
When the file will be deleted (ISO 8601, UTC), set once the job has finished.
created_at
When the job was created (ISO 8601).
GET /api/jobs returns {"jobs": [...], "credits": N, "credit_expiry": {...}};
credit_expiry.next is the next lot of credits to expire. Credits are valid 30 days from purchase.
POST /api/jobs parameters
Content type multipart/form-data (curl -F, requests data= +
files=, fetch FormData). Values are case-sensitive and must match the model exactly.
Field
Type
Required
Allowed values
Effect
model
string
yes
A model id from the categories below, e.g. veo-3.1-fast.
Which model runs. Unknown id: 400.
aspect
string
yes
One of the model's aspect values (aspect ratio; for audio the voice, mood or vocal; for tools the single value Original or Stereo).
Frame shape / voice / style. Missing: 422, not allowed for the model: 400.
option
string
yes*
One of the model's option values (duration, resolution, quality, length, scale or mode). Values with a space must be quoted, e.g. "5s 1080p".
Sets the price. *May be omitted only for video-upscale, where the clip length picks it.
prompt
string
model-dependent
1-4000 characters (voice: up to the option's character count). Optional only for upscale tools.
What to make; for voice, the text that is spoken.
refs
file, repeatable
model-dependent
PNG / JPEG / WEBP, up to 10 MB each. Send the field once per file. Count limit per model. Models with reference videos (seedance-2.0-fast, seedance-2.5) also take MP4/MOV/WEBM files in the same field: up to 40 MB each, 15 s in total, and the job then costs 2x the option price.
Reference pictures, start frame, or the file a tool works on.
lyrics
string
song with vocals
1-3000 characters. Only read when the aspect is a vocal option of a song model; ignored otherwise.
The words that are sung.
remove_logo
boolean
no
true / false (default false).
Image generation models only: removes a visible watermark, +2 credits. Ignored by video, audio and tools.
upscale
string
no
none (default), 2x, 4x. Any other value counts as none.
Image generation models only: enlarges the result, +2 / +4 credits. Refused (400) on options that are already upscaled. Ignored by video, audio and tools.
Prices on this page are in credits; the $ figure is at the Spark pack rate
($0.01 per credit, less on bigger packs). Price of a job = the option price, x2 with reference videos, + extras. The extras
(remove_logo, upscale) work on: nano-banana-pro, nano-banana-2, nano-banana-lite, gpt-image-2, grok-image, seedream-4.5, moss-image.
Video generation
Text-to-video and image-to-video. Output: an MP4 clip.
Several shots in one clip with sound, from text, up to 4 pictures or 3 reference videos
Model id
seedance-2.0-fast
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:14:33:421:9
prompt
Required, 1-4000 characters
refs
Optional: up to 4 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video, plus up to 3 reference videos (MP4 / MOV / WEBM, 15 s in total; the job then costs 2x)
Resolution
Part of the option: a bare duration (5s) is 720p; add the resolution for the others, e.g. 5s 1080p
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second clip, 720p
88 cr ≈ $0.88
10s
10-second clip, 720p
176 cr ≈ $1.76
15s
15-second clip, 720p
264 cr ≈ $2.64
5s 1080p
5-second clip, 1080p
196 cr ≈ $1.96
10s 1080p
10-second clip, 1080p
392 cr ≈ $3.92
15s 1080p
15-second clip, 1080p
588 cr ≈ $5.88
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=seedance-2.0-fast \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=seedance-2.0-fast \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 88 credits).
When done, url serves the mp4 video file.
Seedance 2.5
Cinematicseedance-2.5
The most film-like Seedance: natural motion and camera work, guided by pictures or reference videos
Model id
seedance-2.5
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:14:33:421:9
prompt
Required, 1-4000 characters
refs
Optional: up to 4 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video, plus up to 3 reference videos (MP4 / MOV / WEBM, 15 s in total; the job then costs 2x)
Resolution
Part of the option: a bare duration (5s) is 480p; add the resolution for the others, e.g. 5s 720p
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second clip, 480p
52 cr ≈ $0.52
10s
10-second clip, 480p
105 cr ≈ $1.05
15s
15-second clip, 480p
157 cr ≈ $1.57
5s 720p
5-second clip, 720p
118 cr ≈ $1.18
10s 720p
10-second clip, 720p
236 cr ≈ $2.36
15s 720p
15-second clip, 720p
354 cr ≈ $3.54
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=seedance-2.5 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=seedance-2.5 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 52 credits).
When done, url serves the mp4 video file.
Seedance 2.0 Mini
Budget Seedanceseedance-2.0-mini
The cheapest Seedance: lively clips with sound from text, or from a first and last frame
Model id
seedance-2.0-mini
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:14:33:421:9
prompt
Required, 1-4000 characters
refs
Optional: up to 2 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Resolution
Part of the option: a bare duration (5s) is 480p; add the resolution for the others, e.g. 5s 720p
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second clip, 480p
44 cr ≈ $0.44
10s
10-second clip, 480p
80 cr ≈ $0.80
15s
15-second clip, 480p
120 cr ≈ $1.20
5s 720p
5-second clip, 720p
62 cr ≈ $0.62
10s 720p
10-second clip, 720p
115 cr ≈ $1.15
15s 720p
15-second clip, 720p
172 cr ≈ $1.72
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=seedance-2.0-mini \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=seedance-2.0-mini \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 44 credits).
When done, url serves the mp4 video file.
Gemini Omni Flash
10 somni-flash
10-second clips from text or up to 3 pictures of your characters and places
Model id
omni-flash
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:16
prompt
Required, 1-4000 characters
refs
Optional: up to 3 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
10s
10-second clip
47 cr ≈ $0.47
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=omni-flash \
-F aspect=16:9 \
-F option=10s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=omni-flash \
-F aspect=16:9 \
-F option=10s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 47 credits).
When done, url serves the mp4 video file.
Veo 3.1 Quality
Top qualityveo-3.1
For the clip that has to look its best: top Veo quality in 1080p, with sound
Model id
veo-3.1
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:16
prompt
Required, 1-4000 characters
refs
Optional: up to 3 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
8s
8-second clip
107 cr ≈ $1.07
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=veo-3.1 \
-F aspect=16:9 \
-F option=8s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=veo-3.1 \
-F aspect=16:9 \
-F option=8s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 107 credits).
When done, url serves the mp4 video file.
Veo 3.1 Fast
Audio · 1080pveo-3.1-fast
Our everyday video model: 1080p clips with their own sound, from text or a picture
Model id
veo-3.1-fast
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:16
prompt
Required, 1-4000 characters
refs
Optional: up to 3 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
4s
4-second clip
12 cr ≈ $0.12
6s
6-second clip
18 cr ≈ $0.18
8s
8-second clip
24 cr ≈ $0.24
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=veo-3.1-fast \
-F aspect=16:9 \
-F option=4s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=veo-3.1-fast \
-F aspect=16:9 \
-F option=4s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 12 credits).
When done, url serves the mp4 video file.
Veo 3.1 Lite
Budget videoveo-3.1-lite
The cheapest Veo clip with sound, from text or a picture: tests and social posts
Model id
veo-3.1-lite
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:16
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
4s
4-second clip
6 cr ≈ $0.06
6s
6-second clip
9 cr ≈ $0.09
8s
8-second clip
13 cr ≈ $0.13
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=veo-3.1-lite \
-F aspect=16:9 \
-F option=4s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=veo-3.1-lite \
-F aspect=16:9 \
-F option=4s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 6 credits).
When done, url serves the mp4 video file.
Grok Imagine Video 1.5
Newgrok-video-1.5
The newer Grok video: cleaner detail and calmer motion, 6-15 s with sound
Model id
grok-video-1.5
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:1
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
6s
6-second clip
10 cr ≈ $0.10
10s
10-second clip
16 cr ≈ $0.16
15s
15-second clip
25 cr ≈ $0.25
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=grok-video-1.5 \
-F aspect=16:9 \
-F option=6s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=grok-video-1.5 \
-F aspect=16:9 \
-F option=6s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 10 credits).
When done, url serves the mp4 video file.
Grok Imagine Video
Up to 15 sgrok-video
6-15 s clips with sound and plenty of movement, from text or a picture
Model id
grok-video
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:1
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
6s
6-second clip
10 cr ≈ $0.10
10s
10-second clip
16 cr ≈ $0.16
15s
15-second clip
25 cr ≈ $0.25
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=grok-video \
-F aspect=16:9 \
-F option=6s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=grok-video \
-F aspect=16:9 \
-F option=6s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 10 credits).
When done, url serves the mp4 video file.
Kling 3.0
Up to 15 skling-3.0
Longer takes up to 15 s with busy scenes, from text or a picture, at a fair price
Model id
kling-3.0
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:1
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second clip
48 cr ≈ $0.48
10s
10-second clip
88 cr ≈ $0.88
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-3.0 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-3.0 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 48 credits).
When done, url serves the mp4 video file.
Kling 4.0
Newest Klingkling-4.0
The latest Kling for the most detailed motion, from a picture, up to 30 s
Model id
kling-4.0
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:121:9
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second clip
53 cr ≈ $0.53
10s
10-second clip
106 cr ≈ $1.06
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-4.0 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-4.0 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 53 credits).
When done, url serves the mp4 video file.
Kling 2.6
1080pkling-2.6
Brings a picture to life in smooth 1080p with natural weight and motion
Model id
kling-2.6
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:1
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second clip
43 cr ≈ $0.43
10s
10-second clip
86 cr ≈ $0.86
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-2.6 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-2.6 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 43 credits).
When done, url serves the mp4 video file.
Kling 2.5 Turbo
1080pkling-2.5-turbo
Turns a picture into a quick 1080p clip with believable physics and camera moves
Model id
kling-2.5-turbo
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:1
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second clip
39 cr ≈ $0.39
10s
10-second clip
67 cr ≈ $0.67
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-2.5-turbo \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-2.5-turbo \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 39 credits).
When done, url serves the mp4 video file.
Kling 2.5
Budget 1080pkling-2.5
The lowest Kling price: a picture becomes a smooth 1080p clip, it just takes longer
Model id
kling-2.5
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:161:1
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second clip
18 cr ≈ $0.18
10s
10-second clip
36 cr ≈ $0.36
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-2.5 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=kling-2.5 \
-F aspect=16:9 \
-F option=5s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 18 credits).
When done, url serves the mp4 video file.
LTX-2.5
Audio · 720p / 1080pltx-2.5
Short clips with sound from text or a picture, in 720p or sharpened to 1080p
Model id
ltx-2.5
Output
MP4 video (video/mp4)
aspect (Aspect ratio)
16:99:16
prompt
Required, 1-4000 characters
refs
Optional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
Resolution
Part of the option: a bare duration (4s) is 720p; add the resolution for the others, e.g. 4s 1080p
Extras
Not available (ignored)
Duration (option)
Meaning
Price
4s
4-second clip, 720p
30 cr ≈ $0.30
5s
5-second clip, 720p
36 cr ≈ $0.36
4s 1080p
4-second clip, 1080p
35 cr ≈ $0.35
5s 1080p
5-second clip, 1080p
42 cr ≈ $0.42
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=ltx-2.5 \
-F aspect=16:9 \
-F option=4s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below"
Image-to-video
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=ltx-2.5 \
-F aspect=16:9 \
-F option=4s \
-F "prompt=Slow push-in on a lighthouse at dusk, waves breaking on the rocks below" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 30 credits).
When done, url serves the mp4 video file.
Image generation
Text-to-image, with optional reference pictures. Output: an image file.
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 6 credits before extras).
When done, url serves the image file.
Nano Banana 2
Fastnano-banana-2
Quick everyday pictures that follow the prompt closely, at a small price
Model id
nano-banana-2
Output
Image: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)
16:99:161:14:33:4
prompt
Required, 1-4000 characters
refs
Optional: up to 10 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Extras
remove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr upscale is refused with option 2K, 4K (already upscaled)
Resolution (option)
Meaning
Price
1K
1K output
3 cr ≈ $0.03
2K
2K output (already upscaled: the upscale extra is refused)
4 cr ≈ $0.04
4K
4K output (already upscaled: the upscale extra is refused)
6 cr ≈ $0.06
Text only
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=nano-banana-2 \
-F aspect=16:9 \
-F option=1K \
-F "prompt=A ceramic coffee cup on a wooden table, soft morning window light, shallow depth of field"
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 3 credits before extras).
When done, url serves the image file.
Nano Banana Lite
Cheapestnano-banana-lite
The lowest price per picture: drafts, mood boards and trying many ideas
Model id
nano-banana-lite
Output
Image: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)
16:99:161:14:33:4
prompt
Required, 1-4000 characters
refs
Optional: up to 10 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 1 credits before extras).
When done, url serves the image file.
GPT Image 2
gpt-image-2
Posters, labels and product shots where the lettering has to be right
Model id
gpt-image-2
Output
Image: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)
1:116:99:164:33:43:22:3
prompt
Required, 1-4000 characters
refs
Optional: up to 10 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 2 credits before extras).
When done, url serves the image file.
Grok Image
Photorealgrok-image
Bold photo-style pictures in seconds, cheap enough for lots of tries
Model id
grok-image
Output
Image: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)
16:99:161:1
prompt
Required, 1-4000 characters
refs
Optional: up to 4 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 1 credits before extras).
When done, url serves the image file.
Seedream 4.5
Up to 3Kseedream-4.5
Fine detail and clean layouts up to 3K: banners, covers, design mock-ups
Model id
seedream-4.5
Output
Image: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)
16:99:161:14:33:43:22:3
prompt
Required, 1-4000 characters
refs
Optional: up to 8 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 3 credits before extras).
When done, url serves the image file.
MOSS Image
Economymoss-image
Photo-style pictures, sharp faces and wide views at the lowest price, up to 4K
Model id
moss-image
Output
Image: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)
16:99:161:14:33:4
prompt
Required, 1-4000 characters
refs
Not accepted (text only)
Extras
remove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr upscale is refused with option 2K, 4K (already upscaled)
Resolution (option)
Meaning
Price
1.5MP
1.5MP output
2 cr ≈ $0.02
2K
2K output (already upscaled: the upscale extra is refused)
4 cr ≈ $0.04
4K
4K output (already upscaled: the upscale extra is refused)
6 cr ≈ $0.06
Example
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=moss-image \
-F aspect=16:9 \
-F option=1.5MP \
-F "prompt=A ceramic coffee cup on a wooden table, soft morning window light, shallow depth of field"
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 2 credits before extras).
When done, url serves the image file.
Editing & upscaling
Models that work on a file you upload: edit a picture, upscale an image or a clip.
Change the background or one part of your photo, the product itself stays exactly as it is
Model id
qwen-image-edit
Output
Image: PNG, JPEG or WEBP (see the job's mime field)
aspect (Format)
Original
prompt
Required, 1-4000 characters: the edit instruction
refs
<b>Required</b>: 1-3 images (PNG / JPEG / WEBP, up to 10 MB each)
Extras
Not available (ignored)
Mode (option)
Meaning
Price
Edit
Change the uploaded picture as the prompt says
2 cr ≈ $0.02
Keep product 1:1
Product photo: the product from the upload stays exactly as it is, a new scene is built around it; 4K output. Needs a bought credit pack
3 cr ≈ $0.03
Example
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=qwen-image-edit \
-F aspect=Original \
-F option=Edit \
-F "prompt=Replace the background with a clean white studio backdrop" \
-F [email protected]
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 2 credits).
When done, url serves the image file.
Video Upscale
Your clipvideo-upscale
Upload a clip up to 10 s and get it back sharper in 1080p, sound kept
Model id
video-upscale
Output
MP4 video (video/mp4)
aspect (Format)
Original
prompt
Optional (up to 4000 characters); can be left empty
refs
<b>Required</b>: 1 video (MP4 / MOV / WEBM, up to 40 MB each), clip up to 10 s long
option
May be omitted: the price tier follows the uploaded clip's real length. If you send one that is too short for the clip you get 400; a longer tier than needed is charged as the real one.
Extras
Not available (ignored)
Length (option)
Meaning
Price
up to 5s
Input clip up to 5 s. Picked automatically from the uploaded clip's length
5 cr ≈ $0.05
up to 10s
Input clip up to 10 s. Picked automatically from the uploaded clip's length
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 5 credits).
When done, url serves the mp4 video file.
Upscale
Your photoupscale
Upload any picture and get it back 2x or 4x larger and sharper
Model id
upscale
Output
Image: PNG, JPEG or WEBP (see the job's mime field)
aspect (Format)
Original
prompt
Optional (up to 4000 characters); can be left empty
refs
<b>Required</b>: 1 image (PNG / JPEG / WEBP, up to 10 MB each)
Your text read aloud in 23 languages: narration, ads, explainers
Model id
voice
Output
MP3 audio (audio/mpeg)
aspect (Voice)
Deep narratorWarm femaleYoung maleCalm femaleBright promoElder storytellerSoft whisper
prompt
Required: the text to speak, up to the option's character count (300 chars: 300, 1000 chars: 1000, 3000 chars: 3000)
refs
Not accepted (text only)
Extras
Not available (ignored)
Length (option)
Meaning
Price
300 chars
Text to speak up to 300 characters
2 cr ≈ $0.02
1000 chars
Text to speak up to 1000 characters
5 cr ≈ $0.05
3000 chars
Text to speak up to 3000 characters
12 cr ≈ $0.12
Example
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=voice \
-F "aspect=Deep narrator" \
-F "option=300 chars" \
-F "prompt=Welcome back to the channel. Today we look at the ship that sailed around the world twice."
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 2 credits).
When done, url serves the mp3 audio file.
Background music
No vocalsmusic
Background music without vocals for videos, ads and podcasts: pick a mood
Model id
music
Output
MP3 audio (audio/mpeg)
aspect (Mood)
CinematicAmbientLo-fiCorporateUpbeatEpic
prompt
Required, 1-4000 characters
refs
Not accepted (text only)
Extras
Not available (ignored)
Duration (option)
Meaning
Price
30s
30-second track
3 cr ≈ $0.03
60s
60-second track
4 cr ≈ $0.04
120s
120-second track
6 cr ≈ $0.06
Example
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=music \
-F aspect=Cinematic \
-F option=30s \
-F "prompt=Warm cinematic strings that slowly build, gentle piano on top"
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 3 credits).
When done, url serves the mp3 audio file.
Song
With vocalssong
A complete song sung with your lyrics, in any genre
Model id
song
Output
MP3 audio (audio/mpeg)
aspect (Vocal)
Female vocalMale vocalDuet
prompt
Required, 1-4000 characters
refs
Not accepted (text only)
lyrics
Required, 1-3000 characters, when aspect is Female vocal, Male vocal, Duet
Extras
Not available (ignored)
Duration (option)
Meaning
Price
60s
60-second track
4 cr ≈ $0.04
120s
120-second track
6 cr ≈ $0.06
180s
180-second track
8 cr ≈ $0.08
Example
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=song \
-F "aspect=Female vocal" \
-F option=60s \
-F "prompt=Upbeat indie pop about a summer road trip, bright guitars" \
-F "lyrics=[Verse]
Windows down and the radio on
[Chorus]
We drive until the summer's gone"
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 4 credits).
When done, url serves the mp3 audio file.
Sound effects
SFXsfx
Any sound from a description: footsteps, rain, crowds, explosions
Model id
sfx
Output
MP3 audio (audio/mpeg)
aspect (Format)
Stereo
prompt
Required, 1-4000 characters
refs
Not accepted (text only)
Extras
Not available (ignored)
Duration (option)
Meaning
Price
5s
5-second track
2 cr ≈ $0.02
10s
10-second track
3 cr ≈ $0.03
20s
20-second track
4 cr ≈ $0.04
Example
bash
curl https://turbogen.app/api/jobs \
-H "Authorization: Bearer $TURBOGEN_API_KEY" \
-F model=sfx \
-F aspect=Stereo \
-F option=5s \
-F "prompt=Heavy wooden door creaking open in a stone hallway"
Returns HTTP 200 with the job in status queued and cost =
the option price (the example above costs 2 credits).
When done, url serves the mp3 audio file.
Errors & limits
Errors are JSON: {"detail": "A message you can show to the user"} (for 422 detail is a
list of field errors). Any request that returns an error is not charged.
HTTP
When
400
The request is wrong: unknown model; aspect or option not offered by the model; prompt empty or too long; lyrics missing for a vocal song; too many reference files; reference videos longer than 15 s in total; a tool called without its file; a file that is not a valid image / video; a clip longer than video upscale takes; upscale on an option that is already upscaled; a prompt refused by our content rules (nothing is charged).
401
No key, unknown or revoked key, account without API access, or a key used outside /api/jobs.
402
Not enough credits (top up on the Pricing page). Also: the product-photo mode before any pack was bought.
403
Session-only: cross-site browser request or account closed. Not returned for valid keys.
404
Job not found (or not yours), or the file is requested before the job is done.
409
DELETE on a job that is still queued or running.
410
The job's file was deleted after 7 days.
413
A file is too big: images up to 10 MB, videos up to 40 MB, the whole request up to 45 MB.
422
A required form field (model, aspect) is missing or has the wrong type.
429
More than 30 new jobs in a minute, or 3 jobs already queued / running (10 with the Max pack). Wait and retry.
503
The model (or the watermark / upscale extras) is temporarily unavailable, or generation is paused. Nothing is charged; retry later or pick another model (GET /api/models shows available).
Limits at a glance
Limit
Value
Prompt length
4000 characters (voice: the option's character count)
Lyrics length
3000 characters
Image file
10 MB each, PNG / JPEG / WEBP
Video file
40 MB each, MP4 / MOV / WEBM
Request size
45 MB
Parallel jobs
3 (10 with Max)
New jobs per minute
30
File retention
7 days after the job finished
Credit validity
30 days from purchase
Failed jobs are refunded in full automatically. Generated files carry a machine-readable
"AI-generated" label (EU AI Act, art. 50).
MCP / Claude
The Turbogen MCP server lets Claude Code, Claude Desktop, Cursor and other MCP clients generate with
your key: ask for a picture or a clip in plain words and the file lands in ~/Downloads/turbogen.
It uses the same /api/jobs endpoint, prices and limits as above.
Claude Code
bash
claude mcp add turbogen --env TURBOGEN_API_KEY=lk_... -- uvx turbogen-mcp
Status of a job, e.g. one that took longer than the 10-minute wait.
Generation tools submit the job, poll every 3 s for up to 10 minutes, download the result and return
the local path, the cost and your remaining credits.