Референца за 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) во нашата база на податоци. Никогаш не го чуваме сировиот клуч. Третирајте го вашиот клуч како лозинка — не го commit-ирајте во код или споделувајте јавно.

Основен 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
  }
}

Справување со грешки

Грешките враќаат не-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 одговор. Почекајте и обидете се повторно со експоненцијален backoff.

Подготвени за интеграција?

Креирајте ја вашата бесплатна сметка и генерирајте API клуч за неколку минути.

Започни бесплатно