API Reference
I-integrate ang enuchat sa inyong mga sistema gamit ang Tenant API. Pamahalaan ang mga usapan, magpadala ng mga mensahe, at mag-access ng billing data nang programmatically.
Authentication
Ang lahat ng mga kahilingan sa API ay na-authenticate gamit ang isang API key na ipinadala sa X-Api-Key header.
Pagkuha ng inyong API key
- Pumunta sa Settings → API Keys sa inyong dashboard
- I-click ang Create API Key at bigyan ito ng pangalan
- Kopyahin ang key kaagad — ipinapakita lang ito minsan
- Iimbak ito nang ligtas (environment variable, secrets manager)
Paggawa ng mga request
Isama ang key sa bawat request:
curl -H "X-Api-Key: tak_your_key_here" \
https://api.enuchat.com/api/v1/tenant-api/widgetsAng lahat ng mga tugon ay JSON. Ang mga matagumpay na tugon ay may data field. Ang mga error ay may error field na may code at message.
Seguridad: Ang mga API key ay naka-hash (SHA-256) sa aming database. Hindi namin kailanman nag-iimbak ng raw key. Tratuhin ang inyong key tulad ng password — huwag i-commit sa code o ibahagi sa publiko.
Base URL
https://api.enuchat.com/api/v1/tenant-apiAng lahat ng mga endpoint sa ibaba ay relative sa base URL na ito.
Mga Endpoint
GET /widgets
Ilista ang lahat ng mga widget para sa inyong account.
Response
{'{'}
"data": [
{'{'}
"id": "019d19c6-7e0b-...",
"name": "Main Website Chat",
"isActive": true,
"aiEnabled": true,
"translationEnabled": true,
"primaryColor": "#2563eb",
"position": "bottom-right"
}
]
}GET /conversations
Ilista ang mga usapan, iniutos ayon sa pinakabagong mensahe.
Query Parameters
| Parameter | Type | Paglalarawan |
|---|---|---|
status | string | I-filter ayon sa status: open, pending, closed |
widgetId | string | I-filter ayon sa widget UUID |
limit | integer | Max na resulta (default 20, max 100) |
offset | integer | Laktawan ang N na resulta |
Halimbawa
curl -H "X-Api-Key: tak_..." \
"https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"Response
{'{'}
"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}
Kumuha ng usapan na may lahat ng mga mensahe.
Query Parameters
| Parameter | Type | Paglalarawan |
|---|---|---|
limit | integer | Max na mensahe (default 50, max 200) |
Response
{'{'}
"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
Magpadala ng mensahe sa isang usapan. Ang mensahe ay ihahatid sa bisita sa real-time sa pamamagitan ng chat widget.
Request Body
{'{'}
"content": "Thanks for reaching out! We'll process your request.",
"role": "system"
}| Field | Type | Paglalarawan |
|---|---|---|
content | string | Kinakailangan. Ang mensahe text. |
role | string | system (default) o operator |
Response (201 Created)
{'{'}
"data": {'{'}
"id": "019d6725-abcd-...",
"role": "system",
"content": "Thanks for reaching out!",
"createdAt": "2026-04-11T14:35:00+00:00"
}
}PATCH /conversations/{'{'}id}
I-update ang status o assignment ng isang usapan.
Request Body
{'{'}
"status": "closed"
}| Field | Type | Paglalarawan |
|---|---|---|
status | string | open, pending, o closed |
assignedTo | string|null | Operator UUID upang mag-assign, o null upang i-unassign |
GET /billing/balance
Kumuha ng inyong kasalukuyang plano at credit balance.
Response
{'{'}
"data": {'{'}
"plan": "pro",
"creditBalance": 4500000,
"totalCreditsAdded": 10000000
}
}Paghawak ng Error
Ang mga error ay nagbabalik ng isang non-2xx status code na may JSON body:
{'{'}
"error": {'{'}
"code": "NOT_FOUND",
"message": "Conversation not found."
}
}| HTTP Status | Kahulugan |
|---|---|
401 | Invalid, expired, o nawawalang API key |
400 | Invalid na request body o mga parameter |
404 | Hindi natagpuan ang resource (o nabibilang sa ibang tenant) |
500 | Server error |
Mga Karaniwang Paggamit
CRM Integration
Mag-poll para sa mga bagong usapan at i-sync ang visitor data (pangalan, email, wika) sa inyong CRM. Gamitin ang conversation ID bilang external reference.
Automated Follow-ups
Pagkatapos na sarado ang usapan, magpadala ng follow-up message sa pamamagitan ng API: "Salamat sa pakikipag-chat! Mayroon pa ba kayong kailangan?"
Webhook Alternative
Hanggang sa available ang mga outgoing webhook, mag-poll sa conversations endpoint nang pana-panahon upang matukoy ang mga bagong mensahe o pagbabago ng status.
Bulk Operations
Isara ang lahat ng mga usapan na mas luma sa 7 araw, mag-assign ng mga usapan sa mga operator batay sa panlabas na lohika, o mag-export ng kasaysayan ng usapan para sa analytics.
Rate Limits
Ang API ay nagpapahintulot ng hanggang 60 requests bawat minuto bawat API key. Kung lumagpas kayo sa limitasyong ito, makakatanggap kayo ng 429 Too Many Requests response. Maghintay at muling subukan na may exponential backoff.
Handa na bang mag-integrate?
Gumawa ng inyong libreng account at bumuo ng API key sa ilang minuto.
Magsimula nang Libre