# Кто я и баланс

Пользователь, баланс, права и траты ключа.

`GET /api/me` · чтение

Работает и при нулевом балансе — по нему ваш сервер узнаёт, почему остальные запросы отвечают `402`.

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

| Поле | Что это |
|---|---|
| `user` | Почта и имя владельца ключа |
| `balance` | Знаков на балансе |
| `unlimited` | Баланс без лимита (служебные учётки) |
| `api_allowed` | API доступен (куплена «Студия» и есть знаки) |
| `weights` | Вес цены по видам голосов |
| `key.scope` | Права ключа: `read`, `voice`, `full` |
| `key.char_limit` | Свой лимит знаков ключа или `null` |
| `key.used` / `key.left` | Потрачено этим ключом / осталось до лимита |
| `key.rate_per_minute` | Запросов в минуту |

## Ошибки

| Код | Когда |
|---|---|
| `401` | Ключ неверный или отозван |

```bash
curl "https://golosar-kniga.tech/api/v1/api/me" \
  -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}/api/me", 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 r = await fetch(`${API}/api/me`, { headers: H });
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());
```

```json Ответ 200
{
  "user": {
    "email": "you@example.com",
    "name": "Иван"
  },
  "balance": 1834512.5,
  "unlimited": false,
  "api_allowed": true,
  "weights": {
    "local": 0.1,
    "own": 1.0,
    "cloud": 3.0
  },
  "key": {
    "name": "мой сервис",
    "prefix": "gk_live_zRgV",
    "scope": "full",
    "char_limit": null,
    "used": 15488.0,
    "left": null,
    "rate_per_minute": 120
  }
}
```
