Собрать аудиокнигу

M4B с главами и обложкой или ZIP с MP3 по главам.

POST /books/{book_id}/export · озвучка

Бесплатно. Собираются озвученные главы. Это задача: дождитесь done (ход или уведомление export.ready), потом возьмите ссылку в GET /books/{id}/exports. В файл записываются название, автор, обложка и пометка «Озвучено с помощью синтеза речи».

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

Параметр Что это
book_id Id книги

Тело запроса

JSON, заголовок content-type: application/json.

Поле Тип Обязательно Что это
format строка нет m4b (по умолчанию) или zip

Ошибки

Код Когда
400 Нет ни одной озвученной главы
curl -X POST "https://golosar-kniga.tech/api/v1/books/$BOOK_ID/export" \
  -H "x-api-key: $KEY" \
  -H "content-type: application/json" \
  -d '{"format": "m4b"}'
import os, requests

API = "https://golosar-kniga.tech/api/v1"
H = {"x-api-key": os.environ["GOLOSAR_KEY"]}
book_id = "01a134d0-dd73-77be-aa8d-0944ffb2b5e3"

r = requests.post(f"{API}/books/{book_id}/export", headers=H, json={"format": "m4b"})
r.raise_for_status()
print(r.json())
const API = "https://golosar-kniga.tech/api/v1";
const H = { "x-api-key": process.env.GOLOSAR_KEY, "content-type": "application/json" };
const bookId = "01a134d0-dd73-77be-aa8d-0944ffb2b5e3";

const r = await fetch(`${API}/books/${bookId}/export`, { method: "POST", headers: H, body: JSON.stringify({"format": "m4b"}) });
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());

json Ответ 200 { "job": { "id": "01a134d0-e68a-70c7-8ae4-d73d6b08cb17", "type": "export", "status": "queued", "book_id": "01a134d0-dd73-77be-aa8d-0944ffb2b5e3", "created_at": "2026-10-13T10:31:08.157233+00:00", "title": "Сборка ZIP: Вечер в саду · Версия 1", "eta_s": 3.0 } }