Foundation & Accounts
Technical reference for pulling call, SMS, and transcript data out of Dialpad if you ever consolidate.
Date: 2026-05-05 Purpose: Evaluate Dialpad API capabilities for extracting call data, SMS, voicemails, transcripts, and contact information to enrich Jobber CRM customer profiles and improve marketing personalization for Trimlight Phoenix and AZ Palm Tree Lights.
Yes. Dialpad offers a comprehensive REST API (v2) with 140+ endpoints covering voice, SMS, user management, analytics, contact center, and AI features.
https://dialpad.com/api/v2/https://sandbox.dialpad.com/api/v2/python-dialpad)Dialpad supports two authentication approaches:
1. API Key (Recommended for Jack's use case)
Authorization header:Authorization: Bearer <api_key>
?apikey=<token>) but this is discouraged for security2. OAuth 2.0 (Three-Legged Authorization Code Flow)
offline_access scopeclient_id and client_secrethttps://dialpad.com/oauth2/authorizehttps://dialpad.com/oauth2/tokenFor Jack's setup, the simple API Key approach is sufficient. OAuth is overkill for a single-company internal integration.
These scopes control what data the API key or OAuth token can access:
| Scope | Description |
|---|---|
| (default) | Basic API access (calls, contacts, users, etc.) |
recordings_export |
Access call recording URLs in call events |
message_content_export |
Access SMS text content for authenticated user |
message_content_export:all |
Access SMS text content company-wide |
screen_pop |
Screen pop API access |
calls:list |
Access to Call LIST API (required for call history) |
fax_message |
Fax API and event access |
change_log |
Change log event subscriptions |
offline_access |
Refresh token for long-lived sessions (OAuth only) |
Important: Some scopes require Dialpad approval. Contact api@dialpad.com to request additional scopes.
| Endpoint / Category | Limit |
|---|---|
| Overall API | 20 requests/second per company |
| Call List | 1,200/minute |
| Call Get (single call) | 10/minute |
| Transcripts | 1,200/minute |
| Contacts Get | 1,200/minute |
| SMS Send (Tier 0) | 100/minute |
| SMS Send (Tier 1) | 800/minute |
| Create Contacts | 100/minute |
| Initiate Calls | 5/minute per user |
| Callback (specific number) | 5/minute |
| Callback (call center) | 100/minute |
| Callback (company) | 1,000/minute |
| Stats API | 200/hour |
| Stats GET result | 1,200/minute |
Key note: Rate limits are applied at the company level, not per API key. Using multiple API keys from the same company does NOT increase the rate limit.
Dialpad offers three tiers:
| Plan | Price (Annual) | Price (Monthly) | API Access |
|---|---|---|---|
| Standard | $15/user/month | $27/user/month | Basic API access likely available |
| Pro | $25/user/month | $35/user/month | Full API access confirmed |
| Enterprise | Custom (100+ users) | Custom | Full API + advanced features |
Assessment: API access is generally available across plans, but advanced integrations (custom apps, full API endpoint access) typically require Pro or Enterprise. Jack should verify his current plan level. If he is on Standard, he may need to upgrade to Pro ($25/user/month annual) for reliable API access with all scopes.
Endpoint: GET /api/v2/call (Call List)
calls:liststarted_after and started_before (Unix timestamps in ms)target_id and target_type (user, department, office, call center, etc.)Endpoint: GET /api/v2/call/{id} (Call Get)
call_id -- unique identifierdirection -- inbound or outbounddate_started, date_rang, date_connected, date_ended (Unix timestamps)duration and total_duration (milliseconds)contact -- external party info (name, phone, email, type)external_number and internal_number (E.164 format)was_recorded and recording_details (URLs and duration)transcription textgroup_id -- department/mainline/queue associationcustom_data -- user-provided metadataVerdict: Fully capable of pulling call history by user or department, including duration, direction, timestamps, and caller info.
Endpoint: GET /api/v2/transcripts/{call_id} (Call Transcript)
recordings_export for recording URLscall_idmaster_call_id to retrieve transcriptsRecording URLs:
https://dialpad.com/secureblob/callrecording/...recordings_export scoperecording_detailsAI Recaps (Dialpad AI / DialpadGPT):
recap_summary and recap_outcomeVerdict: Excellent. Full AI transcripts, recordings, and AI-powered summaries/recaps are accessible via API. This is one of Dialpad's strongest differentiators.
Endpoint: POST /api/v2/sms (SMS Send)
to_numbers -- up to 10 E.164 phone numberstext -- message contentfrom_number -- sender's Dialpad numberuser_id -- user sending on behalf ofsender_group_id / sender_group_type -- send from department/office/call centermedia -- base64-encoded attachment for MMS (max 500 KiB)channel_hashtag -- for Dialpad channel messaging\nSMS History / Retrieval:
Important privacy note: By default, SMS text content is NOT included in SMS events. You must enable the message_content_export scope (for authenticated user) or message_content_export:all (company-wide) to receive actual message text.
Verdict: Can send SMS via API and receive real-time SMS events via webhooks, but there is no endpoint to pull historical SMS conversation threads. Must set up webhooks to capture SMS data going forward.
voicemailGET /api/v2/transcripts/{call_id}) can retrieve voicemail transcriptsVerdict: Voicemail data, recordings, and transcripts are accessible. Use call events with voicemail state and/or the transcript endpoint.
Endpoint: GET /api/v2/contacts/{id} (Contact Get)
display_name, first_name, last_namecompany_name, job_titleprimary_phone, phones (E.164 format)primary_email, emailsextensiontype -- "shared" or "local"owner_idurls (websites)shared and local can be retrievedVerdict: Can retrieve contact details by ID, but cannot search by phone number. To build a phone-number-to-contact lookup, you would need to maintain your own mapping table, populated via webhooks or periodic syncs.
Endpoint: POST /api/v2/stats (Initiate Processing) + GET /api/v2/stats/{request_id} (Get Result)
Two export types:
| Type | Description |
|---|---|
| Stats | Aggregated metrics (e.g., total answered, missed, abandoned calls per agent) |
| Records | Individual call records with full metadata and Call IDs |
Parameters:
target_id / target_type -- filter by office, department, call center, or useroffice_id -- aggregate across all targets under an officeis_today -- real-time tables (refreshed every 30 min, cached 30 min)days_ago -- historical tables (updated every 4-5 hours, cached 3 hours)timezone -- tz database format (e.g., America/Phoenix for Jack)Verdict: Full analytics export capability. Can pull aggregated call volume stats or individual call records with metadata. Good for building dashboards or periodic reports.
Dialpad has a robust webhook system for real-time event notifications.
POST /api/v2/webhooks -- registers your endpoint URLsecret when creating the webhook| Event Type | Description |
|---|---|
| Call Events | Real-time call state changes (ringing, connected, hold, hangup, voicemail, missed, etc.) |
| SMS Events | Inbound and outbound SMS messages with sender/recipient/content |
| Contact Events | Contact creation, updates, deletions |
| Agent Status Events | Agent availability changes (for call centers) |
| Change Log Events | Administrative changes to the Dialpad account |
Key states relevant to Jack's use case:
calling, ringing, connected, hangup -- standard call lifecyclemissed -- missed call detectionvoicemail -- call went to voicemailhold, merged -- call handlingtranscription, call_transcription -- transcript availablerecording -- recording started/availablerecap_summary -- AI recap/summary generatedrecap_outcome -- AI-determined call outcomeai_playbook -- AI playbook matchEvents can be scoped to:
Limits: 100 subscriptions per event type (all targets combined); 10 per type for company-level targeting.
id -- unique message identifierdirection -- inbound or outboundcreated_date -- Unix timestampfrom_number / to_number -- E.164 phone numberstarget -- Dialpad user/department/call centercontact -- external party infotext -- message content (requires message_content_export scope)mms -- boolean for multimediamessage_status -- sent, failed, pending, delivered, undeliveredmessage_delivery_result -- detailed delivery outcomeYes. Dialpad webhooks send HTTP POST requests to any URL you specify. n8n's Webhook Trigger node can receive these events directly. Flow:
Verdict: Full webhook support with rich event data. Perfect for real-time automation with n8n.
Feasibility: Possible with workaround
GET /api/v2/call) does not support filtering by external phone number directlyFeasibility: Forward-looking only (no historical bulk export)
message_content_export or message_content_export:all scope to get actual message textFeasibility: Fully supported
GET /api/v2/transcripts/{call_id} for full AI transcripts with momentsrecap_summary and recap_outcome states to get AI-generated summariesFeasibility: Partially supported natively, extensible
Feasibility: Fully supported
Feasibility: Fully supported
missed and voicemail statesFeasibility: Achievable with custom middleware
Native n8n node: No dedicated Dialpad node exists in n8n's built-in node library.
Workaround (fully functional):
Native Zapier integration exists: https://zapier.com/apps/dialpad/integrations
Available Triggers:
| Trigger | Type |
|---|---|
| Call State Changed | Instant |
| SMS Created | Instant |
Available Actions:
| Action | Description |
|---|---|
| Create Contact | Create and optionally assign a contact in Dialpad |
| API Request (Beta) | Execute raw HTTP requests with Dialpad authentication |
Popular Zapier recipes:
Limitation: Only 2 triggers and 2 actions. For complex workflows, the API Request action provides escape-hatch access to the full API.
Native Make integration exists: https://www.make.com/en/integrations/dialpad
Available Triggers:
Available Actions:
Popular templates:
This is the recommended approach for Jack's use case. It provides:
Dialpad has native integrations with:
For Jobber, a custom integration via n8n (Dialpad API -> n8n -> Jobber API) is required.
calls:list -- for call history accessrecordings_export -- for call recording URLsmessage_content_export:all -- for SMS text content (company-wide)Generate API Key:
Enable Call Recording (if not already):
Verify Phone Numbers:
Sandbox Access (Optional):
Arizona is a one-party consent state (A.R.S. 13-3005).
Multi-state consideration: If customers are calling from two-party consent states (California, Florida, etc.), the stricter law applies. Since Jack's business is local (Scottsdale/Phoenix metro), most callers will be in Arizona, but the automated disclosure is still recommended.
| Plan Level | Access Window |
|---|---|
| Essential / Advanced | 45 days |
| Premium | Up to 1 year |
Recommendation: If Jack wants to build a long-term customer communication history, set up webhooks and API exports to pull data into our own storage before it falls outside the retention window. Do not rely on Dialpad as the long-term data store.
message_content_export:all scope| Limitation | Impact | Mitigation |
|---|---|---|
| No SMS history endpoint | Cannot pull past SMS conversations | Set up webhooks ASAP to capture going forward |
| No contact search by phone | Cannot look up contacts by phone number | Build own phone-to-contact mapping table |
| Call Get rate limit (10/min) | Very slow for bulk individual call retrieval | Use Call List for bulk, Call Get only for specific details |
| 20 req/sec overall limit | Throttling on high-volume operations | Implement rate limiting in n8n workflows |
| Data retention windows | Recordings/transcripts expire (45 days - 1 year) | Export data to own storage before expiration |
| Plan-gated features | Some API access may require Pro plan | Verify Jack's plan before starting |
| No native Jobber integration | Requires custom middleware | Build via n8n with HTTP Request nodes |
Dialpad's API is well-suited for the planned integration. The key capabilities we need are available:
recordings_export scopeThe main gaps are:
Next step: Confirm Jack's Dialpad plan level and request API key generation with the scopes listed in Section 6.
Part of your Outdoor Vibes asset library โ yours to keep and run.