# Seed Audio 1.0 API

> Bộ tạo giọng nói và âm thanh điều khiển bằng văn bản, hỗ trợ tối đa 3 đoạn âm thanh tham chiếu hoặc một ảnh, cùng điều khiển cao độ và tốc độ

Tổng hợp âm thanh từ lời nhắc dài tối đa 2048 ký tự. Có thể chọn `voice` đặt sẵn hoặc đã nhân bản, và trích dẫn tối đa 3 đoạn tham chiếu trong lời nhắc dưới dạng @Audio1 đến @Audio3; thay vào đó có thể dùng một hình ảnh tham chiếu duy nhất, nhưng không thể dùng cùng âm thanh. Đầu ra là wav, mp3, pcm hoặc ogg_opus với tốc độ lấy mẫu từ 8000 đến 48000 Hz. Tốc độ và âm lượng nằm trong khoảng 0.5 đến 2, cao độ dịch chuyển từ -12 đến 12 nửa cung, còn `multilingual` chuyển sang biến thể dành cho văn bản đa ngôn ngữ.

- Model id: `bytedance/seed-audio-1.0`
- Made by: ByteDance
- Category: Audio
- Output: audio
- Charged by usage (up to $0.154 per run, typical $0.023; the rest of the hold is refunded): $0.1875 / minute of generated audio (cheapest run $0.023 (23 API credits))
- Run: `POST https://api.doitong.ru/v1/run/bytedance/seed-audio-1.0`
- Quote: `POST https://api.doitong.ru/v1/quote/bytedance/seed-audio-1.0`
- Docs page: https://doitong.com/vi/developers/models/bytedance/seed-audio-1.0

## Pricing

Price: **$0.1875 / minute of generated audio**. Charged by actual usage at $0.1875 / minute of generated audio: up to $0.154 per run (the quote gives the maximum for your input), the rest is refunded automatically after the run. A typical run costs $0.023.

The full example input below holds up to $0.154 = 154 API credits (up to 0.8167 min of generated audio × $0.1875) when it starts; a typical run costs $0.023 (23 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). This model is charged by usage: `POST https://api.doitong.ru/v1/quote/bytedance/seed-audio-1.0` with the same JSON body returns the most the run can cost for that input (`credits`, debited when the run starts); after the run you pay the usage the model reports and the rest is refunded automatically. An input whose maximum would exceed the per-run limit is refused with 422. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  | ≤ 2048 characters | Lời nhắc hoặc văn bản tổng hợp, với các tham chiếu âm thanh theo thứ tự được biểu diễn bằng @Audio1 cho đầu vào đầu tiên, @Audio2 cho đầu vào thứ hai và @Audio3 cho đầu vào thứ ba. |
| `voice` |  | string \| null | no |  |  | Chọn giọng tổng hợp bằng cách cung cấp tên preset hoặc ID của giọng đã nhân bản. |
| `audio_urls` | `audios` | array of audio URL | no |  | ≤ 3 items | Cung cấp âm thanh tham chiếu qua tối đa 3 URL; mỗi tệp phải ở định dạng wav/mp3/pcm/ogg_opus, tối đa 10 MB và 30 giây. Trong lời nhắc, xác định các đoạn bằng @Audio1, @Audio2, @Audio3. |
| `image_url` | `image` | string (image URL) \| null | no |  |  | Chỉ cung cấp một tham chiếu hình ảnh bằng URL khi không có tham chiếu âm thanh. Hình ảnh phải ở dạng jpeg/png/webp và không lớn hơn 10 MB. |
| `output_format` |  | enum (string) | no | `mp3` | `wav`, `mp3`, `pcm`, `ogg_opus` | Định dạng âm thanh được tạo. |
| `sample_rate` |  | enum (integer) | no | `24000` | `8000`, `16000`, `24000`, `32000`, `44100`, `48000` | Tần số lấy mẫu tính bằng Hz của âm thanh đầu ra. |
| `speed` |  | number | no | `1` | 0.5 – 2 | Hệ số tốc độ nói: 1.0 là tốc độ bình thường, 0.5 là nửa tốc độ và 2.0 là gấp đôi tốc độ. |
| `volume` |  | number | no | `1` | 0.5 – 2 | Hệ số âm lượng: 1.0 là âm lượng bình thường, 0.5 là một nửa âm lượng và 2.0 là gấp đôi âm lượng. |
| `pitch` |  | integer | no | `0` | -12 – 12 | Điều chỉnh cao độ giọng nói, tính bằng nửa cung: 0 giữ nguyên cao độ, -12 hạ xuống một quãng tám và 12 nâng lên một quãng tám. |
| `multilingual` |  | boolean | no | `false` |  | Lựa chọn biến thể mô hình: bật biến thể đa ngôn ngữ sẽ cải thiện khả năng xử lý khi lời nhắc trộn nhiều ngôn ngữ hoặc dùng ngôn ngữ khác tiếng Anh. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Có thể nới lỏng việc kiểm duyệt bằng cách đặt thành false, nếu người gọi được cấp quyền. |

File parameters (`audios`, `image`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/bytedance/seed-audio-1.0?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.ru/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/bytedance/seed-audio-1.0?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bytedance/seed-audio-1.0", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.ru/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "bytedance/seed-audio-1.0",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "bytedance/seed-audio-1.0",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 154,
    "usd": "0.154",
    "charged": 154,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "output": {
    "audio": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_name": "0-output.mp3",
      "file_size": 1843200,
      "duration": 5,
      "channels": 1,
      "sample_rate": 1,
      "bitrate": "string"
    }
  },
  "outputs": [
    {
      "type": "audio",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_size": 1843200,
      "duration": 12,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `audio` | object {url, content_type, file_name, file_size, duration, channels, sample_rate, bitrate} | Tệp âm thanh được tạo sinh. |

## Related models

- [MMAudio V2](https://doitong.com/developers/models/mmaudio-v2.md) (`mmaudio-v2`): $0.001 / second
- [DeepFilterNet 3](https://doitong.com/developers/models/deepfilternet3.md) (`deepfilternet3`): $0.001 / second of input audio
- [Demucs](https://doitong.com/developers/models/demucs.md) (`demucs`): $0.0007 / second of input audio
- [ElevenLabs Audio Isolation](https://doitong.com/developers/models/elevenlabs/audio-isolation.md) (`elevenlabs/audio-isolation`): $0.10 / minute of input file
- [Elevenlabs Sound Effects V2](https://doitong.com/developers/models/elevenlabs/sound-effects/v2.md) (`elevenlabs/sound-effects/v2`): $0.002 / second
- [ElevenLabs Voice Changer](https://doitong.com/developers/models/elevenlabs/voice-changer.md) (`elevenlabs/voice-changer`): $0.30 / minute of input audio
- [FFmpeg API \[Merge Audios\]](https://doitong.com/developers/models/ffmpeg-api/merge-audios.md) (`ffmpeg-api/merge-audios`): $0.00017 / second of processing time
- [Ffmpeg Api · Loudnorm](https://doitong.com/developers/models/ffmpeg-api/loudnorm.md) (`ffmpeg-api/loudnorm`): $0.00017 / second of processing time

## Links

- HTML page: https://doitong.com/developers/models/bytedance/seed-audio-1.0
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=bytedance/seed-audio-1.0
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/bytedance/seed-audio-1.0
