Error Codes
Справочник кодов ошибок API.
HTTP Status Codes
| Код | Название | Описание |
|---|---|---|
| 200 | OK | Успешный запрос |
| 201 | Created | Ресурс успешно создан |
| 204 | No Content | Успешный запрос без содержимого |
| 400 | Bad Request | Неверный запрос |
| 401 | Unauthorized | Требуется аутентификация |
| 403 | Forbidden | Доступ запрещен |
| 404 | Not Found | Ресурс не найден |
| 422 | Unprocessable Entity | Ошибка валидации |
| 429 | Too Many Requests | Превышен лимит запросов |
| 500 | Internal Server Error | Внутренняя ошибка сервера |
API Error Responses
401 Unauthorized
{
"error": "API key is required",
"message": "Please provide a valid API key in the X-API-Key header"
}
Причина: Отсутствует заголовок X-API-Key.
Решение: Добавьте заголовок X-API-Key с вашим API ключом.
Причина: Неверный или отозванный API ключ.
Решение: Проверьте правильность API ключа или создайте новый.
422 Unprocessable Entity
{
"message": "The given data was invalid.",
"errors": {
"prices": ["The prices field is required."],
"prices.0.currency_id": ["The currency_id field is required."]
}
}
Причина: Ошибка валидации данных запроса.
Решение: Исправьте ошибки в данных запроса согласно сообщениям об ошибках.
404 Not Found
Причина: Запрашиваемый ресурс не найден.
Решение: Проверьте правильность ID ресурса.
429 Too Many Requests
Причина: Превышен лимит запросов.
Решение: Подождите и повторите запрос позже.
500 Internal Server Error
Причина: Внутренняя ошибка сервера.
Решение: Обратитесь в службу поддержки.
Обработка ошибок
JavaScript
try {
const response = await fetch('/api/creator-api/keys', {
headers: {
'X-API-Key': 'your_api_key'
}
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.message);
}
const data = await response.json();
} catch (error) {
console.error('API Error:', error.message);
}
Python
import requests
try:
response = requests.get(
'https://api.mesilat.com/creator-api/keys',
headers={'X-API-Key': 'your_api_key'}
)
response.raise_for_status()
data = response.json()
except requests.exceptions.HTTPError as e:
if e.response.status_code == 401:
print("Invalid API key")
elif e.response.status_code == 422:
print("Validation error:", e.response.json())
else:
print("API Error:", e.response.text)
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.mesilat.com/creator-api/keys');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: your_api_key'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
$error = json_decode($response, true);
throw new Exception($error['message']);
}
$data = json_decode($response, true);
?>
Retry Logic
При получении ошибок 429 или 500 рекомендуется реализовать повторные попытки:
async function apiCall(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || 60;
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
continue;
}
if (response.status >= 500) {
await new Promise(resolve => setTimeout(resolve, Math.pow(2, i) * 1000));
continue;
}
return response;
} catch (error) {
if (i === maxRetries - 1) throw error;
await new Promise(resolve => setTimeout(resolve, Math.pow(2, i) * 1000));
}
}
}