Справка

Ошибки и диагностика

Сначала сохраните status, error code и request ID. Не прикладывайте API key или чувствительный prompt.

Форма ответа

Canonical proxy и глобальный HTTP handler возвращают объект error на верхнем уровне. Сохраняйте неизвестные поля для диагностики, но не ожидайте обёртку detail.

Response400
Proxy / upstream
{
  "error": {
    "message": "Input exceeds the model context window.",
    "code": "context_length_exceeded",
    "type": "invalid_request_error",
    "param": "messages"
  }
}
Response401
Authentication dependency
{
  "error": {
    "message": "Invalid API key",
    "code": "invalid_api_key"
  }
}

Коды

HTTPerror.codeДействие
400invalid_json / invalid_requestПроверьте JSON object, обязательные model/messages и типы полей.
400context_length_exceededСократите input и/или max_tokens. Общий предел — 262144 токена.
401missing_api_key / invalid_api_keyПроверьте заголовок и полный активный ключ.
402insufficient_balanceПополните баланс; не делайте автоматический retry.
403missing_canonical_vllm_scopeСоздайте актуальный inference key в Dashboard.
403account_disabledПроверьте состояние аккаунта.
413request_body_too_largeУменьшите JSON/base64 body; лимит deployment может меняться.
429rate limit / admission reasonПрочитайте Retry-After и повторите с backoff.
502upstream_error / upstream_stream_interruptedБезопасно повторите идемпотентный запрос с backoff.
503–504capacity / upstream unavailableПовторите позже с backoff; не переключайте model ID.

Request ID

Каждый response получает X-Request-ID; canonical responses также обычно содержат X-42GPU-Request-ID. Флаг -i показывает headers:

Terminal
curl -i -sS https://api.42gpu.ru/vllm/v1/chat/completions \
  -H "Authorization: Bearer $GPU42_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen3.5-397B-A17B-FP8",
    "messages": [{"role": "user", "content": "Привет"}],
    "max_tokens": 256
  }'
Для обращения в поддержку передайте время и timezone, endpoint, HTTP status, error code и request ID. Не передавайте API key, Authorization header, персональные данные, полный prompt или вложенные документы.

Retry

Автоматический retry уместен для 429 и временных 5xx. Соблюдайте Retry-After, добавляйте jitter и ограничивайте число попыток. 400, 401, 402 и 403 требуют исправления запроса или аккаунта.

retry.py
1import random
2import time
3import requests
4
5for attempt in range(5):
6 response = requests.post(url, headers=headers, json=payload, timeout=900)
7 if response.status_code not in {429, 502, 503, 504}:
8 response.raise_for_status()
9 break
10
11 retry_after = response.headers.get("Retry-After")
12 delay = float(retry_after) if retry_after else min(30, 2 ** attempt + random.random())
13 time.sleep(delay)
При streaming transport может завершиться после части ответа. Обрабатывайте event с upstream_stream_interrupted и финальный [DONE]; перед повтором решите, допустим ли дублированный пользовательский эффект.