# Проверить запись на слух

Программа распознаёт запись обратно в текст и сверяет.

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

Бесплатно. Если в книге включена проверка после озвучки (`check: "auto"`), она запускается сама. Куски, где пропало
или удвоилось слово (`bad`), программа переозвучивает сама другим дублем — тоже бесплатно. `GET` того же адреса — последний отчёт.

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

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

## Что в ответе

| Поле | Что это |
|---|---|
| `counts` | Сколько кусков `ok`, `warn` (мелочь), `bad` (звучит не так) |
| `items[]` | Куски с замечаниями: текст, что услышано, пропуски `missing` и лишнее `extra` |

## Ошибки

| Код | Когда |
|---|---|
| `409` | У главы ещё нет записи — сначала озвучьте |

```bash
curl -X POST "https://golosar-kniga.tech/api/v1/chapters/$CHAPTER_ID/check" \
  -H "x-api-key: $KEY"
```

```python
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}/check", headers=H)
r.raise_for_status()
print(r.json())
```

```javascript
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}/check`, { method: "POST", headers: H });
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());
```

```json Ответ 200
{
  "job": {
    "id": "01a134d0-e5ee-7e70-aa75-bfee87a5d3c7",
    "type": "check",
    "status": "done",
    "…": "…"
  },
  "total": 3,
  "checked": 3,
  "counts": {
    "ok": 2,
    "warn": 1,
    "bad": 0,
    "error": 0,
    "unchecked": 0,
    "accepted": 0
  },
  "items": [
    {
      "key": "75dcf866cab3be4d…",
      "segment_ids": [
        "01a134d0-ddbf-7616-8ddc-f4b77800ae46"
      ],
      "t0": 3.9,
      "text": "Кто здесь?",
      "status": "warn",
      "accepted": false,
      "score": 0.75,
      "heard": "по здесь",
      "missing": [],
      "wrong": [],
      "extra": [
        "по"
      ],
      "ops": [
        [
          "extra",
          "",
          "по"
        ],
        [
          "close",
          "кто здесь",
          "здесь"
        ]
      ],
      "error": null
    }
  ],
  "installed": true,
  "problems": 0,
  "minor": 1
}
```
