Referință API
Integrează enuchat în sistemele tale folosind API-ul Tenant. Gestionează conversațiile, trimite mesaje și accesează datele de facturare programatic.
Autentificare
Toate cererile API sunt autentificate folosind o cheie API trimisă în header-ul X-Api-Key.
Obținerea cheii API
- Mergi la Setări → Chei API în dashboard
- Fă click pe Creează cheie API și dă-i un nume
- Copiază cheia imediat — este afișată doar o dată
- Stoch-o în siguranță (variabilă de mediu, manager de secrete)
Efectuarea cererilor
Include cheia în fiecare cerere:
curl -H "X-Api-Key: tak_your_key_here" \
https://api.enuchat.com/api/v1/tenant-api/widgetsToate răspunsurile sunt JSON. Răspunsurile reușite au un câmp data. Erorile au un câmp error cu code și message.
Securitate: Cheile API sunt hashate (SHA-256) în baza noastră de date. Nu stocăm niciodată cheia brută. Tratează cheia ca pe o parolă — nu o commit-a în cod sau o partaja public.
URL de bază
https://api.enuchat.com/api/v1/tenant-apiToate endpoint-urile de mai jos sunt relative la acest URL de bază.
Endpoint-uri
GET /widgets
Listează toate widget-urile din cont.
Răspuns
{'{'}
"data": [
{'{'}
"id": "019d19c6-7e0b-...",
"name": "Main Website Chat",
"isActive": true,
"aiEnabled": true,
"translationEnabled": true,
"primaryColor": "#2563eb",
"position": "bottom-right"
}
]
}GET /conversations
Listează conversațiile, ordonate după cel mai recent mesaj.
Parametri query
| Parametru | Tip | Descriere |
|---|---|---|
status | string | Filtrează după stare: open, pending, closed |
widgetId | string | Filtrează după UUID widget |
limit | integer | Rezultate maxime (implicit 20, max 100) |
offset | integer | Omite N rezultate |
Exemplu
curl -H "X-Api-Key: tak_..." \
"https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"Răspuns
{'{'}
"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}
Obține o conversație cu toate mesajele.
Parametri query
| Parametru | Tip | Descriere |
|---|---|---|
limit | integer | Mesaje maxime (implicit 50, max 200) |
Răspuns
{'{'}
"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
Trimite un mesaj unei conversații. Mesajul va fi livrat vizitatorului în timp real prin widget-ul de chat.
Corp cerere
{'{'}
"content": "Thanks for reaching out! We'll process your request.",
"role": "system"
}| Câmp | Tip | Descriere |
|---|---|---|
content | string | Obligatoriu. Textul mesajului. |
role | string | system (implicit) sau operator |
Răspuns (201 Created)
{'{'}
"data": {'{'}
"id": "019d6725-abcd-...",
"role": "system",
"content": "Thanks for reaching out!",
"createdAt": "2026-04-11T14:35:00+00:00"
}
}PATCH /conversations/{'{'}id}
Actualizează starea sau atribuirea unei conversații.
Corp cerere
{'{'}
"status": "closed"
}| Câmp | Tip | Descriere |
|---|---|---|
status | string | open, pending, sau closed |
assignedTo | string|null | UUID operator de atribuit, sau null pentru dezalocare |
GET /billing/balance
Obține planul curent și soldul de credite.
Răspuns
{'{'}
"data": {'{'}
"plan": "pro",
"creditBalance": 4500000,
"totalCreditsAdded": 10000000
}
}Gestionarea erorilor
Erorile returnează un cod de stare non-2xx cu un corp JSON:
{'{'}
"error": {'{'}
"code": "NOT_FOUND",
"message": "Conversation not found."
}
}| Stare HTTP | Semnificație |
|---|---|
401 | Cheie API invalidă, expirată sau lipsă |
400 | Corp cerere sau parametri invalizi |
404 | Resursă negăsită (sau aparține altui tenant) |
500 | Eroare server |
Cazuri comune de utilizare
Integrare CRM
Fă polling pentru noi conversații și sincronizează datele vizitatorilor (nume, email, limbă) la CRM. Folosește ID-ul conversației ca referință externă.
Follow-up-uri automate
După ce o conversație este închisă, trimite un mesaj de follow-up prin API: «Mulțumim pentru discuție! Mai este ceva cu care putem ajuta?»
Alternativă la webhook
Până când webhook-urile outgoing sunt disponibile, fă polling la endpoint-ul conversațiilor periodic pentru a detecta mesaje noi sau schimbări de stare.
Operații în masă
Închide toate conversațiile mai vechi de 7 zile, atribuie conversații operatorilor pe baza logicii externe sau exportă istoricul conversațiilor pentru analize.
Limite de rată
API-ul permite până la 60 de cereri pe minut per cheie API. Dacă depășești această limită, vei primi un răspuns 429 Too Many Requests. Așteaptă și reîncearcă cu backoff exponențial.
Gata să integrezi?
Creează-ți contul gratuit și generează o cheie API în câteva minute.
Începe gratuit