Presence & Typing
Real-time presence indicators: typing, recording, and chat status.
Overview
Presence events are best-effort, high-frequency metadata signals. Treat them as transient UI hints, not as durable state.
Report Presence (Company → Customer)
The operator reports presence via Socket.io. The customer's chat shows "typing..." or "recording..." indicators.
cURL
curl -X POST https://api.ixblix.app/api/conversations/{conversationId}/presence \
-H "X-API-Key: smci_xxxx" \
-H "Content-Type: application/json" \
-d '{ "type": "typing" }' Valid types: typing, recording, stopped.
Report Presence (Customer → Operator)
The customer's chat app reports presence. The operator receives webhooks.
cURL
curl -X POST https://api.ixblix.app/api/conversations/{token}/presence \
-H "Content-Type: application/json" \
-d '{ "type": "typing" }' Uses the conversation token (deeplink token) instead of API key.
Webhook Events
| Event | Description |
|---|---|
TYPING | Customer started typing. |
STOPPED_TYPING | Customer stopped typing without sending. |
RECORDING | Customer is recording an audio message. |
CHAT_CLOSED | Customer closed the chat window. |
Webhook Payload
TYPING webhook
{
"event": "TYPING",
"companyId": "660f9511-...",
"conversationId": "880fc844-...",
"type": "typing"
} Socket.io Events (Customer Side)
The customer web app listens for these Socket.io events:
presence— operator typing/recording indicator.message_delivered— operator's device received a customer message.message_read— operator read a customer message.