Справка
Ошибки и диагностика
Сначала сохраните 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"
}
}Коды
| HTTP | error.code | Действие |
|---|---|---|
| 400 | invalid_json / invalid_request | Проверьте JSON object, обязательные model/messages и типы полей. |
| 400 | context_length_exceeded | Сократите input и/или max_tokens. Общий предел — 262144 токена. |
| 401 | missing_api_key / invalid_api_key | Проверьте заголовок и полный активный ключ. |
| 402 | insufficient_balance | Пополните баланс; не делайте автоматический retry. |
| 403 | missing_canonical_vllm_scope | Создайте актуальный inference key в Dashboard. |
| 403 | account_disabled | Проверьте состояние аккаунта. |
| 413 | request_body_too_large | Уменьшите JSON/base64 body; лимит deployment может меняться. |
| 429 | rate limit / admission reason | Прочитайте Retry-After и повторите с backoff. |
| 502 | upstream_error / upstream_stream_interrupted | Безопасно повторите идемпотентный запрос с backoff. |
| 503–504 | capacity / 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 random2import time3import requests45for 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 break1011 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)upstream_stream_interrupted и финальный [DONE]; перед повтором решите, допустим ли дублированный пользовательский эффект.