Помилки
API використовує стандартні HTTP-коди стану та повертає структуровані відповіді з помилками.
Формат відповіді з помилкою
json
{
"success": false,
"error": {
"code": "error_code",
"message": "Human-readable description"
}
}HTTP-коди стану
| Код | Значення |
|---|---|
200 | Успіх |
401 | Не авторизовано — невалідний або відсутній API-ключ |
403 | Заборонено — недостатньо прав або доступ до сайту заборонено |
404 | Не знайдено — ресурс не існує або ви не маєте доступу |
405 | Метод не дозволено — невірний HTTP-метод для цього ендпоінту |
422 | Помилка валідації — невалідні вхідні дані |
429 | Ліміт вичерпано — забагато запитів |
500 | Внутрішня помилка — помилка на сервері |
Коди помилок
| Код | HTTP | Опис |
|---|---|---|
invalid_api_key | 401 | API-ключ відсутній, невалідний, прострочений або відкликаний |
scope_denied | 403 | API-ключ не має потрібного права доступу |
site_access_denied | 403 | API-ключ обмежений і не має доступу до цього сайту |
resource_not_found | 404 | Запитаний ресурс не знайдено |
method_not_allowed | 405 | HTTP-метод не підтримується для цього ендпоінту |
validation_error | 422 | Помилка валідації вхідних даних (деталі в повідомленні) |
rate_limit_exceeded | 429 | Ліміт запитів вичерпано для цього API-ключа |
internal_error | 500 | Непередбачена помилка сервера |
Обробка помилок
javascript
const response = await fetch('https://api.looma.chat/v1/leads', {
headers: { 'Authorization': 'Bearer lm_your_key' }
});
const data = await response.json();
if (!data.success) {
console.error(`Error: ${data.error.code} — ${data.error.message}`);
switch (response.status) {
case 401: // Повторна автентифікація або перевірка ключа
case 403: // Перевірте права або доступ до сайту
case 404: // Ресурс не існує
case 429: // Зачекайте та повторіть
const retryAfter = response.headers.get('Retry-After');
await new Promise(r => setTimeout(r, retryAfter * 1000));
break;
}
}
