Книга из текста

Создать книгу из текста: главы и герои найдутся сами.

POST /books · озвучка

Строки «Глава 1», «Глава 2»… делят текст на главы. Прямая речь — с тире «—». Программа сразу разметит, кто говорит, найдёт героев и даст им голоса (по полу и возрасту, разные голоса разным героям).

Тело запроса

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

Поле Тип Обязательно Что это
title строка да Название книги
author строка нет Автор
text строка да Текст книги

Что в ответе

Поле Что это
id Id книги
title / author Название и автор
status ready — можно работать, importing — ещё разбирается, failed — ошибка разбора
reading roles — по ролям, solo — один чтец
check auto — проверять запись на слух после озвучки, off — по кнопке
sound Обработка звука: studio или raw
active_edition_id Текущая версия озвучки

Ошибки

Код Когда
402 Нет знаков на балансе
422 Нет названия или текста
curl -X POST "https://golosar-kniga.tech/api/v1/books" \
  -H "x-api-key: $KEY" \
  -H "content-type: application/json" \
  -d '{"title": "Вечер в саду", "author": "Иван Петров", "text": "Глава 1\nВечер был тих.\n— Кто здесь? — спросила Мира."}'
import os, requests

API = "https://golosar-kniga.tech/api/v1"
H = {"x-api-key": os.environ["GOLOSAR_KEY"]}

r = requests.post(f"{API}/books", headers=H, json={"title": "Вечер в саду", "author": "Иван Петров", "text": "Глава 1\nВечер был тих.\n— Кто здесь? — спросила Мира."})
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 r = await fetch(`${API}/books`, { method: "POST", headers: H, body: JSON.stringify({"title": "Вечер в саду", "author": "Иван Петров", "text": "Глава 1\nВечер был тих.\n— Кто здесь? — спросила Мира."}) });
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());

json Ответ 200 { "book": { "id": "01a134d0-dd73-77be-aa8d-0944ffb2b5e3", "title": "Вечер в саду", "author": "Иван Петров", "status": "ready", "created_at": "2026-10-13T10:31:05.833003+00:00", "language": "ru", "subtitle": "", "series": "", "series_no": "", "genre": "", "age_rating": "", "thoughts": "hero", "sound": "studio", "check": "auto", "reading": "roles", "cover_url": null, "active_edition_id": "01a134d0-ddcc-7b41-ba3d-b8112c6d0414" } }