---
type: AI Model
id: seed-audio
title: Seed Audio API
provider: BytePlus
description: "Seed Audio 1.0 generates speech, ambience and multi-speaker scenes from a text prompt, and can match a reference voice. Billed per minute of generated audio."
resource: https://www.pixazo.ai/models/seed-audio
docs_url: https://www.pixazo.ai/models/seed-audio
latest_version: v1.0
tags:
  - text-to-speech
  - audio-generation
  - byteplus
variants:
  - id: seed-audio-1-0
    name: Seed Audio 1.0
    version: 1.0
    capabilities:
      - Text to Audio
      - Audio to Audio (Voice Reference Audio to Audio)
      - Reference to Audio (Image + Voice Reference Audio to Audio)
timestamp: 2026-08-30T12:03:01.004Z
---

# Seed Audio API

> Provider: **BytePlus**
> Source: https://www.pixazo.ai/models/seed-audio

Seed Audio 1.0 generates speech, ambience and multi-speaker scenes from a text prompt, and can match a reference voice. Billed per minute of generated audio.

## Seed Audio 1.0

### Text to Audio

## BytePlus Seed Audio 1.0 Text to Audio API Documentation

Generate audio from text only. Omit `references` for text-only generation. Asynchronous: submit returns a `request_id`; poll the status endpoint until the request is `COMPLETED`. Output is capped at 120 seconds of audio per request.

```
POST https://gateway.pixazo.ai/seed-audio-1-0/v1/text-to-audio
```

## Authentication

All requests require an API key passed via header.

Header

Type

Required

Description

Ocp-Apim-Subscription-Key

string

Yes

Your API subscription key

## Text to Audio - BytePlus Seed Audio 1.0

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/seed-audio-1-0/v1/text-to-audio
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model": "seed-audio-1.0",
  "text_prompt": "A rainy late-night convenience store ambience with two characters speaking softly.",
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}
```

```
import requests

url = "https://gateway.pixazo.ai/seed-audio-1-0/v1/text-to-audio"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "model": "seed-audio-1.0",
  "text_prompt": "A rainy late-night convenience store ambience with two characters speaking softly.",
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
```

```
const res = await fetch("https://gateway.pixazo.ai/seed-audio-1-0/v1/text-to-audio", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "model": "seed-audio-1.0",
  "text_prompt": "A rainy late-night convenience store ambience with two characters speaking softly.",
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
})
});
console.log(await res.json());
```

```
curl -X POST 'https://gateway.pixazo.ai/seed-audio-1-0/v1/text-to-audio' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"model": "seed-audio-1.0", "text_prompt": "A rainy late-night convenience store ambience with two characters speaking softly.", "audio_config": {"format": "mp3", "sample_rate": 24000, "speech_rate": 0, "loudness_rate": 0, "pitch_rate": 0}, "watermark": {}}'
```

## Output

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=seed-audio-1-0&operation=seed-audio-1-0-text-to-audio)

## Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

Header

Required

Description

X-Webhook-URL

To enable

HTTPS URL to receive the Webhook callback.

X-Webhook-Mode

No

`terminal` (default, one callback on COMPLETED/ERROR) or `sync` (per-poll callbacks).

### Example: enable Webhook

```
curl -X POST 'https://gateway.pixazo.ai/seed-audio-1-0/v1/text-to-audio' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"model": "seed-audio-1.0", "text_prompt": "A rainy late-night convenience store ambience with two characters speaking softly.", "audio_config": {"format": "mp3", "sample_rate": 24000, "speech_rate": 0, "loudness_rate": 0, "pitch_rate": 0}, "watermark": {}}'
```

### Callback Payload (success)

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "seed-audio-1-0",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/byteplus-audio/1782800000000-019dxxxx.mp3",
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-06-30T10:00:00.000Z",
  "completed_at": "2026-06-30T10:00:18.000Z"
}
```

### Failure callback shape

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "seed-audio-1-0",
  "error": "Description of the failure"
}
```

#### Delivery semantics

-   **terminal** mode: one Webhook callback when the request is COMPLETED or ERROR.
-   **sync** mode: a Webhook callback on each status change.
-   Callbacks are idempotent on `request_id` — de-duplicate on it.
-   Respond `200` within a few seconds; the Webhook endpoint must be HTTPS.

## Request Parameters

Parameter

Required

Type

Default

Allowed values / range

Description

`model`

No

string

`seed-audio-1.0`

`seed-audio-1.0`

Model identifier.

`text_prompt`

Yes

string

—

≤ 2048 chars

Prompt / text describing the audio to synthesize.

`audio_config`

No

object

—

—

Output audio configuration (see fields below).

`audio_config.format`

No

string

`wav`

`wav`, `mp3`, `pcm`, `ogg_opus`

Output audio format.

`audio_config.sample_rate`

No

integer

`24000`

`8000`, `16000`, `24000`, `32000`, `44100`, `48000`

Sample rate (Hz).

`audio_config.speech_rate`

No

integer

`0`

\-50 to 100

Speed. 100 = 2.0×, -50 = 0.5×.

`audio_config.loudness_rate`

No

integer

`0`

\-50 to 100

Loudness. 100 = 2.0×, -50 = 0.5×.

`audio_config.pitch_rate`

No

integer

`0`

\-12 to 12

Pitch shift.

`watermark`

No

object

`{}`

—

Watermark configuration. An empty object is accepted.

## Example Request

```
{
  "model": "seed-audio-1.0",
  "text_prompt": "A rainy late-night convenience store ambience with two characters speaking softly.",
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}
```

## Example Response

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Request Headers

Header

Required

Description

Content-Type

Yes

`application/json`

Ocp-Apim-Subscription-Key

Yes

Your API subscription key.

X-Webhook-URL

No

Enable Webhook callbacks (see Webhook section).

## Response Handling

Status Code

Meaning

202

Accepted — request queued; returns `request_id` and `polling_url`.

400

Bad request — invalid/missing parameters (e.g. missing `text_prompt` or reference).

401

Unauthorized — missing or invalid subscription key.

402

Insufficient balance.

403

Forbidden.

429

Too many requests.

500

Internal server error.

## Error Responses

```
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
```

A failed generation is reported via the status endpoint (or Webhook) with `status: "ERROR"` and an `error` message.

## Retrieving Results

Poll the status endpoint with the `request_id` from the submit response until `status` is `COMPLETED` (or `FAILED`/`ERROR`).

```
curl 'https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'
```

### Completed response

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "seed-audio-1-0",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/byteplus-audio/1782800000000-019dxxxx.mp3",
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-06-30T10:00:00.000Z",
  "completed_at": "2026-06-30T10:00:18.000Z"
}
```

## Response Fields

Field

Type

Description

request\_id

string

Unique request identifier.

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.

model\_id

string

The model that handled the request.

output.media\_url

string

Permanent URL of the generated audio.

output.media\_type

string

Audio MIME type (e.g. `audio/mpeg`, `audio/wav`).

created\_at

string

Request creation timestamp.

completed\_at

string

Completion timestamp.

polling\_url

string

Status URL for this request.

error

string

Error message when `status` is FAILED/ERROR.

## Status Values & Flow

`QUEUED` → `PROCESSING` → `COMPLETED` (success) or `FAILED`/`ERROR` (failure).

### Pricing

Billed at **$0.15 per minute** of generated audio, rounded up to the whole minute, based on output length (capped at 120 seconds / $0.30 per request).

### Audio to Audio (Voice Reference Audio to Audio)

## BytePlus Seed Audio 1.0 Reference to Audio API Documentation

Generate audio conditioned on 1–3 audio references (voice cloning / speaker). Reference them in `text_prompt` via `@Audio1`–`@Audio3`. Asynchronous: submit returns a `request_id`; poll the status endpoint until the request is `COMPLETED`. Output is capped at 120 seconds of audio per request.

```
POST https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio
```

## Authentication

All requests require an API key passed via header.

Header

Type

Required

Description

Ocp-Apim-Subscription-Key

string

Yes

Your API subscription key

## Reference to Audio - BytePlus Seed Audio 1.0

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model": "seed-audio-1.0",
  "text_prompt": "Use @Audio1 as the narrator voice and read the following line naturally: Welcome to the store.",
  "references": [
    {
      "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/audio/speech-17s.mp3"
    }
  ],
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}
```

```
import requests

url = "https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "model": "seed-audio-1.0",
  "text_prompt": "Use @Audio1 as the narrator voice and read the following line naturally: Welcome to the store.",
  "references": [
    {
      "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/audio/speech-17s.mp3"
    }
  ],
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
```

```
const res = await fetch("https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "model": "seed-audio-1.0",
  "text_prompt": "Use @Audio1 as the narrator voice and read the following line naturally: Welcome to the store.",
  "references": [
    {
      "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/audio/speech-17s.mp3"
    }
  ],
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
})
});
console.log(await res.json());
```

```
curl -X POST 'https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"model": "seed-audio-1.0", "text_prompt": "Use @Audio1 as the narrator voice and read the following line naturally: Welcome to the store.", "references": [{"audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/audio/speech-17s.mp3"}], "audio_config": {"format": "mp3", "sample_rate": 24000, "speech_rate": 0, "loudness_rate": 0, "pitch_rate": 0}, "watermark": {}}'
```

## Output

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=seed-audio-1-0&operation=seed-audio-1-0-reference-to-audio)

## Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

Header

Required

Description

X-Webhook-URL

To enable

HTTPS URL to receive the Webhook callback.

X-Webhook-Mode

No

`terminal` (default, one callback on COMPLETED/ERROR) or `sync` (per-poll callbacks).

### Example: enable Webhook

```
curl -X POST 'https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"model": "seed-audio-1.0", "text_prompt": "Use @Audio1 as the narrator voice and read the following line naturally: Welcome to the store.", "references": [{"audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/audio/speech-17s.mp3"}], "audio_config": {"format": "mp3", "sample_rate": 24000, "speech_rate": 0, "loudness_rate": 0, "pitch_rate": 0}, "watermark": {}}'
```

### Callback Payload (success)

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "seed-audio-1-0",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/byteplus-audio/1782800000000-019dxxxx.mp3",
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-06-30T10:00:00.000Z",
  "completed_at": "2026-06-30T10:00:18.000Z"
}
```

### Failure callback shape

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "seed-audio-1-0",
  "error": "Description of the failure"
}
```

#### Delivery semantics

-   **terminal** mode: one Webhook callback when the request is COMPLETED or ERROR.
-   **sync** mode: a Webhook callback on each status change.
-   Callbacks are idempotent on `request_id` — de-duplicate on it.
-   Respond `200` within a few seconds; the Webhook endpoint must be HTTPS.

## Request Parameters

Parameter

Required

Type

Default

Allowed values / range

Description

`model`

No

string

`seed-audio-1.0`

`seed-audio-1.0`

Model identifier.

`text_prompt`

Yes

string

—

≤ 2048 chars

Text to synthesize. Reference the audio items by order using `@Audio1`, `@Audio2`, `@Audio3`.

`references`

Yes

array

—

1–3 items

Audio references. Each item must contain exactly ONE of `speaker`, `audio_data`, or `audio_url`. Each reference audio ≤ 30s and ≤ 10 MB; formats wav, mp3, pcm, ogg\_opus. You may also pass the flat fields `audio_url` / `audio_urls` / `speaker`.

`references[].speaker`

—

string

—

—

Voice ID (a supported Doubao TTS voice or a voice-clone ID).

`references[].audio_url`

—

string

—

—

Public URL of a reference audio file.

`references[].audio_data`

—

string

—

—

Base64-encoded reference audio.

`audio_config`

No

object

—

—

Output audio configuration (see fields below).

`audio_config.format`

No

string

`wav`

`wav`, `mp3`, `pcm`, `ogg_opus`

Output audio format.

`audio_config.sample_rate`

No

integer

`24000`

`8000`, `16000`, `24000`, `32000`, `44100`, `48000`

Sample rate (Hz).

`audio_config.speech_rate`

No

integer

`0`

\-50 to 100

Speed. 100 = 2.0×, -50 = 0.5×.

`audio_config.loudness_rate`

No

integer

`0`

\-50 to 100

Loudness. 100 = 2.0×, -50 = 0.5×.

`audio_config.pitch_rate`

No

integer

`0`

\-12 to 12

Pitch shift.

`watermark`

No

object

`{}`

—

Watermark configuration. An empty object is accepted.

## Example Request

```
{
  "model": "seed-audio-1.0",
  "text_prompt": "Use @Audio1 as the narrator voice and read the following line naturally: Welcome to the store.",
  "references": [
    {
      "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/audio/speech-17s.mp3"
    }
  ],
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}
```

## Example Response

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Request Headers

Header

Required

Description

Content-Type

Yes

`application/json`

Ocp-Apim-Subscription-Key

Yes

Your API subscription key.

X-Webhook-URL

No

Enable Webhook callbacks (see Webhook section).

## Response Handling

Status Code

Meaning

202

Accepted — request queued; returns `request_id` and `polling_url`.

400

Bad request — invalid/missing parameters (e.g. missing `text_prompt` or reference).

401

Unauthorized — missing or invalid subscription key.

402

Insufficient balance.

403

Forbidden.

429

Too many requests.

500

Internal server error.

## Error Responses

```
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
```

A failed generation is reported via the status endpoint (or Webhook) with `status: "ERROR"` and an `error` message.

## Retrieving Results

Poll the status endpoint with the `request_id` from the submit response until `status` is `COMPLETED` (or `FAILED`/`ERROR`).

```
curl 'https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'
```

### Completed response

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "seed-audio-1-0",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/byteplus-audio/1782800000000-019dxxxx.mp3",
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-06-30T10:00:00.000Z",
  "completed_at": "2026-06-30T10:00:18.000Z"
}
```

## Response Fields

Field

Type

Description

request\_id

string

Unique request identifier.

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.

model\_id

string

The model that handled the request.

output.media\_url

string

Permanent URL of the generated audio.

output.media\_type

string

Audio MIME type (e.g. `audio/mpeg`, `audio/wav`).

created\_at

string

Request creation timestamp.

completed\_at

string

Completion timestamp.

polling\_url

string

Status URL for this request.

error

string

Error message when `status` is FAILED/ERROR.

## Status Values & Flow

`QUEUED` → `PROCESSING` → `COMPLETED` (success) or `FAILED`/`ERROR` (failure).

### Pricing

Billed at **$0.15 per minute** of generated audio, rounded up to the whole minute, based on output length (capped at 120 seconds / $0.30 per request).

### Reference to Audio (Image + Voice Reference Audio to Audio)

## BytePlus Seed Audio 1.0 Image Reference to Audio API Documentation

Generate audio conditioned on a single image reference. `text_prompt` contains the text to synthesize. Asynchronous: submit returns a `request_id`; poll the status endpoint until the request is `COMPLETED`. Output is capped at 120 seconds of audio per request.

```
POST https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio/image
```

## Authentication

All requests require an API key passed via header.

Header

Type

Required

Description

Ocp-Apim-Subscription-Key

string

Yes

Your API subscription key

## Image Reference to Audio - BytePlus Seed Audio 1.0

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio/image
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model": "seed-audio-1.0",
  "text_prompt": "Read this scene description in a restrained suspense style.",
  "references": [
    {
      "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"
    }
  ],
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}
```

```
import requests

url = "https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio/image"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "model": "seed-audio-1.0",
  "text_prompt": "Read this scene description in a restrained suspense style.",
  "references": [
    {
      "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"
    }
  ],
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
```

```
const res = await fetch("https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio/image", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "model": "seed-audio-1.0",
  "text_prompt": "Read this scene description in a restrained suspense style.",
  "references": [
    {
      "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"
    }
  ],
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
})
});
console.log(await res.json());
```

```
curl -X POST 'https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio/image' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"model": "seed-audio-1.0", "text_prompt": "Read this scene description in a restrained suspense style.", "references": [{"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"}], "audio_config": {"format": "mp3", "sample_rate": 24000, "speech_rate": 0, "loudness_rate": 0, "pitch_rate": 0}, "watermark": {}}'
```

## Output

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=seed-audio-1-0&operation=seed-audio-1-0-reference-to-audio-image)

## Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

Header

Required

Description

X-Webhook-URL

To enable

HTTPS URL to receive the Webhook callback.

X-Webhook-Mode

No

`terminal` (default, one callback on COMPLETED/ERROR) or `sync` (per-poll callbacks).

### Example: enable Webhook

```
curl -X POST 'https://gateway.pixazo.ai/seed-audio-1-0/v1/reference-to-audio/image' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"model": "seed-audio-1.0", "text_prompt": "Read this scene description in a restrained suspense style.", "references": [{"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"}], "audio_config": {"format": "mp3", "sample_rate": 24000, "speech_rate": 0, "loudness_rate": 0, "pitch_rate": 0}, "watermark": {}}'
```

### Callback Payload (success)

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "seed-audio-1-0",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/byteplus-audio/1782800000000-019dxxxx.mp3",
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-06-30T10:00:00.000Z",
  "completed_at": "2026-06-30T10:00:18.000Z"
}
```

### Failure callback shape

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "seed-audio-1-0",
  "error": "Description of the failure"
}
```

#### Delivery semantics

-   **terminal** mode: one Webhook callback when the request is COMPLETED or ERROR.
-   **sync** mode: a Webhook callback on each status change.
-   Callbacks are idempotent on `request_id` — de-duplicate on it.
-   Respond `200` within a few seconds; the Webhook endpoint must be HTTPS.

## Request Parameters

Parameter

Required

Type

Default

Allowed values / range

Description

`model`

No

string

`seed-audio-1.0`

`seed-audio-1.0`

Model identifier.

`text_prompt`

Yes

string

—

≤ 2048 chars

Text to synthesize for the referenced image scene.

`references`

Yes

array

—

exactly 1 item

A single image reference. The item must contain exactly ONE of `image_url` or `image_data`. Image ≤ 10 MB; formats jpeg, png, webp. Cannot be combined with audio references. You may also pass the flat field `image_url`.

`references[].image_url`

—

string

—

—

Public URL of a reference image.

`references[].image_data`

—

string

—

—

Base64-encoded reference image.

`audio_config`

No

object

—

—

Output audio configuration (see fields below).

`audio_config.format`

No

string

`wav`

`wav`, `mp3`, `pcm`, `ogg_opus`

Output audio format.

`audio_config.sample_rate`

No

integer

`24000`

`8000`, `16000`, `24000`, `32000`, `44100`, `48000`

Sample rate (Hz).

`audio_config.speech_rate`

No

integer

`0`

\-50 to 100

Speed. 100 = 2.0×, -50 = 0.5×.

`audio_config.loudness_rate`

No

integer

`0`

\-50 to 100

Loudness. 100 = 2.0×, -50 = 0.5×.

`audio_config.pitch_rate`

No

integer

`0`

\-12 to 12

Pitch shift.

`watermark`

No

object

`{}`

—

Watermark configuration. An empty object is accepted.

## Example Request

```
{
  "model": "seed-audio-1.0",
  "text_prompt": "Read this scene description in a restrained suspense style.",
  "references": [
    {
      "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/images/input.jpg"
    }
  ],
  "audio_config": {
    "format": "mp3",
    "sample_rate": 24000,
    "speech_rate": 0,
    "loudness_rate": 0,
    "pitch_rate": 0
  },
  "watermark": {}
}
```

## Example Response

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Request Headers

Header

Required

Description

Content-Type

Yes

`application/json`

Ocp-Apim-Subscription-Key

Yes

Your API subscription key.

X-Webhook-URL

No

Enable Webhook callbacks (see Webhook section).

## Response Handling

Status Code

Meaning

202

Accepted — request queued; returns `request_id` and `polling_url`.

400

Bad request — invalid/missing parameters (e.g. missing `text_prompt` or reference).

401

Unauthorized — missing or invalid subscription key.

402

Insufficient balance.

403

Forbidden.

429

Too many requests.

500

Internal server error.

## Error Responses

```
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
```

A failed generation is reported via the status endpoint (or Webhook) with `status: "ERROR"` and an `error` message.

## Retrieving Results

Poll the status endpoint with the `request_id` from the submit response until `status` is `COMPLETED` (or `FAILED`/`ERROR`).

```
curl 'https://gateway.pixazo.ai/v2/requests/status/seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'
```

### Completed response

```
{
  "request_id": "seed-audio-1-0_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "seed-audio-1-0",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/byteplus-audio/1782800000000-019dxxxx.mp3",
    "media_type": "audio/mpeg"
  },
  "created_at": "2026-06-30T10:00:00.000Z",
  "completed_at": "2026-06-30T10:00:18.000Z"
}
```

## Response Fields

Field

Type

Description

request\_id

string

Unique request identifier.

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.

model\_id

string

The model that handled the request.

output.media\_url

string

Permanent URL of the generated audio.

output.media\_type

string

Audio MIME type (e.g. `audio/mpeg`, `audio/wav`).

created\_at

string

Request creation timestamp.

completed\_at

string

Completion timestamp.

polling\_url

string

Status URL for this request.

error

string

Error message when `status` is FAILED/ERROR.

## Status Values & Flow

`QUEUED` → `PROCESSING` → `COMPLETED` (success) or `FAILED`/`ERROR` (failure).

### Pricing

Billed at **$0.15 per minute** of generated audio, rounded up to the whole minute, based on output length (capped at 120 seconds / $0.30 per request).
