API reference

Turbogen API

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.

Overview

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.

MethodPathAuthWhat it does
GET/api/modelsnonePublic model catalog as JSON: ids, aspects, options with prices, limits, and available (false while a model is temporarily down).
POST/api/jobskeyCreate a generation (multipart form). Charges credits up front.
GET/api/jobs?limit=60keyYour latest jobs, newest first (limit 1-200), plus your credit balance.
GET/api/jobs/{id}/filekeyDownload the result. Add ?download=1 for a Content-Disposition file name.
PATCH/api/jobs/{id}keyStar / unstar: JSON body {"starred": true}.
DELETE/api/jobs/{id}keyDelete 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"

Check the job and download the file:

bash
curl "https://turbogen.app/api/jobs?limit=10" -H "Authorization: Bearer $TURBOGEN_API_KEY"
curl -L "https://turbogen.app/api/jobs/<job_id>/file" -H "Authorization: Bearer $TURBOGEN_API_KEY" -o result.mp4

Python (requests)

python
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

  1. 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.
  2. 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.
  3. Download: when status is done, fetch url (/api/jobs/{id}/file) with the same key.
  4. 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

StatusMeaning
queuedAccepted and paid, waiting for a slot.
runningBeing generated.
doneFinished: url and mime are set.
failedDid 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):

json
{
  "job": {
    "id": "6f1d2c3e-8a4b-4c1e-9f7a-2b3c4d5e6f70",
    "model": "veo-3.1-fast",
    "model_name": "Veo 3.1 Fast",
    "kind": "video",
    "prompt": "Slow push-in on a lighthouse at dusk",
    "params": {
      "aspect": "16:9",
      "option": "4s",
      "addons": [],
      "refs": 0
    },
    "cost": 12,
    "free": false,
    "status": "queued",
    "starred": false,
    "note": null,
    "mime": null,
    "url": null,
    "expired": false,
    "expires_at": null,
    "created_at": "2026-11-07T10:15:02.120Z"
  },
  "credits": 988,
  "free_today": {
    "video": false,
    "image": false,
    "bonus": null,
    "bonus_left": 0
  }
}

Job fields

FieldMeaning
idJob id (UUID). Use it to find the job in the list, download or delete it.
modelThe model id you sent.
model_nameDisplay name of the model.
kindimage, video or audio.
promptThe prompt as stored (trimmed).
paramsWhat 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.
costCredits charged for this job.
freetrue when the job ran as a free generation (never for API-key calls).
statusqueued, running, done or failed.
starredYour favourite flag (PATCH /api/jobs/{id}).
noteHuman-readable note: the failure reason (credits refunded), or an extra that was skipped and refunded.
mimeMIME type of the result once done: image/png, image/jpeg, image/webp, video/mp4 or audio/mpeg.
urlRelative download path /api/jobs/{id}/file once status is done, else null.
expiredtrue when the job finished but its file was already deleted (after the retention period).
expires_atWhen the file will be deleted (ISO 8601, UTC), set once the job has finished.
created_atWhen 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.

FieldTypeRequiredAllowed valuesEffect
modelstringyesA model id from the categories below, e.g. veo-3.1-fast.Which model runs. Unknown id: 400.
aspectstringyesOne 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.
optionstringyes*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.
promptstringmodel-dependent1-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.
refsfile, repeatablemodel-dependentPNG / 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.
lyricsstringsong with vocals1-3000 characters. Only read when the aspect is a vocal option of a song model; ignored otherwise.The words that are sung.
remove_logobooleannotrue / false (default false).Image generation models only: removes a visible watermark, +2 credits. Ignored by video, audio and tools.
upscalestringnonone (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.

Seedance 2.0

Up to 15 sseedance-2.0-fast

Several shots in one clip with sound, from text, up to 4 pictures or 3 reference videos

Model idseedance-2.0-fast
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1 4:3 3:4 21:9
promptRequired, 1-4000 characters
refsOptional: 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)
ResolutionPart of the option: a bare duration (5s) is 720p; add the resolution for the others, e.g. 5s 1080p
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second clip, 720p88 cr ≈ $0.88
10s10-second clip, 720p176 cr ≈ $1.76
15s15-second clip, 720p264 cr ≈ $2.64
5s 1080p5-second clip, 1080p196 cr ≈ $1.96
10s 1080p10-second clip, 1080p392 cr ≈ $3.92
15s 1080p15-second clip, 1080p588 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 idseedance-2.5
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1 4:3 3:4 21:9
promptRequired, 1-4000 characters
refsOptional: 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)
ResolutionPart of the option: a bare duration (5s) is 480p; add the resolution for the others, e.g. 5s 720p
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second clip, 480p52 cr ≈ $0.52
10s10-second clip, 480p105 cr ≈ $1.05
15s15-second clip, 480p157 cr ≈ $1.57
5s 720p5-second clip, 720p118 cr ≈ $1.18
10s 720p10-second clip, 720p236 cr ≈ $2.36
15s 720p15-second clip, 720p354 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 idseedance-2.0-mini
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1 4:3 3:4 21:9
promptRequired, 1-4000 characters
refsOptional: up to 2 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ResolutionPart of the option: a bare duration (5s) is 480p; add the resolution for the others, e.g. 5s 720p
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second clip, 480p44 cr ≈ $0.44
10s10-second clip, 480p80 cr ≈ $0.80
15s15-second clip, 480p120 cr ≈ $1.20
5s 720p5-second clip, 720p62 cr ≈ $0.62
10s 720p10-second clip, 720p115 cr ≈ $1.15
15s 720p15-second clip, 720p172 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 idomni-flash
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16
promptRequired, 1-4000 characters
refsOptional: up to 3 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
10s10-second clip47 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 idveo-3.1
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16
promptRequired, 1-4000 characters
refsOptional: up to 3 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
8s8-second clip107 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 idveo-3.1-fast
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16
promptRequired, 1-4000 characters
refsOptional: up to 3 reference images (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
4s4-second clip12 cr ≈ $0.12
6s6-second clip18 cr ≈ $0.18
8s8-second clip24 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 idveo-3.1-lite
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
4s4-second clip6 cr ≈ $0.06
6s6-second clip9 cr ≈ $0.09
8s8-second clip13 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 idgrok-video-1.5
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
6s6-second clip10 cr ≈ $0.10
10s10-second clip16 cr ≈ $0.16
15s15-second clip25 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 idgrok-video
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
6s6-second clip10 cr ≈ $0.10
10s10-second clip16 cr ≈ $0.16
15s15-second clip25 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 idkling-3.0
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second clip48 cr ≈ $0.48
10s10-second clip88 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 idkling-4.0
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1 21:9
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second clip53 cr ≈ $0.53
10s10-second clip106 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 idkling-2.6
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second clip43 cr ≈ $0.43
10s10-second clip86 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 idkling-2.5-turbo
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second clip39 cr ≈ $0.39
10s10-second clip67 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 idkling-2.5
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16 1:1
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second clip18 cr ≈ $0.18
10s10-second clip36 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 idltx-2.5
OutputMP4 video (video/mp4)
aspect (Aspect ratio)16:9 9:16
promptRequired, 1-4000 characters
refsOptional: up to 1 reference image (PNG / JPEG / WEBP, up to 10 MB each); send one picture for image-to-video
ResolutionPart of the option: a bare duration (4s) is 720p; add the resolution for the others, e.g. 4s 1080p
ExtrasNot available (ignored)
Duration (option)MeaningPrice
4s4-second clip, 720p30 cr ≈ $0.30
5s5-second clip, 720p36 cr ≈ $0.36
4s 1080p4-second clip, 1080p35 cr ≈ $0.35
5s 1080p5-second clip, 1080p42 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.

Nano Banana Pro

Best facesnano-banana-pro

Our pick when a face must stay the same from shot to shot and words in the picture must read right

Model idnano-banana-pro
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)16:9 9:16 1:1 4:3 3:4
promptRequired, 1-4000 characters
refsOptional: up to 10 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Extrasremove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr
upscale is refused with option 2K, 4K (already upscaled)
Resolution (option)MeaningPrice
1K1K output6 cr ≈ $0.06
2K2K output (already upscaled: the upscale extra is refused)6 cr ≈ $0.06
4K4K output (already upscaled: the upscale extra is refused)9 cr ≈ $0.09

Text only

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=nano-banana-pro \
  -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"

With reference pictures

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=nano-banana-pro \
  -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" \
  -F [email protected] \
  -F [email protected]

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 idnano-banana-2
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)16:9 9:16 1:1 4:3 3:4
promptRequired, 1-4000 characters
refsOptional: up to 10 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Extrasremove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr
upscale is refused with option 2K, 4K (already upscaled)
Resolution (option)MeaningPrice
1K1K output3 cr ≈ $0.03
2K2K output (already upscaled: the upscale extra is refused)4 cr ≈ $0.04
4K4K 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"

With reference pictures

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" \
  -F [email protected] \
  -F [email protected]

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 idnano-banana-lite
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)16:9 9:16 1:1 4:3 3:4
promptRequired, 1-4000 characters
refsOptional: up to 10 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Extrasremove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr
Resolution (option)MeaningPrice
1K1K output1 cr ≈ $0.01

Text only

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=nano-banana-lite \
  -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"

With reference pictures

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=nano-banana-lite \
  -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" \
  -F [email protected] \
  -F [email protected]

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 idgpt-image-2
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)1:1 16:9 9:16 4:3 3:4 3:2 2:3
promptRequired, 1-4000 characters
refsOptional: up to 10 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Extrasremove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr
Quality (option)MeaningPrice
AutoQuality picked by the model2 cr ≈ $0.02

Text only

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=gpt-image-2 \
  -F aspect=16:9 \
  -F option=Auto \
  -F "prompt=A ceramic coffee cup on a wooden table, soft morning window light, shallow depth of field"

With reference pictures

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=gpt-image-2 \
  -F aspect=16:9 \
  -F option=Auto \
  -F "prompt=A ceramic coffee cup on a wooden table, soft morning window light, shallow depth of field" \
  -F [email protected] \
  -F [email protected]

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 idgrok-image
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)16:9 9:16 1:1
promptRequired, 1-4000 characters
refsOptional: up to 4 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Extrasremove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr
Resolution (option)MeaningPrice
1K1K output1 cr ≈ $0.01

Text only

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=grok-image \
  -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"

With reference pictures

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=grok-image \
  -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" \
  -F [email protected] \
  -F [email protected]

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 idseedream-4.5
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)16:9 9:16 1:1 4:3 3:4 3:2 2:3
promptRequired, 1-4000 characters
refsOptional: up to 8 reference images (PNG / JPEG / WEBP, up to 10 MB each)
Extrasremove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr
Resolution (option)MeaningPrice
1K1K output3 cr ≈ $0.03
2K2K output4 cr ≈ $0.04
3K3K output6 cr ≈ $0.06

Text only

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=seedream-4.5 \
  -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"

With reference pictures

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=seedream-4.5 \
  -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" \
  -F [email protected] \
  -F [email protected]

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 idmoss-image
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Aspect ratio)16:9 9:16 1:1 4:3 3:4
promptRequired, 1-4000 characters
refsNot accepted (text only)
Extrasremove_logo=true +2 cr · upscale=2x +2 cr · upscale=4x +4 cr
upscale is refused with option 2K, 4K (already upscaled)
Resolution (option)MeaningPrice
1.5MP1.5MP output2 cr ≈ $0.02
2K2K output (already upscaled: the upscale extra is refused)4 cr ≈ $0.04
4K4K 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.

Qwen Image Edit

Product photosqwen-image-edit

Change the background or one part of your photo, the product itself stays exactly as it is

Model idqwen-image-edit
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Format)Original
promptRequired, 1-4000 characters: the edit instruction
refs<b>Required</b>: 1-3 images (PNG / JPEG / WEBP, up to 10 MB each)
ExtrasNot available (ignored)
Mode (option)MeaningPrice
EditChange the uploaded picture as the prompt says2 cr ≈ $0.02
Keep product 1:1Product photo: the product from the upload stays exactly as it is, a new scene is built around it; 4K output. Needs a bought credit pack3 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 idvideo-upscale
OutputMP4 video (video/mp4)
aspect (Format)Original
promptOptional (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
optionMay 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.
ExtrasNot available (ignored)
Length (option)MeaningPrice
up to 5sInput clip up to 5 s. Picked automatically from the uploaded clip's length5 cr ≈ $0.05
up to 10sInput clip up to 10 s. Picked automatically from the uploaded clip's length9 cr ≈ $0.09

Example

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=video-upscale \
  -F aspect=Original \
  -F [email protected]

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 idupscale
OutputImage: PNG, JPEG or WEBP (see the job's mime field)
aspect (Format)Original
promptOptional (up to 4000 characters); can be left empty
refs<b>Required</b>: 1 image (PNG / JPEG / WEBP, up to 10 MB each)
ExtrasNot available (ignored)
Scale (option)MeaningPrice
2xEnlarge 2x2 cr ≈ $0.02
4xEnlarge 4x4 cr ≈ $0.04

Example

bash
curl https://turbogen.app/api/jobs \
  -H "Authorization: Bearer $TURBOGEN_API_KEY" \
  -F model=upscale \
  -F aspect=Original \
  -F option=2x \
  -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.

Audio: voice, music, songs, effects

Voiceover, background music, songs with lyrics and sound effects. Output: an MP3 file.

Voice

Text to speechvoice

Your text read aloud in 23 languages: narration, ads, explainers

Model idvoice
OutputMP3 audio (audio/mpeg)
aspect (Voice)Deep narrator Warm female Young male Calm female Bright promo Elder storyteller Soft whisper
promptRequired: the text to speak, up to the option's character count (300 chars: 300, 1000 chars: 1000, 3000 chars: 3000)
refsNot accepted (text only)
ExtrasNot available (ignored)
Length (option)MeaningPrice
300 charsText to speak up to 300 characters2 cr ≈ $0.02
1000 charsText to speak up to 1000 characters5 cr ≈ $0.05
3000 charsText to speak up to 3000 characters12 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 idmusic
OutputMP3 audio (audio/mpeg)
aspect (Mood)Cinematic Ambient Lo-fi Corporate Upbeat Epic
promptRequired, 1-4000 characters
refsNot accepted (text only)
ExtrasNot available (ignored)
Duration (option)MeaningPrice
30s30-second track3 cr ≈ $0.03
60s60-second track4 cr ≈ $0.04
120s120-second track6 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 idsong
OutputMP3 audio (audio/mpeg)
aspect (Vocal)Female vocal Male vocal Duet
promptRequired, 1-4000 characters
refsNot accepted (text only)
lyricsRequired, 1-3000 characters, when aspect is Female vocal, Male vocal, Duet
ExtrasNot available (ignored)
Duration (option)MeaningPrice
60s60-second track4 cr ≈ $0.04
120s120-second track6 cr ≈ $0.06
180s180-second track8 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 idsfx
OutputMP3 audio (audio/mpeg)
aspect (Format)Stereo
promptRequired, 1-4000 characters
refsNot accepted (text only)
ExtrasNot available (ignored)
Duration (option)MeaningPrice
5s5-second track2 cr ≈ $0.02
10s10-second track3 cr ≈ $0.03
20s20-second track4 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.

HTTPWhen
400The 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).
401No key, unknown or revoked key, account without API access, or a key used outside /api/jobs.
402Not enough credits (top up on the Pricing page). Also: the product-photo mode before any pack was bought.
403Session-only: cross-site browser request or account closed. Not returned for valid keys.
404Job not found (or not yours), or the file is requested before the job is done.
409DELETE on a job that is still queued or running.
410The job's file was deleted after 7 days.
413A file is too big: images up to 10 MB, videos up to 40 MB, the whole request up to 45 MB.
422A required form field (model, aspect) is missing or has the wrong type.
429More than 30 new jobs in a minute, or 3 jobs already queued / running (10 with the Max pack). Wait and retry.
503The 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

LimitValue
Prompt length4000 characters (voice: the option's character count)
Lyrics length3000 characters
Image file10 MB each, PNG / JPEG / WEBP
Video file40 MB each, MP4 / MOV / WEBM
Request size45 MB
Parallel jobs3 (10 with Max)
New jobs per minute30
File retention7 days after the job finished
Credit validity30 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

Claude Desktop / other clients

json
{
  "mcpServers": {
    "turbogen": {
      "command": "uvx",
      "args": [
        "turbogen-mcp"
      ],
      "env": {
        "TURBOGEN_API_KEY": "lk_..."
      }
    }
  }
}

Optional environment: TURBOGEN_OUTPUT_DIR (where files are saved). Needs uv (for uvx) and Python 3.10+.

Tools

ToolWhat it does
list_models(kind?)Model ids, aspect / voice values, options and credit prices; kind = image, video or audio.
generate_image(prompt, model, aspect, option?, reference_images?)Makes an image and saves it locally.
generate_video(prompt, model, aspect, option, image_path?)Makes a clip; image_path = image-to-video.
generate_audio(text_or_prompt, model, aspect?, option?, lyrics?)Voice, music, song (with lyrics) or sound effect.
upscale_image(path, scale)Upscales a local image 2x or 4x.
get_balance()Remaining credits.
job_status(job_id, download?)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.