Everything an AI agent can do with the RingCentral API.

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

Endpoints27
API versionv1.0
Last updated23 June 2026
Orientation

How the RingCentral API works.

The RingCentral API is how an app or AI agent works with a RingCentral account: sending text messages, listing call records, placing an outbound call, and reading a person's presence. Access is granted through an OAuth access token and a set of permissions that decide what each call can read or write, and an agent is limited to the account and extension that token reaches. RingCentral can also push events to an app when something happens, like a message arriving or a call ending.

27Endpoints
8Capability groups
15Read
12Write
10Permissions
Authentication
Every call needs an OAuth 2.0 access token sent as 'Authorization: Bearer '. An app gets one through the authorization code flow to act for a signed-in user, the JWT flow for unattended server-to-server access, or the client credentials flow for app-only account automation. The token carries the permissions the app was granted, and the alias ~ stands in for the authenticated account or extension in a path.
Permissions
Access is governed by named OAuth permissions, each a short scope, that an app declares and a user approves. Sending texts needs SMS, sending faxes needs Faxes, reading the mailbox needs ReadMessages while deleting needs EditMessages, reading call records needs ReadCallLog, placing a call needs RingOut, reading availability needs ReadPresence, reading account and extension info needs ReadAccounts while updating an extension needs EditExtensions, and team messaging needs TeamMessaging. A token reaches only the account and extension it was issued for.
Rate limits
Each method belongs to a usage group, Light, Medium, or Heavy, and the API caps calls per user per minute by group: 50 Light, 40 Medium, 10 Heavy, and 5 authentication. The X-Rate-Limit-Group, X-Rate-Limit-Limit, X-Rate-Limit-Remaining, and X-Rate-Limit-Window response headers report the current state, and exceeding a limit returns HTTP 429 with a Retry-After header.
Data model
The API is resource-oriented JSON over HTTPS at platform.ringcentral.com under the path version v1.0. Most resources nest under /account/{accountId}/extension/{extensionId}, covering messages, the message store, the call log, RingOut, and presence, with team messaging under /team-messaging/v1 and webhook subscriptions at /subscription. The alias ~ resolves to the authenticated account or extension, and RingCentral can push events to a subscription instead of being polled.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to RingCentral determines what it can reach. There is one REST route plus an event-push channel, and each is governed by the OAuth access token behind it and the permissions that token carries.

Ways to connect

REST API

The REST API answers at platform.ringcentral.com under the path version v1.0. It covers messaging, call logs, RingOut, presence, users, and team messaging.

Best forConnecting an app or AI agent to RingCentral.
Governed byThe OAuth access token and the permissions it carries.
Docs ↗

Webhooks (push notifications)

RingCentral pushes events to an app through a subscription. The app registers an event filter and a delivery address, and RingCentral posts each matching event to it. WebSocket and PubNub delivery are also supported.

Best forReceiving events without polling the REST API.
Governed byThe OAuth access token, which limits a subscription to events the token can read.
Docs ↗
Authentication

OAuth 2.0 authorization code

An app sends a person through RingCentral's login, then exchanges the returned code for an access token that acts on that person's behalf with the permissions they approved. This is the route for an app acting for a specific user.

TokenOAuth user access token
Best forActing on behalf of a signed-in user
Docs ↗

JWT auth flow

An app exchanges a long-lived JSON Web Token credential, created in the Developer Console, for an access token without a person logging in each time. This suits a server-to-server agent that runs unattended.

TokenOAuth access token from a JWT
Best forUnattended server-to-server access
Docs ↗

Client credentials flow

An app authenticates as itself, with no user context, to call the operations that do not act for a particular extension. It is the app-only route for account-level automation.

TokenOAuth app access token
Best forApp-only, account-level automation
Docs ↗
Capability map

What an AI agent can do in RingCentral.

The RingCentral API is split into areas an agent can act on, such as text messages, call logs, outbound calls, presence, users, and team messaging. Each area has its own methods and its own permission, and some grant access to far more than others.

Endpoint reference

Every RingCentral 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

Messaging (SMS & MMS)

Send a text message, send a picture message, and send a fax from an extension.3

The SMS permission covers both sending and receiving text messages. The extension and its phone number must have SMS enabled.

Acts onmessage
Permission (capability)SMS
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

MMS uses the same SMS permission. The number must have MMS enabled; the same payload can also be sent through the SMS method.

Acts onmessage
Permission (capability)SMS
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Faxes is a separate permission from SMS, and covers both sending and receiving faxes.

Acts onmessage
Permission (capability)Faxes
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Message store

List and read the messages in an extension's mailbox, fetch an attachment, and delete a message.4

The mailbox holds SMS, MMS, fax, voicemail, and pager messages; the messageType filter narrows the list to one kind.

Acts onmessage
Permission (capability)ReadMessages
VersionAvailable since the API’s base version
Webhook eventinstant-message
Rate limitMedium

ReadMessages allows viewing message records and metadata, not deleting them.

Acts onmessage
Permission (capability)ReadMessages
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Returns the raw attachment bytes for the message and attachment ids given.

Acts onattachment
Permission (capability)ReadMessages
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitHeavy

Deleting needs EditMessages, the write permission for the mailbox, not the read-only ReadMessages.

Acts onmessage
Permission (capability)EditMessages
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Call log & active calls

List an extension's call records, list the whole account's call records, and list the calls in progress now.3

ReadCallLog returns inbound and outbound call records, with direction, numbers, duration, and result.

Acts oncall record
Permission (capability)ReadCallLog
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitHeavy

The account-level call log spans every extension, so it exposes calls beyond the calling user's own.

Acts oncall record
Permission (capability)ReadCallLog
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitHeavy

Active calls are the live, not-yet-logged calls for the extension.

Acts oncall record
Permission (capability)ReadCallLog
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitHeavy

RingOut (make calls)

Place a two-legged outbound call, check its status, and cancel it.3

RingOut rings the first number, then dials the second and bridges the two, so it places a real phone call.

Acts oncall
Permission (capability)RingOut
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitHeavy

The same RingOut permission reads the call's status as places it.

Acts oncall
Permission (capability)RingOut
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitHeavy

Cancelling ends the RingOut before or during the connection.

Acts oncall
Permission (capability)RingOut
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitHeavy

Presence

Read one extension's presence status, and read the presence of every extension on the account.2

ReadPresence exposes whether a person is available, busy, or on a call, and their telephony state.

Acts onpresence
Permission (capability)ReadPresence
VersionAvailable since the API’s base version
Webhook eventpresence
Rate limitMedium

The account-level call exposes presence for the whole company, not just the calling user.

Acts onpresence
Permission (capability)ReadPresence
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitHeavy

Users & account

List the extensions on an account, read and update a single extension, and read the account's details.4

ReadAccounts returns account and extension info, including names, numbers, and email addresses.

Acts onextension
Permission (capability)ReadAccounts
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Calling with ~ in place of both ids reads the currently authenticated account and extension.

Acts onextension
Permission (capability)ReadAccounts
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Updating needs EditExtensions, the write permission for extension info, not the read-only ReadAccounts.

Acts onextension
Permission (capability)EditExtensions
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

ReadAccounts returns the business name, address, and account or phone number.

Acts onaccount
Permission (capability)ReadAccounts
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitLight

Team messaging

List chats, read a chat, list and read posts, create a post, and create a team.4

TeamMessaging covers reading and posting messages and managing chats, RingCentral's team-messaging product once branded Glip.

Acts onchat
Permission (capability)TeamMessaging
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Reading posts needs the TeamMessaging permission and access to the chat.

Acts onpost
Permission (capability)TeamMessaging
VersionAvailable since the API’s base version
Webhook eventtm-post
Rate limitMedium

Posting writes a real message into the chat, visible to everyone in it.

Acts onpost
Permission (capability)TeamMessaging
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Creating a team starts a new conversation with the chosen members.

Acts onteam
Permission (capability)TeamMessaging
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Webhook subscriptions

Create a subscription to receive events, list and read subscriptions, renew one, and cancel one.4

Subscriptions need no special permission beyond a valid token, but each event filter only delivers data the token is already allowed to read.

Acts onsubscription
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Returns the active subscriptions, their event filters, and their delivery details.

Acts onsubscription
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitLight

Subscriptions expire on a schedule and must be renewed to keep events flowing.

Acts onsubscription
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitMedium

Cancelling stops RingCentral from pushing the subscription's events.

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

Webhook events.

RingCentral can notify an app or AI agent when something happens on an account, instead of the app repeatedly asking. An app registers a subscription for the events it wants, and RingCentral posts each event to the address that was registered.

EventWhat it signalsTriggered by
Instant Message EventFires when a new message arrives in an extension's mailbox, such as an SMS or a fax, for the event filter /restapi/v1.0/account/~/extension/~/message-store/instant./restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store
Extension Presence EventFires when an extension's presence changes, such as going from available to on a call, for the event filter /restapi/v1.0/account/~/extension/~/presence./restapi/v1.0/account/{accountId}/extension/{extensionId}/presence
Extension Telephony Sessions EventFires on call activity for an extension, such as a call starting, ringing, answered, or ending, for the event filter /restapi/v1.0/account/~/extension/~/telephony/sessions.In-app only
Team Messaging Post EventFires when a post is created or changed in team messaging, for the event filter /team-messaging/v1/posts./team-messaging/v1/chats/{chatId}/posts
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

RingCentral limits how fast an app or AI agent can call by sorting each method into a usage group and capping the calls per user each minute. Going over returns a clear signal and a recommended wait.

Request rate

RingCentral sorts each method into a usage group, Light, Medium, or Heavy, and caps how many calls of each group an app can make per user each minute. The defaults are 50 Light, 40 Medium, and 10 Heavy requests per user per minute, plus 5 authentication requests per minute. A reading method tends to be Light or Medium, while an expensive one like RingOut or fetching attachment content is Heavy. Every response carries the headers X-Rate-Limit-Group, X-Rate-Limit-Limit, X-Rate-Limit-Remaining, and X-Rate-Limit-Window, which name the group, its ceiling, how many calls are left, and the window in seconds. Going over returns HTTP 429 with a Retry-After header giving the recommended wait in seconds. RingCentral can raise these limits for an app on request.

Pagination

List methods page through results with the page and perPage query parameters, where page is 1-based. A response includes a paging object with the current page, the page size, and the total record and page counts, and a navigation object with first, last, next, and previous page links to follow rather than building URLs by hand. The message store and call log default to a page size of 100.

Request size

Requests and responses are JSON over HTTPS. An SMS message body is limited to 1,000 characters, and an MMS or fax attaches files up to RingCentral's per-message size ceiling. List page sizes are capped per endpoint, with the message store and call log defaulting to 100 records per page.

Errors

Status codes & error handling.

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

StatusCodeMeaningWhat to do
400CMN-101A request parameter is missing or has an invalid value. The response names the offending field in a parameterName field, and a common case is an invalid 'from' or 'phoneNumber' on a message or call.Read the parameterName and message, correct the named field against the reference, and resend.
401OAU-128The access token is missing, invalid, or expired, so the request is not authenticated.Refresh or re-issue the access token, then send it in the Authorization header.
403CMN-408The token is valid but lacks the permission the operation needs, such as RingOut or ReadCallLog, or the feature is not enabled on the account.Grant the missing permission to the app, or enable the feature on the account, then retry.
404CMN-102The resource named by a path parameter, such as a message id or extension id, does not exist or is not visible to the token.Confirm the id is correct and the token has access to it.
429CMN-301The request rate exceeded the limit for its usage group. The response carries a Retry-After header with the recommended wait in seconds.Wait for the number of seconds in the Retry-After header before retrying.
503CMN-304A duplicate or concurrent request hit a temporary limit, or the service is briefly unavailable.Back off and retry the request after a short delay.
Versioning & freshness

Version history.

RingCentral serves its platform API under a single path version, v1.0, and ships dated changes to it through a public changelog rather than minting a new path version for each one.

Version history

What changed, and when

Latest versionv1.0
v1.0Current version
Single path version, dated changes through the changelog

The RingCentral platform API is served under one path version, v1.0, and evolves through dated, mostly additive changes published in a public changelog rather than a new path version per change. The verified reference reflects the platform spec dated 29 May 2024. Breaking changes are announced ahead of time, and deprecated surfaces, such as the legacy RingCentral Meetings scheduling endpoints, are marked before removal.

What changed
  • Team messaging moved to the /team-messaging/v1 paths, superseding the older /restapi/v1.0/glip operations
  • Legacy RingCentral Meetings scheduling endpoints marked deprecated in favor of RingCentral Video and webinar APIs
2022-05-10Feature update
Analytics reporting updates (v.1.0.51)

The May 2022 changelog extended the Line of Business Analytics reporting, adding a WholeCompany grouping option for company-wide call performance and a name field on the keyInfo response so extension names appear alongside their numbers.

What changed
  • Added the WholeCompany grouping option to analytics aggregate and timeline reports
  • Added a name field to the keyInfo response object alongside extension numbers
2022-03-31Feature update
Audit trail and call-control updates (v.1.0.50)

The March 2022 changelog added a beta audit-trail search endpoint, extended hold and unhold call control to BroadSoft extensions, and shipped beta provisioning endpoints for delegated line groups.

What changed
  • Added a beta POST audit-trail/search endpoint to query audit records
  • Extended hold and unhold call control to BroadSoft extensions
  • Added beta provisioning endpoints for delegated line groups
2021-02
Notifications and call-handling updates (v.1.0.46)

The February 2021 changelog added sipData and statusCode query parameters and a do-not-disturb change event filter to telephony notifications, and added filtering by custom type in call-handling rules.

What changed
  • Added sipData and statusCode parameters and a DND-change event filter to telephony notifications
  • Added filtering by custom type in call-handling rules and retention details in call-recording settings

An integration stays on v1.0 and picks up additive changes as they ship, with breaking changes announced ahead of time.

RingCentral API changelog ↗
Questions

RingCentral API, answered.

How does an app authenticate to the RingCentral API?+
Every call carries an OAuth 2.0 access token in the Authorization header. An app obtains one through the authorization code flow when it acts for a signed-in user, the JWT flow for unattended server-to-server access, or the client credentials flow for app-only account automation. The token carries the permissions the app was granted, and a refresh token renews it without a fresh login. The legacy password flow has been retired.
What permission does each action need?+
Permissions are named OAuth scopes an app declares and a user approves. Sending texts needs SMS and sending faxes needs Faxes; reading the mailbox needs ReadMessages while deleting a message needs EditMessages; reading call records needs ReadCallLog; placing a call needs RingOut; reading availability needs ReadPresence; reading account and extension info needs ReadAccounts while updating an extension needs EditExtensions; and team messaging needs TeamMessaging. A call without the required permission returns HTTP 403 with a permission-required error code.
How do the rate limits work?+
RingCentral assigns each method a usage group, Light, Medium, or Heavy, and limits calls per user per minute by group: 50 Light, 40 Medium, 10 Heavy, plus 5 authentication requests. Every response reports the group, its ceiling, the calls remaining, and the window in the X-Rate-Limit-Group, X-Rate-Limit-Limit, X-Rate-Limit-Remaining, and X-Rate-Limit-Window headers. Going over returns HTTP 429 with a Retry-After header that says how many seconds to wait before retrying. RingCentral can raise an app's limits on request.
How does an app receive events instead of polling?+
An app creates a subscription that names an event filter, such as the message store, an extension's presence, telephony sessions, or team-messaging posts, and a delivery method. RingCentral then pushes each matching event to the registered address as it happens. Subscriptions expire on a schedule and must be renewed to keep events flowing, and a subscription only delivers data the token is already allowed to read.
What does the ~ in a path mean?+
The tilde ~ is an alias for the currently authenticated account or extension. Calling /account/~/extension/~ reads the account and extension behind the access token, so an app does not need to know the numeric ids in advance. It can be used wherever an accountId or extensionId path parameter appears.
Can an app send a picture message or a fax?+
Yes. A picture message uses the MMS method and a fax uses the Fax method, both from an extension. MMS shares the SMS permission and the number must have MMS enabled; fax uses the separate Faxes permission. Inbound MMS and fax content is fetched from the message store as an attachment, which needs ReadMessages.
How does an app read or send a person's text messages?+
Outbound texts use the SMS method, which needs the SMS permission. Inbound and historical messages live in the extension's message store, listed and read with ReadMessages and filtered by messageType to show only SMS. There is no separate read-SMS method; the message store is the single mailbox for SMS, MMS, fax, voicemail, and pager messages.
Related

More communication API guides for agents

What is Bollard AI?

Control what every AI agent can do in RingCentral.

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

  • Set read, write, or full access per agent, never a shared RingCentral 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.
RingCentral
Comms Agent
Send text messages ActionOffReadFull use
Read call logs ResourceOffReadFull use
Make calls ActionOffReadFull use
Per-agent access, set in Bollard AI, not in RingCentral