Кодове за грешки

Разбиране на API отговорите при грешка и как да ги обработвате.

Преглед

API-то връща стандартизирани отговори при грешка със специфични кодове на грешка, за да ви помогне да идентифицирате и разрешите проблемите бързо.

Формат на отговор при грешка

Всички отговори при грешка следват тази структура:

{
  "status": "error",
  "error": {
    "code": "AUTH_1001",
    "message": "Missing authentication credentials",
    "details": "Both 'username' and 'password' fields are required",
    "timestamp": "2025-12-22T10:30:00Z"
  }
}
ПолеТипОписание
statusstringВинаги "error" за отговори при грешка
error.codestringУникален идентификатор на грешката
error.messagestringЧетимо съобщение за грешката
error.detailsstringДопълнителен контекст (по избор)
error.timestampstringISO 8601 времеви печат

Грешки при удостоверяване (1000-1099)

Грешки, свързани с удостоверителните данни и удостоверяването.

КодHTTPСъобщениеРешение
AUTH_1001 401 Липсващи удостоверителни данни Включете както потребителско име, така и парола в заявката
AUTH_1002 401 Невалидно потребителско име или парола Проверете дали удостоверителните данни са правилни
AUTH_1003 403 Акаунтът е временно заключен Изчакайте преди да опитате отново или се свържете с поддръжката

Грешки на квотата (1100-1199)

Грешки, свързани с API квотата и лимитите на заявките.

КодHTTPСъобщениеРешение
QUOTA_1101 403 Недостатъчна API квота Закупете повече кредити или проверете квотата
QUOTA_1102 429 API квотата е превишена Изчакайте за нулиране на квотата или надстройте плана

Грешки при валидация (2000-2099)

Грешки, свързани с валидацията на заявките и входните данни.

КодHTTPСъобщениеРешение
VAL_2001 400 Не е качен файл Включете файл в заявката
VAL_2002 400 Невалиден формат на файла Използвайте поддържани формати: PDF, PNG, JPG, WEBP
VAL_2003 400 Не са разрешени няколко PDF файла Качете един PDF или няколко изображения
VAL_2004 400 PDF и изображения не могат да се смесват Качете или PDF, или изображения, не и двете
VAL_2005 400 Неподдържан езиков код Използвайте поддържан езиков код

Грешки при обработка (3000-3099)

Грешки по време на обработката на документа и AI анализа.

КодHTTPСъобщениеРешение
PROC_3001 500 Обработката на документа е неуспешна Проверете качеството на изображението, опитайте отново
PROC_3002 500 Извличането на метаданните е неуспешно Уверете се, че документът съдържа четим текст
PROC_3003 500 Извличането на параметри е неуспешно Проверете дали форматът на кръвния тест е разпознаваем
PROC_3004 500 Генерирането на интерпретация е неуспешно Опитайте отново
PROC_3006 504 Изтичане на времето за обработка Намалете размера на файла или разделете на няколко заявки
PROC_3007 500 Анализът е неуспешен след повторни опити Изчакайте и опитайте отново или се свържете с поддръжката

Сървърни грешки (5000-5099)

Вътрешни сървърни грешки и проблеми с наличността на услугата.

КодHTTPСъобщениеРешение
SRV_5001 500 Вътрешна сървърна грешка Опитайте заявката отново, свържете се с поддръжката, ако е постоянна
SRV_5002 503 Услугата е временно недостъпна Изчакайте и опитайте отново с експоненциално забавяне

Най-добри практики за обработка на грешки

Препоръки
  1. Винаги проверявайте полето status — Успешните отговори имат "status": "success"
  2. Реализирайте логика за повторен опит за временни грешки (5xx) с експоненциално забавяне
  3. Записвайте кодовете на грешки за отстраняване на грешки и мониторинг
  4. Показвайте потребителски приятелски съобщения въз основа на кодовете на грешки
  5. Използвайте sandbox крайни точки за тестване на обработката на грешки

Пример за обработка на грешки (JavaScript)

async function analyzeBloodTest(file) {
  try {
    const response = await fetch(API_URL, {
      method: 'POST',
      body: formData
    });

    const data = await response.json();

    if (data.status === 'error') {
      const errorCode = data.error.code;

      switch (true) {
        case errorCode.startsWith('AUTH_'):
          throw new Error('Удостоверяването е неуспешно. Моля, проверете удостоверителните данни.');
        case errorCode.startsWith('QUOTA_'):
          throw new Error('Квотата е превишена. Моля, надстройте плана си.');
        case errorCode.startsWith('VAL_'):
          throw new Error('Невалидна заявка: ' + data.error.message);
        case errorCode.startsWith('PROC_'):
          // Повторен опит за грешки при обработка
          return retryRequest(file);
        default:
          throw new Error('Възникна грешка. Моля, опитайте отново.');
      }
    }

    return data.data;
  } catch (error) {
    console.error('API грешка:', error);
    throw error;
  }
}