curl "https://api.telzino.com/v1/outbound-calls/export?from=2026-09-01T00:00:00Z&to=2026-09-30T23:59:59Z&campaign_id=sept-reminders&format=json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"row_count": 2,
"data": [
{
"call_id": "0fc6daf8-…", "campaign_id": "sept-reminders", "agent_id": "aadcdc82-…", "agent_name": "Ava",
"to_number": "+18135551234", "status": "completed", "attempt_number": 1,
"created_at": "2026-09-12T14:02:10Z", "answered_at": "2026-09-12T14:02:31Z", "ended_at": "2026-09-12T14:05:02Z",
"duration_seconds": 151, "consent_basis": "ebr", "consent_reference": "crm-88213",
"disclosure_delivered": null, "disclosure_timestamp": null, "opt_out_detected": false,
"answer_type": "human", "voicemail_left": false, "callee_timezone": null, "cancel_reason": null
},
{
"call_id": "4c0e7f7e-…", "campaign_id": "sept-reminders", "agent_id": "aadcdc82-…", "agent_name": "Ava",
"to_number": "+18135555678", "status": "no_answer", "attempt_number": 2,
"created_at": "2026-09-12T17:02:10Z", "answered_at": null, "ended_at": "2026-09-12T17:02:58Z",
"duration_seconds": null, "consent_basis": "express_written", "consent_reference": "form-5521",
"disclosure_delivered": null, "disclosure_timestamp": null, "opt_out_detected": false,
"answer_type": null, "voicemail_left": false, "callee_timezone": "America/Denver", "cancel_reason": null
}
]
}
{
"error": "export_too_large",
"error_description": "Too many rows for one export; narrow the range or add filters"
}
Outbound Calls
Compliance Audit Export
Every outbound attempt in a date range, with its consent basis and outcome, as CSV or JSON
GET
/
v1
/
outbound-calls
/
export
curl "https://api.telzino.com/v1/outbound-calls/export?from=2026-09-01T00:00:00Z&to=2026-09-30T23:59:59Z&campaign_id=sept-reminders&format=json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"row_count": 2,
"data": [
{
"call_id": "0fc6daf8-…", "campaign_id": "sept-reminders", "agent_id": "aadcdc82-…", "agent_name": "Ava",
"to_number": "+18135551234", "status": "completed", "attempt_number": 1,
"created_at": "2026-09-12T14:02:10Z", "answered_at": "2026-09-12T14:02:31Z", "ended_at": "2026-09-12T14:05:02Z",
"duration_seconds": 151, "consent_basis": "ebr", "consent_reference": "crm-88213",
"disclosure_delivered": null, "disclosure_timestamp": null, "opt_out_detected": false,
"answer_type": "human", "voicemail_left": false, "callee_timezone": null, "cancel_reason": null
},
{
"call_id": "4c0e7f7e-…", "campaign_id": "sept-reminders", "agent_id": "aadcdc82-…", "agent_name": "Ava",
"to_number": "+18135555678", "status": "no_answer", "attempt_number": 2,
"created_at": "2026-09-12T17:02:10Z", "answered_at": null, "ended_at": "2026-09-12T17:02:58Z",
"duration_seconds": null, "consent_basis": "express_written", "consent_reference": "form-5521",
"disclosure_delivered": null, "disclosure_timestamp": null, "opt_out_detected": false,
"answer_type": null, "voicemail_left": false, "callee_timezone": "America/Denver", "cancel_reason": null
}
]
}
{
"error": "export_too_large",
"error_description": "Too many rows for one export; narrow the range or add filters"
}
The export is built from outbound call records rather than transcripts, so every dialled number appears, including attempts that were never answered. Those have no transcript, but they do carry the consent basis they were placed under — which is what an audit asks about. See Outbound Compliance.
Query Parameters
string
required
Start of the range, inclusive (ISO 8601)
string
required
End of the range, inclusive (ISO 8601)
string
Only calls whose trigger
metadata.campaign_id equals this value exactlystring
Only one agent’s calls
string
Only one call status
string
default:"csv"
csv downloads as an attachment; json returns the same columns under data with a row_countColumns
call_id, campaign_id, agent_id, agent_name, to_number, status, attempt_number, created_at, answered_at, ended_at, duration_seconds, consent_basis, consent_reference, disclosure_delivered, disclosure_timestamp, opt_out_detected, answer_type, voicemail_left, callee_timezone, cancel_reason.
A CSV with no matching calls still carries its header row, so “nothing matched” is distinguishable from a failed export.
curl "https://api.telzino.com/v1/outbound-calls/export?from=2026-09-01T00:00:00Z&to=2026-09-30T23:59:59Z&campaign_id=sept-reminders&format=json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"row_count": 2,
"data": [
{
"call_id": "0fc6daf8-…", "campaign_id": "sept-reminders", "agent_id": "aadcdc82-…", "agent_name": "Ava",
"to_number": "+18135551234", "status": "completed", "attempt_number": 1,
"created_at": "2026-09-12T14:02:10Z", "answered_at": "2026-09-12T14:02:31Z", "ended_at": "2026-09-12T14:05:02Z",
"duration_seconds": 151, "consent_basis": "ebr", "consent_reference": "crm-88213",
"disclosure_delivered": null, "disclosure_timestamp": null, "opt_out_detected": false,
"answer_type": "human", "voicemail_left": false, "callee_timezone": null, "cancel_reason": null
},
{
"call_id": "4c0e7f7e-…", "campaign_id": "sept-reminders", "agent_id": "aadcdc82-…", "agent_name": "Ava",
"to_number": "+18135555678", "status": "no_answer", "attempt_number": 2,
"created_at": "2026-09-12T17:02:10Z", "answered_at": null, "ended_at": "2026-09-12T17:02:58Z",
"duration_seconds": null, "consent_basis": "express_written", "consent_reference": "form-5521",
"disclosure_delivered": null, "disclosure_timestamp": null, "opt_out_detected": false,
"answer_type": null, "voicemail_left": false, "callee_timezone": "America/Denver", "cancel_reason": null
}
]
}
{
"error": "export_too_large",
"error_description": "Too many rows for one export; narrow the range or add filters"
}
| Code | Meaning |
|---|---|
400 | Missing or malformed from / to |
413 | More rows than one export allows — the request is refused rather than truncated, because a partial audit file cannot be told apart from a complete one |
