# ACE Step Audio Inpaint API

> Huzalisha upya muda uliochaguliwa wa faili ya sauti iliyopo kwa kutumia lebo na mashairi mapya

Hupokea `audio_url` na kuandika upya sehemu iliyo kati ya `start_time` na `end_time`, kila moja ikipimwa kwa sekunde kutoka 0 hadi 240. Kila muda unaweza kuwekwa kulingana na mwanzo au mwisho wa klipu. `tags` na `lyrics` mpya huongoza sehemu iliyobadilishwa, na `variance` hudhibiti utofauti wa matokeo. Miongozo ya kawaida na mipangilio ya hatua inapatikana.

- Model id: `ace-step/audio-inpaint`
- Made by: ACE Studio
- Category: Text to Music
- Output: audio
- Price per second of your input audio: $0.0002 / second of input audio (cheapest run $0.001 (1 API credit))
- Run: `POST https://api.doitong.com/v1/run/ace-step/audio-inpaint`
- Quote: `POST https://api.doitong.com/v1/quote/ace-step/audio-inpaint`
- Docs page: https://doitong.com/sw/developers/models/ace-step/audio-inpaint

## Pricing

Price: **$0.0002 / second of input audio**. Price per second of your input audio: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

The full example input below costs $0.002 = 2 API credits (10 s input audio × $0.0002).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/ace-step/audio-inpaint` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. 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 |
|---|---|---|---|---|---|---|
| `audio_url` | `audio` | string (audio URL) | yes |  |  | URL ya faili ya sauti kwa inpainting. |
| `start_time_relative_to` |  | enum (string) | no | `start` | `start`, `end` | Sehemu ya marejeleo ya muda wa kuanza: mwanzo au mwisho wa sauti. |
| `start_time` |  | number | no | `0` | 0 – 240 | Muda wa kuanza inpainting, unaopimwa kwa sekunde. |
| `end_time_relative_to` |  | enum (string) | no | `start` | `start`, `end` | Sehemu ya marejeleo ya muda wa kumaliza: mwanzo au mwisho wa sauti. |
| `end_time` |  | number | no | `30` | 0 – 240 | Muda wa kumaliza inpainting, unaopimwa kwa sekunde. |
| `tags` |  | string | yes |  |  | Lebo za mtindo wa sauti zinazotolewa kama aina zilizotenganishwa kwa koma, huku `prompt` ikiwa njia mbadala ya kuzitoa. |
| `lyrics` |  | string | no | `` |  | Maneno ya wimbo yanayoimbwa, huku sehemu za wimbo zikipangwa kwa kutumia vidhibiti kama [verse], [chorus], na [bridge]. Kwa sauti isiyo na maneno ya kuimbwa, acha ingizo hili au toa [inst] au [instrumental] pekee. |
| `variance` |  | number | no | `0.5` | 0 – 1 | Variance ya inpainting hudhibiti jinsi matokeo yanavyoweza kuwa tofauti; kuiongeza kunaweza kuleta utofauti zaidi. |
| `number_of_steps` |  | integer | no | `27` | 3 – 60 | Idadi ya hatua zinazotumika wakati wa uzalishaji wa sauti. |
| `seed` |  | integer \| null | no |  |  | Seed ya uzalishaji unaoweza kurudiwa; huchaguliwa bila mpangilio isipokuwa utoe thamani. |
| `scheduler` |  | enum (string) | no | `euler` | `euler`, `heun` | Kiratibu kinachotumika wakati wa uzalishaji. |
| `guidance_type` |  | enum (string) | no | `apg` | `cfg`, `apg`, `cfg_star` | Aina ya CFG inayotumika wakati wa uzalishaji. |
| `granularity_scale` |  | integer | no | `10` | -100 – 100 | Kiwango cha granularity kinachotumika wakati wa uzalishaji. Kukiongeza kunaweza kupunguza kasoro. |
| `guidance_interval` |  | number | no | `0.5` | 0 – 1 | Sehemu ya ratiba ya uzalishaji inayopokea mwongozo: kuchagua 0.5 huiwekea mipaka hatua kutoka 0.25 * infer_steps hadi 0.75 * infer_steps, na kuacha mwanzo na mwisho bila mwongozo. |
| `guidance_interval_decay` |  | number | no | `0` | 0 – 1 | Kupungua kwa mwongozo ndani ya muda wa uzalishaji: 0.0 huacha kupungua kikiwa kimezimwa; vinginevyo, kiwango hupungua katika muda huo kutoka guidance_scale hadi min_guidance_scale. |
| `guidance_scale` |  | number | no | `15` | 0 – 200 | Kiwango cha mwongozo kinachotumika wakati wa uzalishaji. |
| `minimum_guidance_scale` |  | number | no | `3` | 0 – 200 | Kiwango cha chini kabisa cha mwongozo kinachofikiwa baada ya kupungua wakati wa uzalishaji. |
| `tag_guidance_scale` |  | number | no | `5` | 0 – 10 | Kiwango cha mwongozo wa lebo kinachotumika wakati wa uzalishaji. |
| `lyric_guidance_scale` |  | number | no | `1.5` | 0 – 10 | Kiwango cha mwongozo wa maneno ya wimbo kinachotumika wakati wa uzalishaji. |

File parameters (`audio`) 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
{
  "tags": "lofi, hiphop, drum and bass, trap, chill",
  "audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}
```

A fuller example:

```json
{
  "tags": "lofi, hiphop, drum and bass, trap, chill",
  "audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}
```

## 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.com/v1/run/ace-step/audio-inpaint?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tags": "lofi, hiphop, drum and bass, trap, chill",
    "audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
  }'

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

### JavaScript

```javascript
const API = "https://api.doitong.com/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/ace-step/audio-inpaint?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "tags": "lofi, hiphop, drum and bass, trap, chill",
    "audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
  }),
});
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.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "tags": "lofi, hiphop, drum and bass, trap, chill",
    "audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ace-step/audio-inpaint", 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.com/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": "ace-step/audio-inpaint",
      "input": {
        "tags": "lofi, hiphop, drum and bass, trap, chill",
        "audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
      },
      "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": "ace-step/audio-inpaint",
  "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": 2,
    "usd": "0.002",
    "charged": 2,
    "refunded": 0
  },
  "input": {
    "tags": "lofi, hiphop, drum and bass, trap, chill",
    "audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
  },
  "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
    },
    "seed": 42,
    "tags": "lofi, hiphop, drum and bass, trap, chill",
    "lyrics": "[inst]"
  },
  "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.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `audio` | object {url, content_type, file_name, file_size} | Faili ya sauti iliyozalishwa. |
| `seed` | integer | Seed ya nasibu inayotumika wakati wa uzalishaji. |
| `tags` | string | Lebo za aina ya muziki zinazotumika wakati wa uzalishaji. |
| `lyrics` | string | Maneno ya wimbo yanayotumika wakati wa uzalishaji. |

## Related models

- [ACE Step](https://doitong.com/developers/models/ace-step.md) (`ace-step`): $0.0002 / second
- [ACE Step Audio Outpaint](https://doitong.com/developers/models/ace-step/audio-outpaint.md) (`ace-step/audio-outpaint`): $0.0002 / second of output audio
- [ACE Step Audio To Audio](https://doitong.com/developers/models/ace-step/audio-to-audio.md) (`ace-step/audio-to-audio`): $0.0002 / second of input audio
- [ACE Step Prompt To Audio](https://doitong.com/developers/models/ace-step/prompt-to-audio.md) (`ace-step/prompt-to-audio`): $0.0002 / second
- [MiniMax Music 3](https://doitong.com/developers/models/minimax/music-3.md) (`minimax/music-3`): $0.002 / second
- [DiffRhythm: Lyrics to Song](https://doitong.com/developers/models/diffrhythm.md) (`diffrhythm`): $0.001 / second
- [Elevenlabs Music](https://doitong.com/developers/models/elevenlabs/music.md) (`elevenlabs/music`): $0.60 / minute of output audio
- [Elevenlabs Music v2](https://doitong.com/developers/models/elevenlabs/music/v2.md) (`elevenlabs/music/v2`): $0.60 / minute of output audio

## Links

- HTML page: https://doitong.com/developers/models/ace-step/audio-inpaint
- 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=ace-step/audio-inpaint
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/ace-step/audio-inpaint
