Обработка ошибок

Коды ошибок API и рекомендации по обработке

Формат ошибок

Все ошибки API возвращаются в едином формате:

Формат ошибки
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Описание ошибки на английском языке"
  }
}

При ошибках валидации дополнительно возвращается массив errors с указанием конкретных полей:

Ошибка валидации
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request body"
  },
  "errors": [
    { "field": "url", "message": "Invalid url: Invalid url" },
    { "field": "steps", "message": "Required" }
  ]
}

Коды ошибок

Клиентские ошибки (4xx)

HTTPКодОписаниеЧто делать
400INVALID_JSONНевалидный JSON в теле запросаПроверьте формат JSON
400VALIDATION_ERRORОшибка валидации полейСмотрите массив errors
400INVALID_TASK_IDНевалидный формат ID задачиИспользуйте UUID из ответа при создании
400INVALID_CATEGORYНевалидная категория шагаПроверьте допустимые значения через GET /steps
400INVALID_INPUT_TYPEНевалидный тип входных данныхПроверьте допустимые значения через GET /steps
401MISSING_API_KEYОтсутствует заголовок AuthorizationДобавьте заголовок Authorization: Bearer sk-...
401INVALID_AUTH_FORMATНеверный формат заголовка (нет префикса Bearer)Используйте формат Bearer <ключ>
401INVALID_API_KEYAPI-ключ невалиденПроверьте правильность ключа в Dashboard
401API_KEY_INACTIVEAPI-ключ деактивированАктивируйте ключ или создайте новый в Dashboard
401API_KEY_EXPIREDСрок действия ключа истёкСоздайте новый ключ в Dashboard
402INSUFFICIENT_BALANCEНедостаточно средств на балансеПополните баланс
404NOT_FOUNDРесурс не найденПроверьте ID задачи или пайплайна
404TASK_NOT_FOUNDЗадача не найденаПроверьте task ID
429RATE_LIMIT_EXCEEDEDПревышен лимит запросовПодождите и повторите (подробнее)

Серверные ошибки (5xx)

HTTPКодОписаниеЧто делать
500INTERNAL_ERRORВнутренняя ошибка сервераПовторите запрос. Если ошибка повторяется — обратитесь в поддержку
502UPSTREAM_ERRORСервер обработки недоступенПовторите через 30-60 секунд

Обработка ошибок в коде

Всегда проверяйте поле success в ответе. При success: false ответ содержит объект error с кодом и описанием.

Рекомендуемый подход

errorHandling.js
async function createTask(data) {
  const response = await fetch("https://premiss.ru/api/v1/tasks", {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(data)
  });
 
  const result = await response.json();
 
  if (!result.success) {
    switch (result.error.code) {
      case "VALIDATION_ERROR":
        // Ошибки валидации — покажите пользователю
        console.error("Ошибки:", result.errors);
        break;
 
      case "INSUFFICIENT_BALANCE":
        // Недостаточно средств — перенаправьте на оплату
        console.error("Пополните баланс");
        break;
 
      case "RATE_LIMIT_EXCEEDED":
        // Превышен лимит — подождите и повторите
        const retryAfter = response.headers.get("Retry-After");
        console.log(`Ожидайте ${retryAfter} секунд`);
        break;
 
      case "MISSING_API_KEY":
      case "INVALID_AUTH_FORMAT":
      case "INVALID_API_KEY":
      case "API_KEY_INACTIVE":
      case "API_KEY_EXPIRED":
        // Проблема с ключом
        console.error("Проверьте API-ключ");
        break;
 
      default:
        // Другие ошибки
        console.error(`${result.error.code}: ${result.error.message}`);
    }
    return null;
  }
 
  return result.data;
}

TTL и истечение задач

Результаты задач хранятся ограниченное время (TTL). По умолчанию — 4 часа после завершения.

После истечения TTL:

  • Поле expired становится true
  • Поля input и output становятся null
  • Метаданные задачи (ID, статус, даты) остаются доступными
Задача с истёкшим TTL
{
  "success": true,
  "data": {
    "id": "1d2f3a4b-...",
    "status": "completed",
    "expired": true,
    "input": null,
    "output": null,
    "expires_at": "2026-02-13T14:30:00.000Z"
  }
}

Используйте webhooks для получения результатов сразу после завершения обработки, чтобы не зависеть от TTL. Параметр ttl при создании задачи позволяет задать время хранения от 0 до 24 часов.

На этой странице