Everything an AI agent can do with the Dialpad API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints30
API versionv2
Last updated23 June 2026
Orientation

How the Dialpad API works.

The Dialpad API is how an app or AI agent works with a Dialpad account: placing and transferring calls, sending an SMS, listing call history, and managing the users, contacts, and call centers behind a phone system. Access is granted through an API key tied to one company or an OAuth connection, and sensitive areas like recordings and message content require their own scope on top. Dialpad can also push events to a registered endpoint as calls and messages happen, so an integration reacts in near real time.

30Endpoints
9Capability groups
11Read
19Write
3Permissions
Authentication
Dialpad authenticates a call with an API key or an OAuth 2.0 bearer token, sent in the Authorization header. An admin-generated API key belongs to one company and reaches that company's data. OAuth uses a three-legged authorization-code flow for connecting accounts across companies, returning a bearer token. A token may also be passed as a query parameter, but Dialpad recommends the header so the key does not appear in logs.
Permissions
A company API key carries broad access to its company by default. OAuth and key permissions are then narrowed by scopes, where a few sensitive areas demand their own scope, like calls:list to read call history, screen_pop to trigger a screen pop, ai_recap to read an AI call recap, recordings_export to export recordings, and message_content_export for message content. Endpoints without a named scope are reachable with a standard company key.
Versioning
Dialpad serves a single numbered API version, v2, in the request path. There is no per-request version header and no dated version string to pin. New methods and behavior changes are announced in the developer changelog and added to v2 in place, so an integration tracks the changelog rather than a version number.
Data model
Dialpad is resource-oriented REST with JSON requests and responses and predictable /api/v2/ paths. The core objects are calls, messages, users, contacts, and the offices, departments, and call centers that route them, plus the numbers assigned to each. A state change, like a call event or an inbound SMS, is delivered to a subscribed webhook or websocket, and large reports like stats run as an async job that is created and then polled.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Dialpad determines what it can reach. There is a route for making calls to the API, a route for receiving events as they happen, and the connection is governed by the key behind it and any scopes that key carries.

Ways to connect

REST API

The REST API takes JSON request bodies, returns JSON, and pages through lists with a cursor token, at https://dialpad.com/api/v2 in production and https://sandbox.dialpad.com/api/v2 in the sandbox. A call authenticates with an API key or OAuth bearer token in the Authorization header.

Best forConnecting an app or AI agent to Dialpad.
Governed byThe API key or OAuth token and any scopes it carries.
Docs ↗

Webhooks

Dialpad POSTs events to an HTTPS endpoint that is registered as a webhook and then attached to an event subscription, one per event type such as call events, SMS events, or contact events. Each subscription is scoped to a target like a company, office, call center, or user, and delivers matching events in near real time.

Best forReceiving Dialpad events at an app or AI agent.
Governed byThe subscription's target and the key that created it.
Docs ↗

Websockets

As an alternative to an HTTPS webhook, Dialpad can deliver events over a websocket that an integration creates and then attaches to an event subscription. The same event types and targeting apply, so an integration receives call, SMS, contact, and other events on a persistent connection.

Best forReceiving Dialpad events on a persistent connection.
Governed byThe subscription's target and the key that created it.
Docs ↗
Authentication

Company API key

An administrator generates an API key for their own Dialpad company. The key reaches that company's data and is sent as a bearer token in the Authorization header. It is intended for internal apps that act on a single company, and Dialpad recommends the header over the query-parameter option so the key does not appear in logs.

TokenBearer API key (company-scoped)
Best forInternal apps acting on a single company.
Docs ↗

OAuth 2.0

OAuth 2.0 uses a three-legged authorization-code flow following RFC 6749: a user is redirected to authorize, Dialpad returns a code, and the app exchanges it at the token endpoint for a bearer access token. Scopes requested in the flow narrow what the token can reach, and offline_access returns a refresh token. It is the route for third-party apps connecting accounts across different companies.

TokenOAuth 2.0 bearer access token
Best forThird-party apps connecting accounts across companies.
Docs ↗
Capability map

What an AI agent can do in Dialpad.

The Dialpad API is split into areas an agent can act on, like calls, messages, users, contacts, and the offices, departments, and call centers that route work. Each area has its own methods, and writes in some areas place real phone calls, send real messages, or change who can answer a line.

Endpoint reference

Every Dialpad API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Calls

Methods for placing, retrieving, transferring, and managing phone calls.6

Places a real call; limited to 5 calls per minute per user target. Reachable with a standard company key.

Acts oncall
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventcall.event
Rate limit5 per minute per user target

Read-only; reachable with a standard company key.

Acts oncall
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Requires the calls:list scope. Returns only calls that have already ended.

Acts oncall
Permission (capability)calls:list
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit1200 per minute

Redirects a live call; reachable with a standard company key.

Acts oncall
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventcall.event
Rate limitStandard limits apply

Ends a live call; reachable with a standard company key.

Acts oncall
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventcall.event
Rate limitStandard limits apply

Requires the ai_recap scope. Limited to 12 per minute.

Acts oncall
Permission (capability)ai_recap
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit12 per minute

Messaging (SMS)

Methods for sending SMS and scheduling or bulk-sending messages.2

Sends a real message; max request size 1MB including attachments. Reachable with a standard company key.

Acts onmessage
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsms.event
Rate limit100 per minute (tier 0), 800 per minute (tier 1)

Queues a real message for later delivery.

Acts onscheduled_message
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Users

Methods for working with the people on a Dialpad account.6

A core write; may consume a license. Reachable with a standard company key.

Acts onuser
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; reachable with a standard company key.

Acts onuser
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; reachable with a standard company key.

Acts onuser
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A core write; reachable with a standard company key.

Acts onuser
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Irreversible; removes the user. Reachable with a standard company key.

Acts onuser
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Requires the screen_pop scope. Limited to 5 per minute.

Acts onscreen_pop
Permission (capability)screen_pop
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit5 per minute

Contacts

Methods for working with shared and personal contacts.4

Limited to 100 contacts created per minute. Reachable with a standard company key.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventcontact.event
Rate limit100 per minute

Read-only; reachable with a standard company key.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A core write; reachable with a standard company key.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventcontact.event
Rate limitStandard limits apply

Irreversible; reachable with a standard company key.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventcontact.event
Rate limitStandard limits apply

Offices

Methods for working with offices and their operators.2

Read-only; reachable with a standard company key.

Acts onoffice
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes who operates the office; reachable with a standard company key.

Acts onoffice_operator
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Departments

Methods for working with departments and their operators.2

Read-only; reachable with a standard company key.

Acts ondepartment
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes who answers the department; reachable with a standard company key.

Acts ondepartment_operator
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Call centers

Methods for working with call centers and their operators.3

Read-only; reachable with a standard company key.

Acts oncall_center
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes who staffs the call center; reachable with a standard company key.

Acts oncall_center_operator
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; reachable with a standard company key.

Acts oncall_center
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Event subscriptions & webhooks

Methods for subscribing to events and registering delivery targets.3

Sets up which call events an integration receives.

Acts oncall_event_subscription
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventcall.event
Rate limitStandard limits apply

Message content in delivered events may require the message_content_export scope.

Acts onsms_event_subscription
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsms.event
Rate limitStandard limits apply

Creates a delivery target; reachable with a standard company key.

Acts onwebhook
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Stats & analytics

Methods for requesting and retrieving usage and performance data.2

Creates a processing job; the result is fetched separately by request id.

Acts onstats_request
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; can return company-wide call and agent activity.

Acts onstats_request
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Dialpad can notify an app when something happens, like a call starting or an SMS arriving. It delivers the event to a registered webhook or websocket through an event subscription, so an integration learns about activity in near real time without polling.

EventWhat it signalsTriggered by
Call eventFires as a call changes state, like ringing, connecting, or hanging up. Delivered through a call event subscription to a webhook or websocket, scoped to a target like a company, office, call center, or user./api/v2/users/{user_id}/calls
/api/v2/calls/{call_id}/transfer
/api/v2/calls/{call_id}/hangup
SMS eventFires when an SMS is sent or received for the company or a user, in near real time. Delivered through an SMS event subscription, and message content delivery may require the message_content_export scope./api/v2/sms/send
Contact eventFires when a contact is created, updated, or deleted. Delivered through a contact event subscription to a registered webhook or websocket./api/v2/contacts
/api/v2/contacts/{contact_id}
/api/v2/contacts/{contact_id}
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Dialpad limits how fast an app can call, with a company-wide ceiling measured per minute and tighter per-minute caps on specific actions like placing calls or creating contacts.

Request rate

Dialpad meters requests by rate, not by a per-method point cost. The default ceiling is 1200 requests per minute (20 per second) per company across the API, and specific actions carry tighter per-minute caps shown on the rows, like 5 calls per minute per user target, 100 contacts created per minute, and SMS send at 100 per minute on the lower tier. Going over returns HTTP 429, and Dialpad notes the limits may change.

Pagination

List endpoints return a page of results with a cursor token for the next page, passed back on the following request until no cursor remains. Call lists come back in reverse-chronological order by start time and include only calls that have already concluded.

Request size

The SMS API enforces a maximum request size of 1MB including attachments, and an oversized request returns HTTP 413. Other size and page limits are stated per endpoint in the reference.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400Bad RequestThe request has malformed syntax or is missing required parameters.Fix the request body or parameters before resubmitting; do not retry the same request unchanged.
401UnauthorizedAuthentication credentials are missing or invalid.Send a valid API key or OAuth bearer token in the Authorization header, and refresh the token if it has expired.
403ForbiddenThe credential is valid but lacks permission for this action, for example a missing scope like calls:list or screen_pop.Grant the required scope on the OAuth connection or use a key with access to the resource.
404Not FoundThe requested resource does not exist or is not visible to this credential.Verify the object id and that it belongs to the authenticated company.
409ConflictThe resource state prevents completion, such as a duplicate creation attempt.Reconcile the existing resource and retry without recreating it.
413Request Entity Too LargeThe payload exceeds the size limit, for example an SMS request over 1MB including attachments.Reduce the payload or attachment size below the limit and resend.
429Too Many RequestsA rate limit was exceeded, like the 1200 per minute company ceiling or a tighter per-action cap.Back off and retry more slowly, smoothing the request rate beneath the limit.
503Service UnavailableAn internal error or server overload. The response may include an error UUID for support.Retry with backoff, and share the error UUID with Dialpad support if it persists.
Versioning & freshness

Version history.

Dialpad serves one numbered version of its API and ships dated updates against it through its developer changelog, adding methods rather than minting a new version string for additive change.

Version history

What changed, and when

Latest versionv2
v2Current version
Current API version (v2)

Dialpad serves a single numbered API version, v2, in the request path, with no per-request version header. New methods and behavior changes are shipped against v2 in place and announced in the developer changelog rather than by minting a new version string.

What changed
  • Resource-oriented REST over /api/v2 with JSON requests and responses.
  • Authentication by company API key or OAuth 2.0 bearer token.
  • Events delivered by webhook or websocket through per-type event subscriptions.
2025-07-01Feature update
API updates, July 2025

A dated batch of additive API updates announced in the developer changelog, covering newly launched methods and improvements on v2.

What changed
  • New and improved API methods announced in the July 2025 changelog entry.
2024-10-01Feature update
API updates, September / October 2024

A dated batch of additive API updates announced in the developer changelog.

What changed
  • Newly released APIs and enhancements announced in the September / October 2024 changelog entry.
2024-04-01Feature update
API updates, April 2024

A dated batch of additive API updates announced in the developer changelog.

What changed
  • Newly released APIs and modifications announced in the April 2024 changelog entry.

Track the developer changelog for new methods and behavior changes on v2.

Dialpad API changelog ↗
Questions

Dialpad API, answered.

Does the Dialpad API use an API key or OAuth?+
Both. An internal app uses an API key that an administrator generates for their own company, which reaches that company's data. A third-party app that needs to connect accounts across different companies uses OAuth 2.0, a three-legged authorization-code flow that returns a bearer token. Either credential is sent in the Authorization header as a bearer token.
What OAuth scopes does Dialpad have?+
Dialpad defines a small set of scopes for sensitive areas, including recordings_export, message_content_export and message_content_export:all, screen_pop, calls:list, ai_recap, fax_message, change_log, and offline_access for refresh tokens. Most endpoints have no named scope and are reachable with a standard company key; the scopes gate the more sensitive data and actions on top of that.
How do I find out when a call happens without polling?+
Create an event subscription. Dialpad has separate subscription endpoints for call events, SMS events, contact events, agent status events, and more, each pointing at a webhook (an HTTPS endpoint Dialpad POSTs to) or a websocket. Once subscribed, Dialpad delivers each matching event in near real time, scoped to a target like a company, office, call center, or user.
How does call history listing work?+
The Call List method returns a paginated list of calls in reverse-chronological order by start time, filtered by parameters, and includes only calls that have already concluded. It requires the calls:list scope. To follow a call while it is live, use the Call Get method for status or subscribe to call events.
What is the rate limit and what happens if I exceed it?+
The default ceiling is 1200 requests per minute (20 per second) per company across the API. Some actions are capped tighter, like 5 calls per minute per user target and 100 contacts created per minute. Exceeding a limit returns HTTP 429 Too Many Requests. Dialpad notes it reserves the right to change these limits.
Is there a sandbox for testing?+
Yes. Dialpad serves a sandbox at sandbox.dialpad.com alongside production at dialpad.com, with the same /api/v2 paths. A sandbox API key works against sandbox data, so an integration can be built and tested without touching a live company's calls or messages.
Related

More communication API guides for agents

What is Bollard AI?

Control what every AI agent can do in Dialpad.

Bollard AI sits between a team's AI agents and Dialpad. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Dialpad key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Dialpad
Support Agent
Read call history ResourceOffReadFull use
Send SMS ActionOffReadFull use
Contacts ResourceOffReadFull use
Place calls ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Dialpad