search_calls
Search call records across sub-accounts using filters for date, status, source, and more. Get call outcomes and ad attribution without extra lookups.
Instructions
Search calls across sub-accounts.
Pass account_ids as a comma-separated list, or omit to search all active sub-accounts. For large result sets, use per_page and page for pagination, or use narrow date ranges.
Only searches active sub-accounts by default. Pass account_status="archived", "canceled", "paused", or "all" to search other sub-accounts.
Each result line includes call_status/dial_status, the logged disposition (CTM's 'sale' outcome field, e.g. "wrong number", "no message"), source, tags, and (when present) the ad-platform campaign/keyword from CTM's per-call "paid" attribution object — no need to call get_call just to see the outcome or ad attribution of a call. Note campaign/keyword are frequently blank for non-paid traffic, and keyword specifically can be blank even for paid Search traffic (Google withholds it for some queries) — that omission from the line is expected, not a sign the field is missing from the API.
NOTE: the CTM calls-list API does not reliably filter server-side by
status. This tool applies status and disposition as a
best-effort client-side filter on top of whatever page is returned,
so filtered counts only reflect the current page, not the full
unfiltered total shown at the bottom of the output. For an accurate
aggregate breakdown across all pages, use call_disposition_report
instead of paging through search_calls with a filter.
If what's actually wanted is a row-level list of the matching calls themselves (not just counts) — e.g. "the calls answered over 60s yesterday with ID/Name/City/State" — use call_export instead of paging through search_calls page by page and manually filtering/collecting rows, and instead of looping get_call per call afterward to fill in name/city/state (those fields are already present on every call in this list, no per-call lookup needed). call_export filters across the full date range in one shot and returns ready-to-use CSV.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| page | No | ||
| sort | No | ||
| status | No | ||
| user_id | No | ||
| end_date | No | ||
| per_page | No | ||
| queue_id | No | ||
| caller_id | No | ||
| source_id | No | ||
| contact_id | No | ||
| start_date | No | ||
| account_ids | No | ||
| disposition | No | ||
| account_status | No | ||
| tracking_number_id | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |