Guides
SMS and chat
Two channels: tenant SMS numbers for customers, and internal chat between users. Both require X-User-Email.
SMS
List threads the acting user can access with GET /api/v1/sms/conversations. Access is limited to conversations assigned to that user or to an SMS number they own or share. List messages with GET /api/v1/sms/conversations/{id}/messages. Send with POST /api/v1/sms/conversations/{id}/messages and a text body.
There is no /api/v1/sms/messages shortcut. Delivery uses the platform carrier path on live tenants. Sandbox tenants return a simulated send and never reach a carrier.
curl -X POST "https://console.callfora.com/api/v1/sms/conversations/{id}/messages" \
-H "X-API-Key: cf_your_api_key_here" \
-H "X-Tenant-Id: your-tenant-uuid" \
-H "X-User-Email: user@example.com" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: crm-sms-001" \
-d '{"body":"Hello from Integration Hub"}'Internal chat
GET /api/v1/chat/conversations lists rooms for the user in X-User-Email. Start a direct thread with a teammate's email, then POST /api/v1/chat/messages with conversationId and content.
curl -X POST "https://console.callfora.com/api/v1/chat/messages" \
-H "X-API-Key: cf_your_api_key_here" \
-H "X-Tenant-Id: your-tenant-uuid" \
-H "X-User-Email: user@example.com" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: chat-message-001" \
-d '{"conversationId":"00000000-0000-0000-0000-000000000000","content":"Hello"}'Isolation
Conversations never cross tenants. Path and body IDs are untrusted until the API loads the row with the authenticated tenant.