Guides
First useful integration in five minutes
Callfora External API v1 is for CRM and automation clients. Keys start with cf_ and every request is tenant-scoped.
- Open Integration Hub as a tenant admin and create a scoped
cf_key. The full secret is shown once. - Send
X-API-Key(or Bearer) andX-Tenant-Idon every call. - List users, start a click-to-dial, then send an SMS in an existing conversation.
1. List users
curl
curl -X GET "https://console.callfora.com/api/v1/users" \
-H "X-API-Key: cf_your_api_key_here" \
-H "X-Tenant-Id: your-tenant-uuid" \
-H "Content-Type: application/json"2. Click-to-dial
User-scoped. The acting seat must have an extension. Add an Idempotency-Key so a CRM retry does not originate twice.
curl
curl -X POST "https://console.callfora.com/api/v1/click2dial" \
-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-call-001" \
-d '{"destination":"+15551234567"}'3. Send SMS
Use an existing conversation id the acting user can access. The path is /api/v1/sms/conversations/{id}/messages.
curl
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"}'Continue
- API keys — Create cf_ keys in Integration Hub
- Auth and scopes — Keys, OAuth, tenant access, user attribution
- Errors and limits — Request IDs, 429s, pagination, idempotency
- Webhooks — Signed events, retries, and replay
- Voice — Click-to-dial from a CRM
- Messaging — SMS and internal chat
- Recipes — Verified CRM and help-desk patterns
- AI agents — Voice agents and knowledge
- Changelog — API additions and deprecations