Docs

API

Callfora External API

CRM and automation API. Authenticate with a cf_ API key (X-API-Key or Bearer), send X-Tenant-Id, and include X-User-Email when the operation is user-scoped. SMS list and send are limited to conversations the acting user is assigned to.

Spec source: live OpenAPI from https://console.callfora.com/api/v1/openapi.json.

Version 1.1.0. Keys use the cf_ prefix. Required headers: X-API-Key (or Bearer) and X-Tenant-Id.

/api/v1/users

getList users in the tenant

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
  • search query · string — Name, email, or extension
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset
  • cursor query · string — Opaque cursor; prefer over offset for stable pages

/api/v1/contacts

getList contacts

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
  • search query · string — Search query
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset
  • cursor query · string — Opaque cursor; prefer over offset for stable pages
postCreate a contact owned by the acting user

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • Idempotency-Key header · string — Replay-safe key for mutations. Reuse with a different body returns 409.
{
  "firstName": "Ada",
  "lastName": "Lovelace",
  "phoneMobile": "+15551234567"
}

/api/v1/click2dial

postStart a click-to-dial call from a user's extension

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • Idempotency-Key header · string — Replay-safe key for mutations. Reuse with a different body returns 409.
{
  "destination": "+15551234567"
}

/api/v1/cdr

getList call detail records

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset

/api/v1/chat/conversations

getList team chat conversations for the acting user

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset
postStart or return a direct chat with a teammate

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • Idempotency-Key header · string — Replay-safe key for mutations. Reuse with a different body returns 409.
{
  "participantEmail": "teammate@example.com",
  "message": "Hello"
}

/api/v1/sms/conversations

getList SMS conversations assigned to the acting user (conversation assignee or SMS number membership)

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • search query · string — Filter by number or name
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset
  • cursor query · string — Opaque cursor; prefer over offset for stable pages

/api/v1/sms/conversations/{id}/messages

getList messages in an SMS conversation the acting user can access

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset
  • cursor query · string — Opaque cursor; prefer over offset for stable pages
  • id path · required · string — Conversation id
postSend an SMS in a conversation the acting user can access

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • Idempotency-Key header · string — Replay-safe key for mutations. Reuse with a different body returns 409.
  • id path · required · string — Conversation id
{
  "body": "Hello from the Integration Hub"
}

/api/v1/ai/agents

getList AI agents for the tenant

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string

/api/v1/ai/agents/{id}

getGet one AI agent

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
  • id path · required · string — Agent id

/api/v1/ai/agents/{id}/test-chat

postSend a test chat turn to an AI agent

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
  • Idempotency-Key header · string — Replay-safe key for mutations. Reuse with a different body returns 409.
  • id path · required · string — Agent id
{
  "messages": [
    {
      "role": "user",
      "content": "What are your hours?"
    }
  ]
}

/api/v1/pricing/quote

postRealtime subscription quote for seats, DIDs, and billing term

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
{
  "planId": "uuid",
  "seatCount": 5,
  "didCount": 2,
  "billingTerm": "MONTHLY"
}

/api/v1/chat/messages

getList messages in a team chat conversation

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • conversationId query · required · string — Conversation id
postSend a team chat message

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • Idempotency-Key header · string — Replay-safe key for mutations. Reuse with a different body returns 409.
{
  "conversationId": "uuid",
  "content": "Hello from the Integration Hub"
}

/api/v1/files

getList files visible to the tenant

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset

/api/v1/calendar

getList calendar events for the acting user

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • startDate query · string — ISO start
  • endDate query · string — ISO end
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset
  • cursor query · string — Opaque cursor; prefer over offset for stable pages
postCreate a calendar event for the acting user

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • Idempotency-Key header · string — Replay-safe key for mutations. Reuse with a different body returns 409.
{
  "title": "Customer follow-up",
  "startTime": "2026-09-21T15:00:00.000Z",
  "endTime": "2026-09-21T15:30:00.000Z"
}

/api/v1/presence

getList presence for tenant users

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
putUpdate the acting user's presence

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-User-Email header · required · string — Acting user on the tenant
  • X-Request-Id header · string
  • Idempotency-Key header · string — Replay-safe key for mutations. Reuse with a different body returns 409.
{
  "status": "busy",
  "message": "On a customer call"
}

/api/v1/fax

getList fax inbox, sent, or queue items for the tenant

Parameters

  • X-Tenant-Id header · required · string — Tenant the key is allowed to access
  • X-Request-Id header · string
  • type query · string — inbox, sent, or queue
  • limit query · number — Max records (default 50, max 100)
  • offset query · number — Pagination offset