Перейти к содержанию

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 ключом.

{
  "error": "Invalid API key",
  "message": "The provided API key is invalid or has been revoked"
}

Причина: Неверный или отозванный 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

{
  "message": "No query results for model [Modules\\Product\\Entities\\ProductPrice] 123"
}

Причина: Запрашиваемый ресурс не найден.

Решение: Проверьте правильность ID ресурса.

429 Too Many Requests

{
  "error": "Rate limit exceeded",
  "message": "Too many requests. Please try again later."
}

Причина: Превышен лимит запросов.

Решение: Подождите и повторите запрос позже.

500 Internal Server Error

{
  "message": "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));
    }
  }
}