# Ошибки и лимиты

> Что делать, если запрос не выполнился.

## <a id="format"></a>Формат ошибки

Любой ответ с ошибкой устроен одинаково: code для программы, message для человека на языке запроса (Accept-Language или ?lang).

```json
{
  "error": {
    "code": "insufficient_funds",
    "message": "Не хватает средств: нужно ещё 2500 в минорных единицах. Пополните баланс в кабинете."
  }
}
```

## <a id="codes"></a>Коды ответов

| HTTP | Код | Что делать |
|---|---|---|
| `401` | invalid_api_key | Проверьте ключ. Отозванный или отсутствующий ключ замените новым из кабинета. |
| `402` | insufficient_funds | Пополните баланс, задача не создана. |
| `403` | model_not_allowed_for_key | Ключу не разрешена эта модель: набор моделей ключа меняется в кабинете, раздел «Ключи доступа». |
| `403` | key_daily_limit_exceeded | Лимит трат ключа на сутки исчерпан, задача не создана. Сутки по Москве; лимит меняется в кабинете. |
| `404` | model_not_found, task_not_found | Проверьте ключ модели (GET /v1/models) или id задачи. |
| `404` | artifact_expired | Срок хранения файлов результата вышел. |
| `404` | not_found | Такого адреса нет. В ответе поля docs, openapi и llms со ссылками на описание API. |
| `405` | method_not_allowed | Адрес не принимает этот метод запроса: разрешённые в заголовке Allow, ссылки на описание API в ответе. |
| `409` | idempotency_conflict | Под этой меткой уже есть задача с другими настройками, возьмите новую метку. |
| `409` | request_in_progress | Задача под этой меткой ещё создаётся: повторите тот же запрос через несколько секунд. |
| `413` | request_too_large, file_too_large | Уменьшите тело запроса или файл. |
| `422` | invalid_settings, unknown_setting | Сверьте settings со страницей модели: подробности в message. |
| `422` | invalid_request, file_type, file_empty | Проверьте форму запроса, формат и содержимое файла. |
| `429` | rate_limited, too_many_active | Подождите: превышен лимит запросов или одновременных задач модели. |
| `503` | model_unavailable, sg_unavailable | Модель на обслуживании или сервер генераций недоступен, повторите позже. |
| `500` | internal_error | Ошибка на нашей стороне, повторите позже; если повторяется, напишите в поддержку. |

## <a id="limits"></a>Лимиты

- 120 запросов в минуту на кабинет; ключи одного кабинета делят лимит.
- 30 запросов с неверным ключом в минуту с одного адреса.
- Тело JSON у задач и цены до 64 КБ, у остальных запросов до 16 КБ.
- Одновременных задач одной модели столько же, сколько у бота: при превышении 429 too_many_active.
- До 10 активных ключей в кабинете.
- Ключу можно оставить только нужные модели и лимит трат в сутки (по умолчанию все модели и без лимита). Свои права ключ видит в GET /v1/me, а GET /v1/models с таким ключом показывает только его модели.

Модель может быть временно выключена: available в GET /v1/models показывает это заранее, постановка задачи отвечает 503 model_unavailable.
