HTTP-коды, формат ошибки, заголовки rate limit и квоты по тарифам.

Ошибки и лимиты

recv API использует стандартные HTTP-коды и единый формат JSON-ошибки.

HTTP-коды

КодЗначение
200OK.
201Создано (например, новый счет).
204Нет содержимого (успешное действие без тела).
400Bad request — отсутствует/некорректен параметр, неподдерживаемая сеть, счет нельзя отменить, или симуляция не-тестового счета.
401Unauthorized — отсутствует или неверный API-ключ.
403Forbidden — тариф не включает API, отсутствует scope, заблокированный workspace или симуляция live-ключом.
404Not found — ресурс не существует в вашем workspace.
409Conflict — Idempotency-Key повторно использован с другим телом или исходный запрос еще обрабатывается.
429Too many requests — превышен минутный лимит или месячная квота.
500Внутренняя ошибка сервера.

Тело ошибки

Каждая ошибка возвращает JSON-объект с единственным полем error:

{ "error": "invalid API key" }

В целях безопасности ответы 5xx возвращают обобщенное {"error": "internal server error"}, а детали логируются на сервере. Ответы 4xx отдают конкретное сообщение (валидация, авторизация, конфликт), например:

  • missing API key
  • invalid API key
  • API key scope invoices:write is required
  • current plan does not include recv Developer or recv Business API access
  • invalid base_amount_usd
  • only workspace-created invoices can be canceled
  • payment simulator is only available for test_ API keys
  • minute rate limit exceeded / monthly API quota exceeded

Заголовки rate limit

Каждый авторизованный ответ /v1 включает текущий минутный бюджет, а где у тарифа есть месячная квота — и месячный:

ЗаголовокОписание
X-RateLimit-Limit-MinuteРазрешено запросов в минуту на вашем тарифе.
X-RateLimit-Remaining-MinuteОсталось запросов в текущем минутном окне.
X-RateLimit-Limit-MonthМесячная квота запросов (если задана).
X-RateLimit-Remaining-MonthОсталось запросов в текущем календарном месяце (UTC).

Превышение минутного лимита или месячной квоты возвращает 429.

Квоты по тарифам

Лимиты API и бюджеты ретраев вебхуков задаются активным тарифом workspace. Тарифы Merchant и Trial не включают доступ к API.

ТарифRate limitМесячная квотаАктивных API-ключейРетраи вебхуков
Developer90 req/min50 00033
Business300 req/min200 000105

Обработка ошибок (Python)

import requests

resp = requests.get(
    "https://recv.money/v1/invoices/999999",
    headers={"X-API-Key": "YOUR_KEY"},
)

if resp.status_code == 404:
    print("Счет не найден.")
elif resp.status_code == 429:
    print("Превышен лимит/квота. Осталось в эту минуту:",
          resp.headers.get("X-RateLimit-Remaining-Minute"))
elif not resp.ok:
    print("Ошибка:", resp.json().get("error"))

Готовы принимать криптоплатежи?