Помилки використовують формат RFC 7807 application/problem+json — єдиний і машиночитний:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
{
"type": "https://docs.grem.capital/api/errors/validation",
"title": "validation",
"status": 400,
"detail": "totalArea (m2) is required",
"requestId": "req_…"
}
Завжди логуйте requestId — вказуйте його у зверненнях до підтримки для трасування виклику.
Коди статусів
| Статус | Значення | Що робити |
|---|---|---|
400 | Помилка валідації | Виправте тіло/параметри запиту за detail. |
401 | Невірний або відсутній ключ | Перевірте заголовок Authorization. |
402 | Недостатньо коштів або квоти | Поповніть баланс або підвищіть тариф. |
403 | Немає scope | У ключа немає області доступу для цього інструмента. |
404 | Не знайдено | Невірний шлях або ресурс не існує. |
409 | Конфлікт ідемпотентності | Запит із цим Idempotency-Key ще виконується. |
422 | Бізнес-правило | Запит коректний, але не може бути оброблений як є. |
429 | Перевищено ліміт | Зробіть паузу й повторіть — див. Ліміти. |
5xx | Помилка сервісу | Тимчасова; повторіть із backoff. |
Відхилений запит (4xx) не тарифікується — плата за виклик списується лише за успіху.
Обробка помилок
- Розгалужуйтеся за числовим HTTP-
status, а не за людиночитним текстомdetail. - Повторюйте
429та5xxз експоненційним backoff; не повторюйте4xx(окрім409— після завершення виконуваного запиту). - Деталі провайдерів у помилках ніколи не розкриваються — збій віддається як узагальнений
provider_error.