# Ошибки Grok API

Диагностика ошибок Grok API по HTTP-коду и безопасные повторы только при rate limit или временных сбоях сервера.

## Формат ошибки

```json
{
  "error": {
    "message": "Invalid model ID",
    "type": "invalid_request_error",
    "code": "invalid_model"
  }
}
```

## Коды ошибок

| Код | Причина | Что делать | Повтор |
| --- | --- | --- | --- |
| 400 | Невалидный запрос | Исправить JSON, поля и типы значений. | Нет |
| 401 | Ключ отсутствует или недействителен | Проверить заголовок Authorization. | Нет |
| 403 | Доступ запрещён | Проверить доступ аккаунта и модели. | Нет |
| 404 | Неверный endpoint или ID модели | Проверить base URL, путь и модель. | Нет |
| 405 | Неверный HTTP-метод | Использовать метод из документации. | Нет |
| 415 | Неверный Content-Type | Отправить JSON с Content-Type: application/json. | Нет |
| 422 | Ошибка проверки полей | Исправить структуру запроса. | Нет |
| 429 | Превышен rate limit | Снизить параллелизм и учитывать Retry-After. | Да, с backoff |
| 500 | Временная ошибка сервера | Сохранить request ID и ограниченно повторить. | Да |
| 502/503/504 | Временная ошибка gateway | Повторить с растущей задержкой. | Да |

## Правила безопасного повтора

- Не повторяйте 4xx-ответы, пока не исправлен запрос.
- Учитывайте Retry-After, если заголовок присутствует.
- Ограничьте число попыток и используйте exponential backoff с jitter.
- Для операций с побочными эффектами предусмотрите idempotency.
