API справочник

Интегрирайте enuchat в системите си, използвайки Tenant API. Управлявайте разговори, изпращайте съобщения и достъпвайте данни за фактуриране програмно.

Автентикация

Всички API заявки се автентикират с API ключ, изпратен в хедъра X-Api-Key.

Получаване на API ключ

  1. Отидете на Настройки → API ключове в панела за управление
  2. Кликнете Създай API ключ и му дайте име
  3. Копирайте ключа веднага — показва се само веднъж
  4. Съхранявайте го сигурно (променлива на средата, мениджър на тайни)

Правене на заявки

Включете ключа във всяка заявка:

curl -H "X-Api-Key: tak_your_key_here" \
     https://api.enuchat.com/api/v1/tenant-api/widgets

Всички отговори са JSON. Успешните отговори имат поле data. Грешките имат поле error с code и message.

Сигурност: API ключовете се хешират (SHA-256) в нашата база данни. Никога не съхраняваме необработения ключ. Третирайте ключа си като парола — не го включвайте в код и не го споделяйте публично.

Базов URL

https://api.enuchat.com/api/v1/tenant-api

Всички endpoint по-долу са относителни към този базов URL.

Endpoint

GET /widgets

Списък на всички уиджети за вашия акаунт.

Отговор

{'{'}
  "data": [
{'{'}
      "id": "019d19c6-7e0b-...",
      "name": "Main Website Chat",
      "isActive": true,
      "aiEnabled": true,
      "translationEnabled": true,
      "primaryColor": "#2563eb",
      "position": "bottom-right"
    }
  ]
}

GET /conversations

Списък на разговори, подредени по най-скорошно съобщение.

Параметри на заявката

ПараметърТипОписание
statusstringФилтър по статус: open, pending, closed
widgetIdstringФилтър по UUID на уиджет
limitintegerМакс. резултати (по подразбиране 20, максимум 100)
offsetintegerПропусни N резултата

Пример

curl -H "X-Api-Key: tak_..." \
     "https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"

Отговор

{'{'}
  "data": [
{'{'}
      "id": "019d6724-000e-...",
      "widgetId": "019d19c6-7e0b-...",
      "visitorId": "v-abc123",
      "visitorName": "John",
      "visitorEmail": "john{'@'}example.com",
      "visitorLanguage": "en",
      "status": "open",
      "assignedTo": null,
      "lastMessageAt": "2026-04-11T14:30:00+00:00",
      "startedAt": "2026-04-11T14:25:00+00:00"
    }
  ]
}

GET /conversations/{'{'}id}

Получи разговор с всички съобщения.

Параметри на заявката

ПараметърТипОписание
limitintegerМакс. съобщения (по подразбиране 50, максимум 200)

Отговор

{'{'}
  "data": {'{'}
    "id": "019d6724-000e-...",
    "visitorLanguage": "en",
    "status": "open",
    "messages": [
{'{'}
        "id": "019d6724-1234-...",
        "role": "visitor",
        "content": "Hello, how much does it cost?",
        "contentLanguage": "en",
        "translatedContent": "Cześć, ile to kosztuje?",
        "translatedLanguage": "pl",
        "isAutoReply": false,
        "createdAt": "2026-04-11T14:25:30+00:00"
      },
{'{'}
        "id": "019d6724-5678-...",
        "role": "ai",
        "content": "Our plans start at €19/month...",
        "isAutoReply": true,
        "createdAt": "2026-04-11T14:25:32+00:00"
      }
    ]
  }
}

POST /conversations/{'{'}id}/messages

Изпрати съобщение до разговор. Съобщението ще бъде доставено на посетителя в реално време чрез чат уиджета.

Тяло на заявката

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
ПолеТипОписание
contentstringЗадължително. Текстът на съобщението.
rolestringsystem (по подразбиране) или operator

Отговор (201 Created)

{'{'}
  "data": {'{'}
    "id": "019d6725-abcd-...",
    "role": "system",
    "content": "Thanks for reaching out!",
    "createdAt": "2026-04-11T14:35:00+00:00"
  }
}

PATCH /conversations/{'{'}id}

Актуализирай статуса или назначението на разговор.

Тяло на заявката

{'{'}
  "status": "closed"
}
ПолеТипОписание
statusstringopen, pending или closed
assignedTostring|nullUUID на оператор за назначаване или null за премахване

GET /billing/balance

Получи текущия си план и баланс на кредити.

Отговор

{'{'}
  "data": {'{'}
    "plan": "pro",
    "creditBalance": 4500000,
    "totalCreditsAdded": 10000000
  }
}

Обработка на грешки

Грешките връщат HTTP статус код, различен от 2xx, с JSON тяло:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
HTTP статусЗначение
401Невалиден, изтекъл или липсващ API ключ
400Невалидно тяло на заявка или параметри
404Ресурсът не е намерен (или принадлежи на друг акаунт)
500Сървърна грешка

Често срещани случаи на употреба

CRM интеграция

Проверявайте периодично за нови разговори и синхронизирайте данните на посетителите (име, имейл, език) с вашия CRM. Използвайте ID на разговора като външна референция.

Автоматизирани последващи съобщения

След приключване на разговор, изпратете последващо съобщение чрез API: "Благодарим ви за чата! Има ли нещо друго, с което можем да помогнем?"

Алтернатива на webhook

Докато изходящите webhook не са налични, проверявайте периодично endpoint за разговори, за да засечете нови съобщения или промени в статуса.

Масови операции

Затваряне на всички разговори по-стари от 7 дни, назначаване на разговори на оператори на базата на външна логика или експортиране на история на разговори за анализ.

Лимити на заявки

API позволява до 60 заявки в минута на API ключ. Ако надвишите този лимит, ще получите отговор 429 Too Many Requests. Изчакайте и опитайте отново с експоненциално отлагане.

Готови ли сте да интегрирате?

Създайте безплатен акаунт и генерирайте API ключ за минути.

Започнете безплатно