API referenca
Integrišite enuchat u svoje sisteme koristeći Tenant API. Upravljajte razgovorima, šaljite poruke i pristupajte podacima o naplati programski.
Autentifikacija
Svi API zahtjevi se autentifikuju koristeći API ključ poslan u X-Api-Key zaglavlju.
Dobijanje vašeg API ključa
- Idite na Postavke → API ključevi u svom dashboardu
- Kliknite Kreiraj API ključ i dajte mu ime
- Odmah kopirajte ključ — prikazuje se samo jednom
- Pohranite ga sigurno (varijabla okruženja, menadžer tajni)
Slanje zahtjeva
Uključite ključ u svaki zahtjev:
curl -H "X-Api-Key: tak_your_key_here" \
https://api.enuchat.com/api/v1/tenant-api/widgetsSvi odgovori su JSON. Uspješni odgovori imaju data polje. Greške imaju error polje sa code i message.
Sigurnost: API ključevi su heširani (SHA-256) u našoj bazi podataka. Nikada ne čuvamo sirovi ključ. Tretirajte svoj ključ kao lozinku — ne commitujte ga u kod niti dijelite javno.
Osnovni URL
https://api.enuchat.com/api/v1/tenant-apiSvi endpointi ispod su relativni u odnosu na ovaj osnovni URL.
Endpointi
GET /widgets
Lista svih widgeta za vaš nalog.
Odgovor
{'{'}
"data": [
{'{'}
"id": "019d19c6-7e0b-...",
"name": "Main Website Chat",
"isActive": true,
"aiEnabled": true,
"translationEnabled": true,
"primaryColor": "#2563eb",
"position": "bottom-right"
}
]
}GET /conversations
Lista razgovora, poredana po najnovijoj poruci.
Query parametri
| Parametar | Tip | Opis |
|---|---|---|
status | string | Filtriraj po statusu: open, pending, closed |
widgetId | string | Filtriraj po UUID widgeta |
limit | integer | Maksimalni rezultati (zadano 20, max 100) |
offset | integer | Preskoči N rezultata |
Primjer
curl -H "X-Api-Key: tak_..." \
"https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"Odgovor
{'{'}
"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}
Dobijte razgovor sa svim porukama.
Query parametri
| Parametar | Tip | Opis |
|---|---|---|
limit | integer | Maksimalno poruka (zadano 50, max 200) |
Odgovor
{'{'}
"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
Pošalji poruku u razgovor. Poruka će biti isporučena posjetitelju u realnom vremenu putem chat widgeta.
Tijelo zahtjeva
{'{'}
"content": "Thanks for reaching out! We'll process your request.",
"role": "system"
}| Polje | Tip | Opis |
|---|---|---|
content | string | Obavezno. Tekst poruke. |
role | string | system (zadano) ili operator |
Odgovor (201 Created)
{'{'}
"data": {'{'}
"id": "019d6725-abcd-...",
"role": "system",
"content": "Thanks for reaching out!",
"createdAt": "2026-04-11T14:35:00+00:00"
}
}PATCH /conversations/{'{'}id}
Ažuriraj status ili dodjelu razgovora.
Tijelo zahtjeva
{'{'}
"status": "closed"
}| Polje | Tip | Opis |
|---|---|---|
status | string | open, pending, ili closed |
assignedTo | string|null | UUID operatera za dodjelu, ili null za poništavanje dodjele |
GET /billing/balance
Dobijte svoj trenutni plan i stanje kredita.
Odgovor
{'{'}
"data": {'{'}
"plan": "pro",
"creditBalance": 4500000,
"totalCreditsAdded": 10000000
}
}Rukovanje greškama
Greške vraćaju ne-2xx statusni kod sa JSON tijelom:
{'{'}
"error": {'{'}
"code": "NOT_FOUND",
"message": "Conversation not found."
}
}| HTTP status | Značenje |
|---|---|
401 | Nevažeći, istekao ili nedostajući API ključ |
400 | Nevažeće tijelo zahtjeva ili parametri |
404 | Resurs nije pronađen (ili pripada drugom tenantu) |
500 | Greška servera |
Uobičajeni slučajevi upotrebe
CRM integracija
Pollujte nove razgovore i sinhronizujte podatke o posjetitelju (ime, email, jezik) sa svojim CRM-om. Koristite ID razgovora kao vanjsku referencu.
Automatizovana praćenja
Nakon što je razgovor zatvoren, pošaljite poruku praćenja putem API-a: "Hvala na razgovoru! Ima li još nešto sa čim možemo pomoći?"
Alternativa webhookovima
Dok izlazni webhookovi ne budu dostupni, periodično pollujte endpoint razgovora da detektujete nove poruke ili promjene statusa.
Masovne operacije
Zatvorite sve razgovore starije od 7 dana, dodijelite razgovore operaterima na osnovu vanjske logike ili izvezite historiju razgovora za analitiku.
Ograničenja stope
API dozvoljava do 60 zahtjeva u minuti po API ključu. Ako premašite ovaj limit, primit ćete 429 Too Many Requests odgovor. Sačekajte i pokušajte ponovo sa eksponencijalnim backoffom.
Spremni za integraciju?
Kreirajte svoj besplatan nalog i generišite API ključ za nekoliko minuta.
Započnite besplatno