# Расход и начисления

Все списания и начисления с остатком после каждого.

`GET /usage/ledger` · чтение

Каждая операция — озвучка главы (одна задача), прослушивание строк (одна запись в день на книгу), начисление (пакет, проба, подарок). Новые — сверху.

## Параметры запроса

| Параметр | Тип | Что это |
|---|---|---|
| `book_id` | строка | Только по этой книге |
| `days` | число | За последние N дней |
| `limit` | число | Сколько строк (по умолчанию 300) |

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

| Поле | Что это |
|---|---|
| `items[].type` | `render` — озвучка, `listen` — прослушивание, `grant` — начисление |
| `items[].credits` | Знаков: минус — списано, плюс — начислено |
| `items[].balance` | Остаток после операции |
| `items[].chars` | Знаков текста (до умножения на вес) |
| `items[].voice` | Какими голосами |
| `spent` / `given` / `left` | Итоги по выбранному |
| `reserved` | Отложено под задачи в очереди |

```bash
curl "https://golosar-kniga.tech/api/v1/usage/ledger?limit=20" \
  -H "x-api-key: $KEY"
```

```python
import os, requests

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

r = requests.get(f"{API}/usage/ledger", headers=H, params={"limit": 20})
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 r = await fetch(`${API}/usage/ledger?limit=20`, { headers: H });
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());
```

```json Ответ 200
{
  "items": [
    {
      "type": "render",
      "what": "Озвучка: Глава 1",
      "book": "Вечер в саду",
      "book_id": "01a134d0-dd73-77be-aa8d-0944ffb2b5e3",
      "chars": 108,
      "voice": "наши голоса",
      "audio_s": 6.9,
      "at": "2026-10-13T10:31:07.399828+00:00",
      "credits": -108.0,
      "balance": 1834512.5
    },
    {
      "type": "grant",
      "what": "Куплен пакет «Студия»",
      "book": "",
      "book_id": null,
      "chars": null,
      "voice": "",
      "audio_s": null,
      "at": "2026-10-12T09:02:11.104223+00:00",
      "credits": 2000000.0,
      "balance": 2000000.0
    }
  ],
  "more": 0,
  "spent": 165487.5,
  "given": 2000000.0,
  "left": 1834512.5,
  "unlimited": false,
  "reserved": 0.0,
  "books": [
    {
      "id": "01a134d0-dd73-77be-aa8d-0944ffb2b5e3",
      "title": "Вечер в саду"
    }
  ]
}
```
