Озвучить главу

Ставит главу в очередь — ответ сразу, озвучка идёт на сервере.

POST /chapters/{chapter_id}/render · озвучка

Ответ приходит сразу: задача в очереди. Ход — GET /jobs/{id} или уведомление chapter.voiced. Для всей книги отправьте запрос на каждую главу — сервер озвучивает их по очереди, честно деля мощность между всеми, кто озвучивает.

Уже озвученные куски не озвучиваются и не списываются заново — после правки слова переозвучится только кусок с ним.

Параметры пути

Параметр Что это
chapter_id Id главы

Заголовки

Заголовок Что это
Idempotency-Key Ваш id запроса. Повтор с тем же значением вернёт ту же задачу, а не поставит вторую

Ошибки

Код Когда
402 Не хватает знаков на балансе, в лимите ключа или в бюджете книги
409 Глава уже озвучивается или версия книги закрыта
422 Сначала нужно исправить главу (detail — что именно)
429 Слишком много глав в работе одновременно
curl -X POST "https://golosar-kniga.tech/api/v1/chapters/$CHAPTER_ID/render" \
  -H "x-api-key: $KEY"
import os, requests

API = "https://golosar-kniga.tech/api/v1"
H = {"x-api-key": os.environ["GOLOSAR_KEY"]}
chapter_id = "01a134d0-ddb7-72aa-b96c-967b596362fe"

r = requests.post(f"{API}/chapters/{chapter_id}/render", headers=H)
r.raise_for_status()
print(r.json())
const API = "https://golosar-kniga.tech/api/v1";
const H = { "x-api-key": process.env.GOLOSAR_KEY };
const chapterId = "01a134d0-ddb7-72aa-b96c-967b596362fe";

const r = await fetch(`${API}/chapters/${chapterId}/render`, { method: "POST", headers: H });
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());

json Ответ 200 { "job": { "id": "01a134d0-e101-75f3-822a-7e5c7ba0f3f3", "type": "render", "job_type": "render", "status": "queued", "done": 0, "total": 3, "reused": 0, "credits_used": 0.0, "error": null, "chapter_id": "01a134d0-ddb7-72aa-b96c-967b596362fe", "book_id": "01a134d0-dd73-77be-aa8d-0944ffb2b5e3", "created_at": "2026-10-13T10:31:06.695103+00:00", "started_at": null, "finished_at": null, "title": "Озвучка: Глава 1", "stage": "", "eta_s": 12.0, "bytes": null, "bytes_total": null, "cost_usd": null } }