Skip to main content

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

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"
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 } })
]);

Export jobs

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"
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 } });

Operational guidance

1

Use cursor traversal for voice sessions

Read until data.next_cursor is absent. Avoid page counters for cursor endpoints.
2

Follow redirects for recordings

Recording endpoints can return redirects to object storage; clients must support redirect follow.
3

Use export jobs for large windows

For month-scale extraction, create export jobs instead of paging every session synchronously.
4

Join with webhook outcomes by call identifiers

Reconcile using voice_session_id, call_id, and provider call_sid.
Do not assume recording URLs are permanent. Persist your own archival copy if retention policies require long-lived access.