Grok API
← Вся документация

Ошибки Grok API

View as Markdown

Обновлено:

Нейросеть 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

Вот список ошибок и их статусов.

КодПричинаЧто делатьПовтор
400
Bad Request
Невалидный JSON, аргумент или тело запроса. Иногда неверно передан ключ.Проверьте JSON, обязательные поля, типы значений и заголовок Authorization.Нет, пока запрос не исправлен
401
Unauthorized
API-ключ отсутствует, недействителен или передан не в том формате.Передайте Authorization: Bearer sk-lg-... и убедитесь, что ключ не содержит пробелов.Нет
403
Forbidden
Ключ распознан, но доступ к ресурсу запрещён.Проверьте доступ аккаунта и модели. Если запрос корректен, обратитесь в поддержку.Нет
404
Not Found
Неверный base URL, endpoint или ID модели.Сверьте адрес https://api.llm-gate.tech/v1, путь /v1/chat/completions и название модели.Нет
405
Method Not Allowed
Для endpoint выбран неверный HTTP-метод.Используйте метод из документации, обычно POST для генерации.Нет
415
Unsupported Media Type
Тело пустое или отсутствует Content-Type: application/json.Передайте JSON-тело и правильный Content-Type.Нет
422
Unprocessable Entity
JSON читается, но формат одного из полей не прошёл проверку.Проверьте структуру messages, типы параметров и допустимые значения.Нет
429
Too Many Requests
Превышен текущий rate limit.Уменьшите параллелизм и частоту запросов. Учитывайте Retry-After.Да, с backoff и jitter
500
Internal Server Error
Временная внутренняя ошибка сервиса.Сохраните request ID и повторите запрос ограниченное число раз.Да
502/503/504
Gateway 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");
}