Get API

Seed Audio 1.0

All-in-one audio generation: dialogue, music, ambience, and sound effects in one pass, with voice cloning from up to 3 reference clips (under 30s each). The model field picks the variant: multilingual (default, 20 auto-detected languages, in-prompt timestamp control) or base (English/Chinese with the preset voice library).

bytedance/seed-audio-1.0/text-to-audio

Capabilities

Best for

  • Voiceover and narration
  • Sound design beds
  • Quick music sketches

Not for

  • Real-time streaming synthesis
  • Studio mastering
  • Forensic audio

Authentication

api key header

The Pika API uses API keys to authenticate requests. Send your key in the X-API-Key header. Your API key is a secret. Don't expose it in browsers or other client-side code. Instead, call the API from your server. The signed-in playground uses a portal session and never sends your API key.

header
X-API-Key: YOUR_API_KEY

Endpoint

asynchronous · poll for the result

POSThttps://api.dev.pika.art/v1/media/bytedance/seed-audio-1.0/text-to-audiogenerate endpoint
GEThttps://api.dev.pika.art/v1/media/jobs/{request_id}poll until completed
GEThttps://api.dev.pika.art/v1/media/jobs/{request_id}/contentget the result URL

Reference Uploads

media inputs

Media inputs accept any public URL. To use a local file, POST its content_type and size_bytes to /v1/media/uploads, PUT the file to the returned upload_url, then pass the url.

upload
# 1. Request a presigned upload URL. Send the file's content
# type and its exact size in bytes.
curl -X POST https://api.dev.pika.art/v1/media/uploads \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content_type": "image/png", "size_bytes": 12345}'
# The response returns two URLs:
# upload_url: a temporary URL to upload the file to. Expires in 5 minutes.
# url: the permanent Pika URL. Pass it to the model as the input.
# {
# "upload_url": "https://upload.r2.pika.art/...?X-Amz-Signature=...",
# "url": "https://cdn.pika.art/v2/media/uploads/org_abc/9f8e7d.png"
# }
# 2. Upload the file to upload_url, then pass url to the model.
curl -X PUT "<upload_url>" \
-H "Content-Type: image/png" \
--data-binary @input.png

Generate

POST /v1/media/bytedance/seed-audio-1.0/text-to-audio

Request

curl -X POST https://api.dev.pika.art/v1/media/bytedance/seed-audio-1.0/text-to-audio \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "No speech. A thunderstorm approaching: distant rumble building to a close crack, heavy rain, wind through trees, 20 seconds.",
"output_format": "mp3",
"speed": 1,
"volume": 1,
"pitch": 0,
"enable_subtitles": false
}'

Response

{
"id": "media_8f3a2c91-5b7d-4e0a-9c26-31d4f2a8e6b0",
"status": "queued"
}

Request body

modelenum
Model variant. Leave unset to infer: `seed-audio-1.0` when a preset `voice` is given, else `seed-audio-1.0-multilingual`. Set explicitly to override. `seed-audio-1.0-multilingual`: 20 languages auto-detected, voice via cloning references only. `seed-audio-1.0`: English/Chinese with the preset voice library (the `voice` field).
promptstringrequired
What to generate — dialogue, music, ambience, and sound effects in one pass (multilingual variant: any of 20 languages, auto-detected). Reference supplied clips as @Audio1…@Audio3. Output up to ~120 seconds.
voiceenum
Preset speaker (base variant only — requires model=seed-audio-1.0; the multilingual variant's speaker map differs). Counts toward the 3 voice/audio reference cap.
audio_urlsstring[]
Up to 3 voice-cloning reference clips, EACH UNDER 30 SECONDS; refer to them in the prompt as @Audio1…@Audio3. Cannot be combined with image_url.
image_urlstring
A single image reference (the generated voice/scene matches it). Cannot be combined with voice or audio_urls.
output_formatenum
Output Format
sample_rateenum
Sample Rate
speednumber0.5 – 2
Speed
volumenumber0.5 – 2
Volume
pitchinteger-12 – 12
Pitch
enable_subtitlesbooleandefault: false
Return per-sentence and per-word timestamps for the generated speech. When true, the completed job's audio output carries a `subtitle` asset — a JSON URL with {text, sentences[], words[]} (start_time/end_time in ms).

Accepted values

model
output_format
sample_rate

Input modes

Audio urlsaudio_urls

Use a public URL directly, or POST { content_type, size_bytes } to /v1/media/uploads, PUT the audio to the returned upload_url, then pass the url.

Image urlimage_url

Use a public URL directly, or POST { content_type, size_bytes } to /v1/media/uploads, PUT the image to the returned upload_url, then pass the url.

Returns

Returns a job object with status , not the final output. Store the id from the response and poll the job until it completes.

Poll status

GET /v1/media/jobs/{request_id}

Request

curl https://api.dev.pika.art/v1/media/jobs/{request_id} \
-H "X-API-Key: YOUR_API_KEY"

Response

{
"id": "media_8f3a2c91-5b7d-4e0a-9c26-31d4f2a8e6b0",
"status": "running"
}

Poll the job by id until it reaches a terminal state: completed or failed.

The job object

idstring
Unique identifier for the job.
statusenum
The status of the job.One of:
object
The generation output. Present once the job completes.
errorstring
If the job failed, the reason for the failure.

Get result

GET /v1/media/jobs/{request_id}/content

Request

curl https://api.dev.pika.art/v1/media/jobs/{request_id}/content \
-H "X-API-Key: YOUR_API_KEY"

Response

{
"url": "https://api.dev.pika.art/v1/files/audio_8f3a2c91.mp3"
}

Once the job completes, fetch a download URL for the generated media.

Returns

urlstring
Download URL for the generated file.

Errors

shared across calls

Errors use conventional HTTP status codes with a JSON body of the shape {"message": "..."}. The one exception is validation: a request body that fails validation returns 422 with a plain-text body.

StatusWhenBody
401 UnauthorizedThe API key is missing or invalid.{"message":"Invalid API key"}
403 ForbiddenThe key is not active, or the org balance cannot cover the request.{"message":"Insufficient org balance"}
404 Not FoundNo job with that id exists in your org.{"message":"media job not found"}
409 ConflictThe result was requested before the job completed, or an Idempotency-Key header was reused with a different body.{"message":"media job is not ready"}
422 Unprocessable EntityThe request body failed validation: an invalid enum value, a missing required field, a wrong type, or malformed JSON. Returned as plain text, not JSON. A schema-valid parameter combination that cannot be priced returns the same status with a JSON message.Unprocessable entity
429 Too Many RequestsOrg limit reached: requests per minute or day, or concurrent jobs. Check the Retry-After header.{"message":"rate limit exceeded: rpm"}
503 Service UnavailableThe model rail or a backend dependency is temporarily unavailable. Retry with backoff.{"message":"media dispatch unavailable"}

Pricing

only successful runs are charged

TierPrice
default$0.15 / minute

Per-model pricing

Transparent, usage-based rates for every ByteDance model.

Seedance 2.0

Video

Image to Video

4kstandard$4.20 / 1M tok
480pstandard$7.35 / 1M tok
720pstandard$7.35 / 1M tok
1080pstandard$8.085 / 1M tok

Reference to Video

4kstandard · with video input$2.52 / 1M tok
4kstandard · no video input$4.20 / 1M tok
480pstandard · with video input$4.515 / 1M tok
720pstandard · with video input$4.515 / 1M tok
1080pstandard · with video input$4.935 / 1M tok
480pstandard · no video input$7.35 / 1M tok
720pstandard · no video input$7.35 / 1M tok
1080pstandard · no video input$8.085 / 1M tok

Text to Video

4kstandard$4.20 / 1M tok
480pstandard$7.35 / 1M tok
720pstandard$7.35 / 1M tok
1080pstandard$8.085 / 1M tok

Seedance 2.0 Fast

Video

Image to Video

480p$5.88 / 1M tok
720p$5.88 / 1M tok

Reference to Video

480pwith video input$3.465 / 1M tok
720pwith video input$3.465 / 1M tok
480pno video input$5.88 / 1M tok
720pno video input$5.88 / 1M tok

Text to Video

480p$5.88 / 1M tok
720p$5.88 / 1M tok

Seedance 2.0 Mini

Video

Image to Video

480p$3.675 / 1M tok
720p$3.675 / 1M tok

Reference to Video

480pwith video input$2.205 / 1M tok
720pwith video input$2.205 / 1M tok
480pno video input$3.675 / 1M tok
720pno video input$3.675 / 1M tok

Text to Video

480p$3.675 / 1M tok
720p$3.675 / 1M tok

Seedream 5.0 Pro Image Editing

Image

Image to Image

Output1K$0.045 / image
Output2K$0.09 / image
Input images$0.003 / image

Text to Image

1K$0.045 / image
2K$0.09 / image

Seedream 5.0 Lite Image Editing

Image

Image to Image

$0.035 / image

Text to Image

$0.035 / image

Seedream 4.5

Image • Text to Image

$0.04 / image

Seedream 4.0 Image Editing

Image

Image to Image

1K$0.03 / image

Text to Image

1K$0.03 / image

Seed Audio 1.0Current

Audio • Text to Audio

$0.15 / min