API reference
Integrujte enuchat do svých systémů pomocí Tenant API. Spravujte konverzace, odesílejte zprávy a přistupujte k fakturačním datům programově.
Autentizace
Všechny API požadavky jsou autentizovány pomocí API klíče odeslaného v hlavičce X-Api-Key.
Získání API klíče
- Přejděte do Nastavení → API klíče v panelu
- Klikněte na Vytvořit API klíč a pojmenujte jej
- Okamžitě zkopírujte klíč — zobrazí se pouze jednou
- Uložte jej bezpečně (proměnná prostředí, správce tajných klíčů)
Provádění požadavků
Zahrňte klíč do každého požadavku:
curl -H "X-Api-Key: tak_your_key_here" \
https://api.enuchat.com/api/v1/tenant-api/widgetsVšechny odpovědi jsou JSON. Úspěšné odpovědi mají pole data. Chyby mají pole error s code a message.
Bezpečnost: API klíče jsou hashovány (SHA-256) v naší databázi. Nikdy neukládáme surový klíč. Zacházejte s klíčem jako s heslem — necommitujte ho do kódu ani ho veřejně nesdílejte.
Základní URL
https://api.enuchat.com/api/v1/tenant-apiVšechny endpointy níže jsou relativní k této základní URL.
Endpointy
GET /widgets
Výpis všech widgetů vašeho účtu.
Odpověď
{'{'}
"data": [
{'{'}
"id": "019d19c6-7e0b-...",
"name": "Main Website Chat",
"isActive": true,
"aiEnabled": true,
"translationEnabled": true,
"primaryColor": "#2563eb",
"position": "bottom-right"
}
]
}GET /conversations
Výpis konverzací, seřazených podle nejnovější zprávy.
Query parametry
| Parametr | Typ | Popis |
|---|---|---|
status | string | Filtr podle stavu: open, pending, closed |
widgetId | string | Filtr podle UUID widgetu |
limit | integer | Max výsledků (výchozí 20, max 100) |
offset | integer | Přeskočit N výsledků |
Příklad
curl -H "X-Api-Key: tak_..." \
"https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"Odpověď
{'{'}
"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}
Získání konverzace se všemi zprávami.
Query parametry
| Parametr | Typ | Popis |
|---|---|---|
limit | integer | Max zpráv (výchozí 50, max 200) |
Odpověď
{'{'}
"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
Odeslání zprávy do konverzace. Zpráva bude doručena návštěvníkovi v reálném čase přes chatovací widget.
Tělo požadavku
{'{'}
"content": "Thanks for reaching out! We'll process your request.",
"role": "system"
}| Pole | Typ | Popis |
|---|---|---|
content | string | Povinné. Text zprávy. |
role | string | system (výchozí) nebo operator |
Odpověď (201 Created)
{'{'}
"data": {'{'}
"id": "019d6725-abcd-...",
"role": "system",
"content": "Thanks for reaching out!",
"createdAt": "2026-04-11T14:35:00+00:00"
}
}PATCH /conversations/{'{'}id}
Aktualizace stavu konverzace nebo přiřazení.
Tělo požadavku
{'{'}
"status": "closed"
}| Pole | Typ | Popis |
|---|---|---|
status | string | open, pending nebo closed |
assignedTo | string|null | UUID operátora k přiřazení, nebo null pro zrušení přiřazení |
GET /billing/balance
Získání aktuálního tarifu a zůstatku kreditů.
Odpověď
{'{'}
"data": {'{'}
"plan": "pro",
"creditBalance": 4500000,
"totalCreditsAdded": 10000000
}
}Zpracování chyb
Chyby vrací non-2xx stavový kód s JSON tělem:
{'{'}
"error": {'{'}
"code": "NOT_FOUND",
"message": "Conversation not found."
}
}| HTTP Status | Význam |
|---|---|
401 | Neplatný, expirovaný nebo chybějící API klíč |
400 | Neplatné tělo požadavku nebo parametry |
404 | Zdroj nebyl nalezen (nebo patří jinému tenantovi) |
500 | Chyba serveru |
Běžné případy použití
CRM integrace
Periodicky dotazujte nové konverzace a synchronizujte data návštěvníků (jméno, e-mail, jazyk) do svého CRM. Použijte ID konverzace jako externí referenci.
Automatické follow-upy
Po uzavření konverzace odešlete follow-up zprávu přes API: "Děkujeme za chat! Můžeme vám ještě s něčím pomoci?"
Alternativa k webhook
Dokud nebudou dostupné odchozí webhooky, periodicky dotazujte endpoint konverzací pro detekci nových zpráv nebo změn stavu.
Hromadné operace
Uzavřete všechny konverzace starší než 7 dní, přiřaďte konverzace operátorům na základě externí logiky nebo exportujte historii konverzací pro analytiku.
Rate limity
API povoluje až 60 požadavků za minutu na API klíč. Pokud tento limit překročíte, obdržíte odpověď 429 Too Many Requests. Počkejte a zkuste to znovu s exponenciálním backoffem.