Ошибки Grok API
Обновлено:
Нейросеть Grok: HTTP-коды ошибок Grok API. Грок ИИ — причины возникновения и способы решения проблем.
Формат ошибки
Grok API Dev возвращает ошибки в OpenAI-совместимом формате. Ответ представляет собой объект error с полями code, message и type.
JSON
{
"error": {
"message": "Invalid model ID",
"type": "invalid_request_error",
"code": "invalid_model"
}
}Коды ошибок Grok API
Вот список ошибок и их статусов.
| Код | Причина | Что делать | Повтор |
|---|---|---|---|
400Bad Request | Невалидный JSON, аргумент или тело запроса. Иногда неверно передан ключ. | Проверьте JSON, обязательные поля, типы значений и заголовок Authorization. | Нет, пока запрос не исправлен |
401Unauthorized | API-ключ отсутствует, недействителен или передан не в том формате. | Передайте Authorization: Bearer sk-lg-... и убедитесь, что ключ не содержит пробелов. | Нет |
403Forbidden | Ключ распознан, но доступ к ресурсу запрещён. | Проверьте доступ аккаунта и модели. Если запрос корректен, обратитесь в поддержку. | Нет |
404Not Found | Неверный base URL, endpoint или ID модели. | Сверьте адрес https://api.llm-gate.tech/v1, путь /v1/chat/completions и название модели. | Нет |
405Method Not Allowed | Для endpoint выбран неверный HTTP-метод. | Используйте метод из документации, обычно POST для генерации. | Нет |
415Unsupported Media Type | Тело пустое или отсутствует Content-Type: application/json. | Передайте JSON-тело и правильный Content-Type. | Нет |
422Unprocessable Entity | JSON читается, но формат одного из полей не прошёл проверку. | Проверьте структуру messages, типы параметров и допустимые значения. | Нет |
429Too Many Requests | Превышен текущий rate limit. | Уменьшите параллелизм и частоту запросов. Учитывайте Retry-After. | Да, с backoff и jitter |
500Internal Server Error | Временная внутренняя ошибка сервиса. | Сохраните request ID и повторите запрос ограниченное число раз. | Да |
502/503/504Gateway or upstream | Gateway или upstream временно недоступен либо не успел ответить. | Проверьте status page и повторите запрос с растущей задержкой. | Да |
Правила безопасного повтора
- Не повторяйте 400, 401, 403, 404, 405, 415 и 422, пока не исправили запрос.
- Ограничьте число попыток и добавляйте случайный jitter, чтобы клиенты не повторяли запросы одновременно.
- Используйте Retry-After, если он есть. Иначе применяйте exponential backoff.
- Для операций с побочными эффектами заранее продумайте idempotency. Иначе повтор может выполнить действие дважды.
JavaScript
const retryable = new Set([429, 500, 502, 503, 504]);
function retryAfterMs(value) {
if (!value) return null;
const seconds = Number(value);
if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);
const date = Date.parse(value);
return Number.isNaN(date) ? null : Math.max(0, date - Date.now());
}
async function fetchWithRetry(url, init, maxAttempts = 4) {
for (let attempt = 0; attempt < maxAttempts; attempt++) {
const response = await fetch(url, init);
if (!retryable.has(response.status) || attempt === maxAttempts - 1) {
return response;
}
const retryAfter = retryAfterMs(response.headers.get("retry-after"));
const backoff = 500 * 2 ** attempt;
const jitter = Math.random() * 250;
const delayMs = retryAfter !== null
? retryAfter
: backoff + jitter;
await new Promise((resolve) => setTimeout(resolve, delayMs));
}
throw new Error("unreachable");
}