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

EventDescription
TYPINGCustomer started typing.
STOPPED_TYPINGCustomer stopped typing without sending.
RECORDINGCustomer is recording an audio message.
CHAT_CLOSEDCustomer 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.