> ## Documentation Index
> Fetch the complete documentation index at: https://developers.callaro.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Call Logs API

> Retrieve voice session history, trace telemetry, recordings, transcripts, and export jobs safely at scale.

# Treat call logs as your system of record for execution outcomes.

Callaro stores completed and in-flight call records in `voice_sessions`. Use `call-log-exports` for asynchronous bulk extraction, and trace endpoints for deep debugging.

## Core endpoints

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.callaro.ai/api/v1/voice_sessions?cursor=eyJpZCI6OTAwMX0&page_size=50" -H "X-Api-Key: $CALLARO_API_KEY"
  curl "https://api.callaro.ai/api/v1/voice_sessions/9001" -H "X-Api-Key: $CALLARO_API_KEY"
  curl -L "https://api.callaro.ai/api/v1/voice_sessions/9001/recording" -H "X-Api-Key: $CALLARO_API_KEY"
  curl "https://api.callaro.ai/api/v1/voice_sessions/9001/events" -H "X-Api-Key: $CALLARO_API_KEY"
  curl "https://api.callaro.ai/api/v1/voice_sessions/9001/trace" -H "X-Api-Key: $CALLARO_API_KEY"
  curl "https://api.callaro.ai/api/v1/voice_sessions/9001/transcript_pdf" -H "X-Api-Key: $CALLARO_API_KEY"
  ```

  ```javascript Node.js theme={null}
  await Promise.all([
    fetch('https://api.callaro.ai/api/v1/voice_sessions?cursor=eyJpZCI6OTAwMX0&page_size=50', { headers: { 'X-Api-Key': process.env.CALLARO_API_KEY } }),
    fetch('https://api.callaro.ai/api/v1/voice_sessions/9001', { headers: { 'X-Api-Key': process.env.CALLARO_API_KEY } }),
    fetch('https://api.callaro.ai/api/v1/voice_sessions/9001/recording', { headers: { 'X-Api-Key': process.env.CALLARO_API_KEY }, redirect: 'follow' }),
    fetch('https://api.callaro.ai/api/v1/voice_sessions/9001/events', { headers: { 'X-Api-Key': process.env.CALLARO_API_KEY } }),
    fetch('https://api.callaro.ai/api/v1/voice_sessions/9001/trace', { headers: { 'X-Api-Key': process.env.CALLARO_API_KEY } })
  ]);
  ```
</CodeGroup>

## Export jobs

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.callaro.ai/api/v1/call-log-exports" -H "X-Api-Key: $CALLARO_API_KEY" -H "Content-Type: application/json" -d '{"date_from":"2026-04-01","date_to":"2026-04-23","filters":{"campaign_id":"cmp_123"}}'
  curl "https://api.callaro.ai/api/v1/call-log-exports/77" -H "X-Api-Key: $CALLARO_API_KEY"
  curl "https://api.callaro.ai/api/v1/call-log-exports/77/download" -H "X-Api-Key: $CALLARO_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const createExport = await fetch('https://api.callaro.ai/api/v1/call-log-exports', {
    method: 'POST',
    headers: { 'X-Api-Key': process.env.CALLARO_API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({
      date_from: '2026-04-01',
      date_to: '2026-04-23',
      filters: { campaign_id: 'cmp_123' }
    })
  });
  const exportJob = await createExport.json();
  await fetch(`https://api.callaro.ai/api/v1/call-log-exports/${exportJob.data.id}`, { headers: { 'X-Api-Key': process.env.CALLARO_API_KEY } });
  await fetch('https://api.callaro.ai/api/v1/call-log-exports/77/download', { headers: { 'X-Api-Key': process.env.CALLARO_API_KEY } });
  ```
</CodeGroup>

## Operational guidance

<Steps>
  <Step title="Use cursor traversal for voice sessions">
    Read until `data.next_cursor` is absent. Avoid page counters for cursor endpoints.
  </Step>

  <Step title="Follow redirects for recordings">
    Recording endpoints can return redirects to object storage; clients must support redirect follow.
  </Step>

  <Step title="Use export jobs for large windows">
    For month-scale extraction, create export jobs instead of paging every session synchronously.
  </Step>

  <Step title="Join with webhook outcomes by call identifiers">
    Reconcile using `voice_session_id`, `call_id`, and provider `call_sid`.
  </Step>
</Steps>

<Warning>
  Do not assume recording URLs are permanent. Persist your own archival copy if retention policies require long-lived access.
</Warning>
