---
title: Аккаунт и лимиты
description: GET /v1/key и GET /v1/generation в Clipia AI Gateway — проверка лимитов и расхода ключа, точная стоимость запроса, заголовки rate-limit и ответ 429.
---

Clipia AI Gateway даёт OpenAI-совместимые эндпоинты для контроля ключа и расходов: `GET /v1/key` — лимиты и использование ключа, `GET /v1/generation` — фактическая стоимость конкретного запроса. Биллинг идёт в кредитах с баланса аккаунта.

## Информация о ключе (`GET /v1/key`)

<Method name="GET" path="/v1/key" />

```bash
curl https://api.clipia.ai/v1/key \
  -H "Authorization: Bearer $CLIPIA_API_KEY"
```

**Ответ `200`**

```json
{
  "data": {
    "label": "prod key",
    "usage": 1240.5,
    "limit": null,
    "limit_remaining": null,
    "rate_limit": { "requests": 120, "interval": "1m" }
  }
}
```

<TypeTable
  type={{
    label: { type: 'string', description: 'Имя ключа, заданное при создании.' },
    usage: { type: 'number', description: 'Израсходовано кредитов этим ключом.' },
    limit: { type: 'number | null', description: 'Бюджет ключа в кредитах; null — без отдельного лимита (ограничен балансом аккаунта).' },
    limit_remaining: { type: 'number | null', description: 'Остаток бюджета ключа в кредитах; null — без лимита.' },
    'rate_limit.requests': { type: 'integer', description: 'Лимит запросов за окно.' },
    'rate_limit.interval': { type: 'string', description: 'Длина окна, напр. "1m".' },
  }}
/>

## Стоимость запроса (`GET /v1/generation`)

Передайте `id` из ответа чата (`chatcmpl-…`), чтобы получить фактическую стоимость и расход токенов уже выполненного запроса.

<Method name="GET" path="/v1/generation?id={id}" />

```bash
curl "https://api.clipia.ai/v1/generation?id=chatcmpl-3f9a1c7e2b41" \
  -H "Authorization: Bearer $CLIPIA_API_KEY"
```

**Ответ `200`**

```json
{
  "data": {
    "id": "chatcmpl-3f9a1c7e2b41",
    "model": "claude-opus-5",
    "provider_name": "Clipia",
    "streamed": false,
    "total_cost": 0.046,
    "tokens_prompt": 28,
    "tokens_completion": 64,
    "finish_reason": "stop",
    "created_at": "2026-06-26T12:00:00Z"
  }
}
```

`total_cost` — фактическая стоимость запроса в кредитах. Это удобно для аудита расходов по каждому вызову независимо от поля `usage` в ответе чата.

## Лимиты

Каждый ключ ограничен по числу запросов в минуту (RPM, по умолчанию **120**) и, опционально, по числу токенов в минуту (TPM) и бюджету в кредитах. При превышении RPM/TPM запрос отклоняется с `429`, при исчерпании бюджета — с `402`.

### Заголовки ответа

<TypeTable
  type={{
    'x-ratelimit-remaining-requests': { type: 'integer', description: 'Сколько запросов осталось в текущем окне.' },
    'x-ratelimit-remaining-tokens': { type: 'integer', description: 'Сколько токенов осталось в текущем окне (если задан TPM-лимит).' },
    'Retry-After': { type: 'integer (секунды)', description: 'Присылается при 429: через сколько секунд можно повторить.' },
  }}
/>

### Ответ 429

```http
HTTP/1.1 429 Too Many Requests
Retry-After: 12
Content-Type: application/json
```

```json
{
  "error": {
    "message": "Превышен лимит запросов. Повторите позже.",
    "type": "rate_limit_error",
    "param": null,
    "code": "rate_limit_exceeded"
  }
}
```

<Callout type="info" title="Соблюдайте Retry-After">
При `429` подождите столько секунд, сколько указано в `Retry-After`, и только потом повторяйте — это надёжнее фиксированной задержки. Лимиты ключа можно поднять в [консоли разработчика](/developer).
</Callout>

<Callout type="warn" title="Сверьте с боевым ответом">
Точная форма ответов `GET /v1/key` и `GET /v1/generation`, а также набор заголовков rate-limit могут отличаться — сверяйте с боевым API. Значения лимитов настраиваются на ключ.
</Callout>
