Chat API reference
Send a visitor message to your workspace AI and receive a ticket you can follow in realtime. The Chat API is available on the Business plan; your API key lives under Settings -> API access.
Authentication
Every request is authenticated with your workspace API key, sent in the X-API-Key header (or an api_key parameter). Keys look like ck_live_.... Treat the key like a password - anyone holding it can send messages billed to your workspace. Rotate it any time from Settings -> API access; the previous key stops working immediately.
Send a message
POST https://chatixy.com/api/v1/chat
curl https://chatixy.com/api/v1/chat \ -H "X-API-Key: ck_live_YOUR_KEY" \ -F "message=How do I reset my password?"
Parameters:
message(string) - the visitor message. Required unlessfilesare attached.ticket_id(string, optional) - continue an existing conversation. Omit to start a new one.visitor_email/visitor_name(string, optional) - attach contact details to the ticket.files(multipart, optional) - visitor attachments. Requires a plan with file uploads.
Response
The call returns 202 Accepted as soon as the message is stored; the AI reply is generated asynchronously.
{
"status": { "code": 202, "message": "Message received and being processed" },
"data": {
"ticket_id": 1234,
"ticket_number": "T-1234",
"id": "<visitor_hash>",
"processing": true
}
}Pass data.ticket_id back as ticket_id on the next call to keep the conversation going. To receive the AI reply, subscribe over WebSocket (ActionCable) to the channel keyed by data.id - the same visitor hash the embedded widget uses.
Read conversations
Pull tickets and their messages with the same X-API-Key. Every read endpoint is scoped to your workspace and available on the Business plan.
GET /api/v1/chat/tickets- list tickets, newest first. Query params:status,limit(max 100),offset. Returnsticketsandpagination.GET /api/v1/chat/tickets/:id- a single ticket.GET /api/v1/chat/tickets/:id/messages- a ticket's messages in order, each withrole,contentandattachments.
curl https://chatixy.com/api/v1/chat/tickets \ -H "X-API-Key: ck_live_YOUR_KEY"
Rate limits & quota
Requests are throttled to roughly 20 per minute per key (and per IP). Each generated reply also draws from your plan's monthly message allowance; once it is exhausted the endpoint returns a 200 with data.limit_reached: true instead of generating a reply.
Errors
401- no API key supplied.404- the key does not match any workspace (e.g. after rotation).403plan_upgrade_required- the workspace is not on the Business plan.403- the subscription is inactive, or the request came from a domain not allowed by the widget's settings.422- the message is missing (and no files were attached).
Need a hand?
Questions about the API? Reach us at support@chatixy.com or through our contact page.