latestOpenAPI 3.0.0raw.githubusercontent.com2026-08-1715378564.1 KB

274a178284a4

Logs

Get all conversation logs

Retrieve paginated conversation logs with support for various filters. Returns call logs for agents belonging to the authenticated user's organization.

To discover new inbound calls, use webhooks instead of polling this endpoint. Subscribe an agent to the pre-conversation webhook event: it fires the moment an inbound call connects and delivers callId, fromPhone, and toPhone, so you get every new call in real time with no polling load. See the Webhooks guide. Poll this endpoint only for backfill or reconciliation.

If you do poll, use the default sort. The default query (no sortBy) sorts by updatedAt descending and is index-backed, so it stays fast even on large accounts. Request the first page and keep the list small: page=1&limit=N (optionally callTypes=telephony_inbound for inbound only). This returns in well under a second. To detect new calls between polls, track the conversation IDs you have already seen rather than a single timestamp, since the default order is updatedAt (a recently-updated older call can move to the top).

Avoid sortBy=createdAt, dateFrom, and dateTo on large accounts. These sort or range-filter on createdAt, which is not index-backed for the organization-wide query and forces a full scan of your conversation history. On accounts with a large history this can exceed the gateway timeout and return a 504. Prefer the default updatedAt sort above.

agentIds and campaignIds accept comma-separated IDs and narrow the result set, but do not pair them with sortBy=createdAt or dateFrom on large accounts (the createdAt sort/filter is the slow part, not the number of agents).

get/conversation

Query parameters

pageinteger

Page number for pagination

limitinteger

Number of items per page. Server-side cap is 500 — values above 500 are silently clamped.

agentIdsstring

Comma-separated list of agent IDs to filter by

campaignIdsstring

Comma-separated list of campaign IDs to filter by

callTypes'telephony_inbound' | 'telephony_outbound' | 'webcall'

Comma-separated list of call types to filter by

searchstring

Search query to filter by callId, fromNumber, or toNumber

statusFilterstring

Comma-separated list of call statuses to filter by. Available statuses: pending, in_progress, in_queue, processing, active, completed, failed, no_answer, cancelled

disconnectReasonFilterstring

Comma-separated list of disconnect reasons to filter by. Available reasons: user_hangup, agent_hangup, connection_error, timeout, system_error, transfer_complete

callAttemptFilterstring

Comma-separated list of call attempt types to filter by. Available filters: initial (first attempt calls), retry (retry attempt calls), all (all calls)

durationFilterstring

Comma-separated list of duration ranges to filter by. Available ranges: 0-30 (0-30 seconds), 30-60 (30-60 seconds), 1-5 (1-5 minutes), 5+ (more than 5 minutes)

sortBy'createdAt' | 'updatedAt' | 'callDuration' | 'avgLatency'

Field to sort results by

sortOrder'asc' | 'desc'

Sort direction

dateFromstring date-time

ISO date — return calls created on or after this date

dateTostring date-time

ISO date — return calls created on or before this date

versionFilterstring

Comma-separated version IDs to filter calls by the agent version that handled them

Response

Successful response

statusboolean

Example response

{
  "status": true,
  "data": {
    "logs": [
      {
        "_id": "60d0fe4f5311236168a109ca",
        "callId": "CALL-1737000000000-abc123",
        "status": "completed",
        "duration": 120,
        "from": "+15551234567",
        "to": "+15559876543",
        "type": "telephony_outbound",
        "agentId": "60d0fe4f5311236168a109ca",
        "recordingUrl": "https://storage.example.com/recordings/call-123.mp3",
        "recordingDualUrl": "https://storage.example.com/recordings/call-123-dual.mp3",
        "disconnectionReason": "user_hangup",
        "createdAt": "2025-01-15T10:30:00.000Z",
        "dispositionMetrics": {
          "interested": "yes",
          "follow_up_needed": "no"
        }
      }
    ],
    "pagination": {
      "total": 150,
      "page": 1,
      "limit": 10,
      "hasMore": true,
      "totalPages": 15
    }
  }
}