Коды ошибок

Полная таблица ошибок API и способы решения

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

json
Скачать
{
  "error": {
    "type": "authentication_error",
    "code": "invalid_api_key",
    "message": "Invalid or inactive API key",
    "request_id": "req_abc123"
  }
}

Таблица ошибок

HTTPTypeCodeОписаниеРешение
400validation_erroridempotency_key_requiredНе передан Idempotency-KeyДобавьте заголовок
400validation_errorinvalid_parameterНевалидный параметрПроверьте формат данных
401authentication_errorinvalid_api_keyНеверный API ключПроверьте ключ в дашборде
401authentication_errorinvalid_credentialsНеверный email/парольПроверьте данные
401authentication_errortoken_expiredJWT токен истёкОбновите через /auth/refresh
401authentication_errortoken_revokedТокен отозванПолучите новый через login
401authentication_errorinvalid_refresh_tokenНевалидный refresh tokenПовторите вход
403authentication_errorinsufficient_permissionsНет доступаИспользуйте admin токен
404api_errorclient_not_foundКлиент не найденПроверьте ID
404api_errorwebhook_not_foundWebhook не найденПроверьте ID
409validation_erroremail_takenEmail уже зарегистрированИспользуйте другой email
409api_erroridempotency_conflictЗапрос уже обрабатываетсяПодождите завершения
429rate_limit_errorrate_limit_exceededПревышен лимит запросовПодождите до X-RateLimit-Reset
500api_errorinternal_errorВнутренняя ошибкаПовторите позже
503proxy_errorsession_expiredСессия Kaspi истеклаОбратитесь в поддержку
503proxy_errorcircuit_openПрокси временно недоступенПовторите через 30 секунд
503proxy_errorproxy_unreachableПрокси не отвечаетПовторите позже
504proxy_errorproxy_timeoutТаймаут проксиПовторите позже

Обработка ошибок

python
Скачать
try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
except requests.HTTPError as e:
    error = e.response.json().get("error", {})
    if error.get("code") == "rate_limit_exceeded":
        reset = int(e.response.headers.get("X-RateLimit-Reset", 0))
        time.sleep(max(0, reset - time.time()))
    elif error.get("code") == "token_expired":
        refresh_tokens()
        retry()