---
title: CallRail API Integration on Truto
slug: callrail
category: Analytics
canonical: "https://truto.one/integrations/detail/callrail/"
---

# CallRail API Integration on Truto



**Category:** Analytics  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 59 tools for CallRail that AI agents can call directly.

- **list_all_call_rail_calls** — List calls in a CallRail account, filterable by date range, direction, company, tracker, and tags. Returns: id, answered, business_phone_number, customer_city, customer_country, customer_name, customer_phone_number, customer_state, direction, duration, recording, recording_duration, start_time, tracking_phone_number, voicemail, agent_email, lead_status, note, tags, source, campaign, medium,…. Required: account_id.
- **call_rail_calls_list_page_views** — List the web page views from the visitor session that generated a CallRail call. Returns page view records: page_url, referrer_url, created_at. Required: call_id, account_id.
- **call_rail_calls_get_recording** — Get the recording for a CallRail call by id. Returns: url, page, per_page, total_pages, total_records. Required: call_id, account_id.
- **create_a_call_rail_call** — Create an outbound call in CallRail. Returns the created call record: id, direction, customer_phone_number, tracking_phone_number, duration, start_time, recording. Required: account_id, caller_id, customer_phone_number, business_phone_number.
- **get_single_call_rail_call_by_id** — Get details for a single call in CallRail by id. Returns: id, answered, business_phone_number, customer_city, customer_country, customer_name, customer_phone_number, customer_state, direction, duration, recording, recording_duration, recording_player, start_time, tracking_phone_number, voicemail, agent_email, milestones, keywords_spotted. Required: id, account_id.
- **call_rail_calls_bulk_update** — Update a CallRail call's note, tags, lead status, customer name, or spam flag by id. Returns the updated call record: id, customer_name, direction, duration, start_time, recording. Required: id, account_id.
- **list_all_call_rail_companies** — List all CallRail companies in an account. Returns a paginated array of company records including id, name, status, time_zone, created_at, dni_active, and script_url. Required: account_id.
- **create_a_call_rail_company** — Create a new company in a CallRail account. Returns the created company object including its id, name, status, time_zone, and created_at. Required: account_id, name.
- **get_single_call_rail_company_by_id** — Get a single CallRail company by id. Returns the company object including id, name, status, time_zone, created_at, dni_active, and script_url. Required: id, account_id.
- **call_rail_companies_bulk_update** — Bulk update multiple CallRail companies at once — e.g. enable or disable external form tracking across the specified companies. Returns: updated_records, page, per_page, total_pages, total_records. Required: account_id, company_ids.
- **list_all_call_rail_tags** — List all tags defined in a CallRail account. Returns a paginated array of tags including id, name, tag_level, color, background_color, company_id, status, and created_at. Required: account_id.
- **get_single_call_rail_tag_by_id** — Get a single CallRail tag by id. Returns the tag object including id, name, tag_level, color, background_color, company_id, status, and created_at. Required: id, account_id.
- **create_a_call_rail_tag** — Create a tag in a CallRail company or account. Returns the created tag object including id, name, tag_level, color, background_color, company_id, status, and created_at. Required: name, account_id. Account-level tags (tag_level=account) can only be created by administrators.
- **list_all_call_rail_trackers** — List trackers (tracking phone numbers) in a CallRail account, both source trackers and session (number pool) trackers. Returns: id, name, type, status, destination_number, tracking_numbers, whisper_message, sms_enabled, sms_supported, company, call_flow, source, created_at, disabled_at. Required: account_id.

- **get_single_call_rail_tracker_by_id** — Get a single CallRail tracker by id. Returns: id, name, type, status, destination_number, tracking_numbers, whisper_message, sms_enabled, sms_supported, company, call_flow, source, created_at, disabled_at. Required: account_id, id.

- **create_a_call_rail_tracker** — Create a CallRail tracker in a company: either a source tracker (one number for a marketing source such as a billboard or Google organic) or a session tracker (a pool of numbers swapped per website visitor). Returns the created tracker: id, name, type, status, destination_number, tracking_numbers, company, call_flow, source, created_at. Required: account_id, type, name, company_id, call_flow.

- **call_rail_trackers_bulk_update** — Update a single CallRail tracker by id (despite the method name, this updates one tracker). Change name, call_flow, source, sms_enabled, swap_targets, whisper_message, pool_size, campaign_name or replace the tracking number. Returns the updated tracker: id, name, type, status, destination_number, tracking_numbers, company, call_flow, source, created_at, disabled_at. Required: account_id, id.

- **list_all_call_rail_users** — List all users in a CallRail account, optionally sorted alphabetically (e.g. by email). Returns each user's id, email, name, first_name/last_name, role, created_at, and the companies they belong to. Required: account_id.
- **get_single_call_rail_user_by_id** — Get a single CallRail user by id. Returns: id, created_at, page, per_page, total_pages, total_records. Required: id, account_id.
- **call_rail_users_bulk_delete** — Delete a user from a CallRail account by id. Only Account Administrators can perform this action. Returns an empty 204 response on success. Required: id, account_id.
- **list_all_call_rail_form_submissions** — List all form submissions for a CallRail account. Returns: id, company_id, person_id, form_data, form_url, landing_page_url, referrer, referring_url, submitted_at, first_form, customer_phone_number, customer_name, customer_email, formatted_customer_phone_number, formatted_customer_name, source, keywords, campaign, medium, milestones. Required: account_id. Supports filtering by company_id,…
- **get_single_call_rail_form_submission_by_id** — Get a single form submission in CallRail by id. Returns: id, page, per_page, total_pages, total_records. Required: id and account_id.
- **call_rail_form_submissions_list_ignored_fields** — List the form fields CallRail is configured to ignore when capturing form submissions for the account's companies. Returns: field_names, company_ids. Required: account_id.
- **list_all_call_rail_sms_threads** — List SMS thread summaries for a CallRail account, ordered newest threads first. Returns: id, notes, tags, value, lead_qualification, company_id, initial_tracker_id, current_tracker_id, customer_name, customer_phone_number, initial_tracking_number, current_tracking_number, state, company_time_zone. Required: account_id. Date filtering defaults to the last 7 days (date_range=recent); communication…
- **get_single_call_rail_sms_thread_by_id** — Get a single CallRail SMS thread by id, including its full message exchange ordered most-recent first. Returns: id, page, per_page, total_pages, total_records. Required: id, account_id.
- **list_all_call_rail_text_messages** — List all text message conversations for a CallRail account, ordered newest-first. Returns conversation objects with id, customer_name, customer_phone_number, state, last_message_at, and the two most recent recent_messages. Required: account_id.
- **create_a_call_rail_text_message** — Send a text message from a CallRail tracking number to a customer, starting a new conversation or continuing an existing one. Returns the conversation object including id, company_id, customer_phone_number, state, and recent_messages. Required: account_id, customer_phone_number, tracking_number, content, and company_id.
- **get_single_call_rail_text_message_by_id** — Get a single text message conversation in CallRail by id, with its messages ordered most recent first. Returns: id, page, per_page, total_pages, total_records. Required: account_id and id (the conversation id).
- **call_rail_text_messages_list_media** — Download a media file attached to an MMS in a CallRail text conversation. Returns the raw media file content for immediate download rather than a JSON object; media locations are short-lived. Required: account_id, conversation_id, and media_number.
- **list_all_call_rail_integrations** — List integrations (Webhooks, Custom, Google Analytics, Slack, etc.) configured for companies in a CallRail account. Returns: id, type, state, config. Required: account_id.

- **create_a_call_rail_integration** — Create and activate an integration for a CallRail company. Only the Webhooks and Custom (cookie capture) types can be created through the API; a company can have one integration of each type. Returns: id, type, state, config, signing_key. Required: account_id, type, company_id, config.

- **get_single_call_rail_integration_by_id** — Get a single CallRail integration by id. Returns: id, type, state, config. Required: account_id, id.

- **call_rail_integrations_bulk_delete** — Disable a single CallRail integration by id (despite the method name, this acts on one integration). The integration is disabled rather than removed. Returns an empty 204 response on success. Required: account_id, id.

- **list_all_call_rail_integration_filters** — List all integration filters (integration triggers) configured for a CallRail company. Returns each filter's id, company_id, integration_id, tracker_ids, call_type, min_duration, max_duration, lead_status, and associated integration. Required: company_id.
- **create_a_call_rail_integration_filter** — Create a new integration filter that limits which calls activate an integration in a CallRail company. Returns the created filter with id, company_id, integration_id, tracker_ids, call_type, min_duration, max_duration, lead_status, and its associated integration.
- **get_single_call_rail_integration_filter_by_id** — Get a single integration filter by id in a CallRail company. Returns: id, page, per_page, total_pages, total_records. Required: id.
- **call_rail_integration_filters_bulk_update** — Update an existing integration filter by id, e.g. to change call_type or min_duration. Returns the updated filter with id, company_id, integration_id, tracker_ids, call_type, min_duration, max_duration, lead_status, and its associated integration. Required: id.
- **list_all_call_rail_notifications** — List all notifications in a CallRail account. Returns paginated notification records including id, name, user_id, alert_type, company_id, tracker_id, call_enabled, sms_enabled, and the send_desktop/send_email/send_push delivery flags. Required: account_id.
- **create_a_call_rail_notification** — Create a notification in CallRail that alerts a user about calls and/or text messages for a company or tracker. Returns the created notification including id, user_id, alert_type, company_id, company_name, tracker_id, tracker_name, call_enabled, sms_enabled, and the send_desktop/send_email/send_push delivery flags. Required: account_id.
- **call_rail_notifications_bulk_update** — Update a notification's settings in CallRail by id. Only certain settings may be modified; to change the notification's scope or user, delete the record and create a new one. Returns the updated notification including id, user_id, alert_type, company_id, company_name, tracker_id, tracker_name, call_enabled, sms_enabled, and the send_desktop/send_email/send_push delivery flags. Required: id.
- **call_rail_notifications_bulk_delete** — Delete a notification in CallRail by id. Returns an empty 204 response on success. Required: id.
- **list_all_call_rail_caller_ids** — List outbound caller IDs (external phone numbers registered to show as caller ID on outbound calls) in a CallRail account. Returns: id, phone_number, name, verified, created_at, validation_code. Required: account_id.

- **create_a_call_rail_caller_id** — Register an external phone number as an outbound caller ID for a CallRail company. CallRail immediately places a verification call to the number; the recipient must enter the returned validation_code on the keypad. Repeat the request if the call is missed. Returns: id, phone_number, name, verified, created_at, validation_code. Required: account_id, phone_number, name, company_id.

- **get_single_call_rail_caller_id_by_id** — Get a single outbound caller ID by id. Returns: id, phone_number, name, verified, created_at, validation_code. Required: account_id, id.

- **delete_a_call_rail_caller_id_by_id** — Delete an outbound caller ID by id. Returns an empty 204 response on success. Required: account_id, id.

- **list_all_call_rail_summary_emails** — List summary email subscriptions (periodic daily, weekly or monthly activity emails sent to users) in a CallRail account. Non-administrator API keys only see their own subscriptions. Returns: id, scope, frequency, filters, config, user. Required: account_id.

- **create_a_call_rail_summary_email** — Create a summary email subscription for a CallRail user, scoped to one company (company_id) or to every company the user can access. Only administrators can create subscriptions for other users. Returns: id, scope, frequency, filters, config, user. Required: account_id, user_id, frequency.

- **get_single_call_rail_summary_email_by_id** — Get a single summary email subscription by id. Administrators can read any user's subscription; other users only their own. Returns: id, scope, frequency, filters, config, user. Required: account_id, id.

- **call_rail_summary_emails_bulk_update** — Update a single summary email subscription by id (despite the method name, this acts on one subscription). Only frequency and config can change; to change the user or scope, delete and recreate. Returns: id, scope, frequency, filters, config, user. Required: account_id, id.

- **call_rail_summary_emails_bulk_delete** — Delete a single summary email subscription by id, unsubscribing the user from future deliveries (despite the method name, this acts on one subscription). Returns an empty 204 response on success. Required: account_id, id.

- **list_all_call_rail_message_flows** — List message flows (automated inbound text-message handling on registered 10DLC tracking numbers) in a CallRail account. Returns: id, name, updated_at, tracker_ids. Required: account_id.

- **get_single_call_rail_message_flow_by_id** — Get a single CallRail message flow by id including its full step graph. Returns: id, name, updated_at, tracker_ids, initial_step_id, steps. Required: account_id, id.

- **create_a_call_rail_message_flow** — Create a message flow for a CallRail company: a named graph of steps (schedule, sms_response, tag, forward_message, etc.) that runs when a tracking number receives an inbound text. Names must be unique in the company. Returns: id, name, updated_at, tracker_ids, initial_step_id, steps. Required: account_id, company_id, name, initial_step_id, steps.

- **call_rail_message_flows_bulk_delete** — Delete a single CallRail message flow by id (despite the method name, this acts on one flow). Fails if the flow is still assigned to a tracker. Returns an empty 204 response on success. Required: account_id, id.

- **list_all_call_rail_leads** — List leads (people identified across calls, forms and texts) in a CallRail account. All fields are returned by default; use fields to limit them. Returns: id, name, phone, email, created_at, company_id, company_name. Required: account_id.

- **call_rail_leads_list_timeline** — Get the full chronological history of a single CallRail lead: every call, form submission, SMS thread, chat and milestone, plus a lead summary with first/last touch attribution, tags and AI Convert Assist insights. Returns timeline events: type, id, event_date and type-specific fields (direction, duration, answered, form_name, message_content, milestone_type). Required: agency_id, lead_id.

- **list_all_call_rail_accounts** — List accounts. Returns: id, name, outbound_recording_enabled, hipaa_account, numeric_id.
- **list_all_call_rail_call_summaries** — Call summary. Required: account_id.
- **list_all_call_rail_call_timeseries** — Call timeseries. Required: account_id.

## How it works

1. **Link your customer's CallRail account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach CallRail.** The Proxy API is a 1-to-1 mapping of the CallRail API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed call attribution into marketing CRMs** — Marketing CRMs and dashboards can pull CallRail calls, form submissions, and timeseries data to blend offline conversions with ad spend. This lets their customers prove true Cost Per Acquisition without manual CSV exports.
- **Automate agency client onboarding** — Agency management platforms can chain company, tracker, and message flow creation to spin up a new client sub-account in CallRail without leaving the SaaS UI. This removes a repetitive setup task that agencies otherwise do by hand for every new client.
- **Power AI call coaching and QA** — Sales enablement and conversation intelligence platforms can sync calls, pull recording URLs, and ingest audio to analyze rep performance. They avoid building VoIP infrastructure and get a steady feed of real customer conversations.
- **Close the loop on offline conversions** — CRMs can push lead status, value, and tags back to CallRail when a deal progresses, so CallRail can forward those offline conversions to Google and Meta Ads. This turns the SaaS platform into the system of record that drives smarter ad bidding.
- **Unify communications in vertical CRMs** — Field service, legal, and healthcare CRMs can embed CallRail calls, SMS threads, and form submissions directly on a contact record. Dispatchers and reps get full lead context without switching tabs.

## What you can build

- **Attribution-enriched contact sync** — Poll calls and form submissions to create or update CRM contacts with source, campaign, medium, and keyword attribution fields attached.
- **Click-to-call with tracking numbers** — Trigger outbound bridge calls from your app using CallRail's call creation endpoint so reps dial through tracked numbers and get recordings automatically.
- **Agency client provisioning wizard** — Create a CallRail company, provision trackers, and configure message flows in a single guided flow when a new client is added in your platform.
- **Omnichannel lead timeline embed** — Render a chronological feed of calls, texts, and form submissions on any contact record using the leads timeline endpoint.
- **Two-way SMS inbox** — List SMS threads and send outbound text messages so your users can text prospects from your UI while CallRail keeps the thread logged on the tracking number.
- **Call tagging and enrichment loop** — Fetch call recordings, run your own AI or sentiment analysis, then bulk update CallRail calls with tags, lead status, and value based on your findings.

## FAQs

### How does authentication work for CallRail through Truto?

CallRail uses API key authentication scoped to a user's account. Your end users connect through Truto's hosted auth flow, and Truto securely stores and injects the credentials on every request so you never handle API keys directly.

### How do we handle agencies that manage multiple CallRail companies?

CallRail's model is Account to Company, and agencies often have many companies under one account. Use the list accounts and list companies endpoints to let your users select which company to sync, and scope all subsequent calls with the chosen account and company IDs to prevent cross-client data leakage.

### Can we access call recordings and MMS media?

Yes. Use the get recording endpoint on calls to retrieve audio URLs for QA or AI analysis, and the list media endpoint on text messages to fetch MMS attachments.

### How fresh is the data and can we react to new calls in near real time?

CallRail's API is poll-based through Truto. Most integrations list calls, form submissions, and SMS threads on a short interval (for example every 1 to 5 minutes) and page through results using Truto's normalized pagination to pick up new activity.

### Can we write data back to CallRail, not just read?

Yes. The integration supports creating calls, text messages, companies, trackers, tags, caller IDs, message flows, integrations, and notifications, plus bulk updates on calls, companies, trackers, and other resources for closed-loop enrichment workflows.

### What attribution fields are available for marketing analytics use cases?

Calls and form submissions include marketing attribution data such as source, campaign, medium, referrer URL, and keywords spotted. You can also pull aggregated call summaries and timeseries endpoints for dashboarding without reconstructing them client-side.

## Related reading

- [Connect CallRail to Claude: Manage tracking numbers and SMS](https://truto.one/blog/connect-callrail-to-claude-manage-tracking-numbers-and-sms/) — Learn how to connect CallRail to Claude via an MCP server. Automate phone number provisioning, audit call logs, and orchestrate SMS campaigns using AI agents.
