Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/zoom-phone-sms-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Phone SMS API
description: "You can access information from Zoom with Zoom Phone APIs to build private services or public applications on the [Zoom App Marketplace](https://marketplace.zoom.us/).\n\n To learn how to get your credentials and create private or public applications, see Zoom APIs use [OAuth 2.0 authorization](https://developers.zoom.us/docs/integrations/oauth/). \n\n All endpoints are available through `https` at `api.zoom.us/v2/`. For instance, `https://api.zoom.us/v2/users/` returns all users on an account. You'll receive a `403` error message if you have not set up Zoom Phone."
termsOfService: https://zoom.us/docs/en-us/zoom_api_license_and_tou.html
contact:
name: Zoom Developers
url: https://developer.zoom.us/
version: '2'
servers:
- url: https://api.zoom.us/v2
tags:
- name: SMS
paths:
/phone/sms/messages:
post:
tags:
- SMS
summary: Post SMS message
description: "Sends [SMS messages](https://support.zoom.us/hc/en-us/articles/360054631031-Setting-up-SMS) to Zoom Phone accounts. \n\n**Service Endpoint SMS**\n* This API now supports sending a Service Endpoint SMS or MMS message.\n* The sender phone number must be assigned to a Service Endpoint and enabled for SMS.\n* Non-Zoom Phone users can send only Service Endpoint SMS or MMS messages. An account-level app is required for non-Zoom Phone users to send Service Endpoint SMS.\n\n**Prerequisites**\n* A Zoom Phone license\n* SMS enabled for the account or admin privileges\n* For Zoom Phone SMS: a Zoom Phone-enabled user\n* For Service Endpoint SMS: an account-level app, SMS enabled for the account, and a Service Endpoint phone number enabled for SMS\n\n**SMS and attachments - Size and limits**\n* SMS size with no media attachments: 2048 bytes\n* SMS size with attachments: 1000 bytes\n* Total attachments: 10\n* Total attachment file size: 2 MB\n\n**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write`,`phone_sms:write`,`phone_sms:write:admin`\n\n**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:sms_message`,`phone:read:sms_message:admin`\n\n**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`"
operationId: postSmsMessage
requestBody:
content:
application/json:
schema:
required:
- sender
- to_members
type: object
properties:
attachments:
maxItems: 10
type: array
description: 'A list of multimedia attachments to be sent through MMS. Each item must be a Base 64-encoded image file in a supported format. The following file formats are supported: JPG, PNG, JPEG, GIF. The attachment size limit is 2MB.'
items:
type: object
properties:
base64_encoding:
type: string
description: The ASCII string to send [Base64 encoded](https://en.wikipedia.org/wiki/Base64) attachments as text, the size limit is 2MB.
example: SUQzBAAAAAAAZ1RFTkMAAAAIAAADUkVBUEVSAFREUkMAAAAMAAADMjAyMS0w
type:
type: string
description: 'The format of attachments. The following file formats are supported: JPG, PNG, JPEG, GIF, PDF.'
example: JPG
enum:
- PNG
- JPEG
- JPG
- GIF
- PDF
message:
type: string
description: The content that is sent as an SMS. Maximum length is 500 characters. Messages will be broken into smaller segments of 160 characters and concatenated at the time of delivery. Unicode characters and emojis are supported. You can also send any text or URL.
example: welcome
sender:
required:
- phone_number
type: object
properties:
id:
type: string
description: The sender's unique user ID. You can pass either `id` or `user_id` in the parameters.
example: DnEopNmXQEGU2uvvzjgojw
deprecated: true
user_id:
type: string
description: The sender's unique user ID. You can pass either `id` or `user_id` in the parameters.
example: DnEopNmXQEGU2uvvzjgojw
deprecated: true
phone_number:
type: string
description: An SMS capable phone number allocated to Zoom Phone within the customer account. The number must be in the E.164 format. The phone number must belong to the sender and be assigned to either an user, a call queue, an auto receptionist, or the programmatic API endpoint. Get the number via a valid Zoom Phone Calling Plan or a Zoom Phone Number license. The number can only send messages after fulfilling the in-country compliance requirements.
example: '+18108001001'
description: The field that describes the sender's identity.
session_id:
type: string
description: The unique ID for the SMS session between sender and recipient. Session IDs are perpetual in nature and maintain the continuity of the conversation.
example: d39fc7e14ef9f2b6453f5f02524d79a2
to_members:
maxItems: 10
type: array
description: The list of recipients. For the US and CA toll numbers, sending to more than one recipient will create a group message with all recipients. For other number types, the messages will be sent to each recipient individually as 1:1 messages. If any recipient number is invalid, there will be an exception.
items:
required:
- phone_number
type: object
properties:
phone_number:
type: string
description: The phone number of the person receiving the SMS. The recipient phone numbers should be in the E.164 format. Opt in - START - and opt out - STOP - keywords received from these number will be honored.
example: '+12058945624'
responses:
'201':
description: "**HTTP Status Code:** `201` \n \nSMS sent successfully."
content:
application/json:
schema:
type: object
properties:
date_time:
type: string
description: The message creation time in UTC (Coordinated Universal Time).
example: '2022-01-17T08:13:27Z'
message_id:
type: string
description: 'The message ID.
'
example: E14032F2-1EDE-4D8E-924B-C83A70CD2923
session_id:
type: string
description: The session ID.
example: d39fc7e14ef9f2b6453f5f02524d79a2
'400':
description: "**HTTP Status Code:** `400` <br>\n Bad Request \n\n **Error Code:** `2001` <br>\n Account does not exist. <br>\n**Error Code:** `1001` <br>\n User does not exist: {id}. <br>\n**Error Code:** `1024` <br>\n User does not exist due to missing required parameters. <br>\n**Error Code:** `7001` <br>\n Phone number is not valid. <br>\n**Error Code:** `316` <br>\n The phone number does not conform to the E.164 standard. <br>\n**Error Code:** `300` <br>\n Unsupported content type. <br>\n**Error Code:** `135` <br>\n You cannot access another user. <br>\n**Error Code:** `121` <br>\n Unsupported content type for SMS attachments. <br>\n**Error Code:** `138` <br>\n Missing content type for SMS attachment. <br>\n**Error Code:** `140` <br>\n The SMS attachment file content does not match the specified content type. <br>\n"
'401':
description: "**HTTP Status Code:** `401` <br>\n Unauthorized \n\n **Error Code:** `124` <br>\n Account does not exist: {accountId}. <br>\n"
'429':
description: "**HTTP Status Code:** `429` <br>\n Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/). \n\n "
security:
- openapi_oauth:
- phone:write:admin
- phone:write
- phone_sms:write
- phone_sms:write:admin
- phone:read:sms_message
- phone:read:sms_message:admin
openapi_authorization: []
x-extensions:
x-permissions: []
x-macro-scopes:
- phone:write:admin
- phone:write
- phone_sms:write
- phone_sms:write:admin
x-granular-scopes:
- phone:read:sms_message
- phone:read:sms_message:admin
/phone/sms/sessions:
get:
tags:
- SMS
summary: Get account's SMS sessions
description: 'Returns details about SMS sessions for an account.
---
**Service Endpoint SMS**
* This API now supports retrieving Service Endpoint SMS sessions.
* Non-Zoom Phone users can access only Service Endpoint SMS sessions. An account-level app is required for non-Zoom Phone users to access Service Endpoint SMS.
---
**Prerequisites**
* Paid account
* Zoom Phone enabled for the account
* For Zoom Phone SMS: a Zoom Phone-enabled user
* For Service Endpoint SMS: an account-level app and a Service Endpoint phone number enabled for SMS
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_sms:read`,`phone_sms:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_sms_sessions`,`phone:read:list_sms_sessions:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`'
operationId: accountSmsSession
parameters:
- name: page_size
in: query
description: The number of records returned within a single API call.
required: false
schema:
maximum: 100
type: integer
example: 30
default: 30
- name: next_page_token
in: query
description: The current page number of returned records.
required: false
schema:
type: string
example: 2z0Ov7kngllAbfQi4ZR2eQTb3mFVYQpYAe2
- name: from
in: query
description: "The start time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format. \n\nThe date range defined by the `from` and `to` parameters should be a month as the response only includes one month's worth of data at once. \n\nIf unspecified, it returns data from the past 30 days."
required: false
schema:
type: string
format: date
example: '2021-12-01'
- name: to
in: query
description: "This field is required only when the `from` parameter is specified. \n\nEnd time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format, the same format as the `from` parameter."
required: false
schema:
type: string
format: date
example: '2021-12-31'
- name: session_type
in: query
description: 'This field filters the session list by session type.
The value for this field can be one of the following:
* `user`
* `call_queue`
* `auto_receptionist`
* `service_endpoint`
* `all`'
required: false
schema:
type: string
example: user
default: user
enum:
- user
- call_queue
- auto_receptionist
- service_endpoint
- all
- name: phone_number
in: query
description: The sender's or receiver's phone number that limits the list of SMS sessions.
required: false
schema:
type: string
example: '18108001001'
- name: filter_type
in: query
description: 'This field filters by `sent_message_time`, `received_message_time`, `last_message_time`, or `sent_received_message_time` for the From and To timestamps.
* `last_message_time`: queries which sessions last messages between From and To timestamps.
* `sent_message_time`: queries which sessions have sent messages between From and To timestamps.
* `received_message_time`: queries which sessions have received messages between From and To timestamps.
* `sent_received_message_time`: queries which sessions have either sent or received messages between the From and To timestamps.'
required: false
schema:
type: string
example: last_message_time
default: last_message_time
enum:
- sent_message_time
- received_message_time
- last_message_time
- sent_received_message_time
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
next_page_token:
type: string
description: The next page token paginates through a large set of results. A next page token returns whenever the set of the available result list exceeds the page size.
example: 2z0Ov7kngllAbfQi4ZR2eQTb3mFVYQpYAe3
page_size:
type: integer
description: The size of each page.
example: 30
sms_sessions:
maxItems: 100
type: array
items:
type: object
properties:
last_access_time:
type: string
description: The last send or receive time in UTC.
example: '2022-03-25T02:11:27Z'
participants:
maxItems: 10
type: array
description: The SMS members.
items:
type: object
properties:
display_name:
type: string
description: The participant name.
example: test api
owner:
type: object
properties:
id:
type: string
description: The owner ID.
example: DnEopNmXQEGU2uvvzjgojw
type:
type: string
description: 'The owner type:
* `user`
* `callQueue`
* `autoReceptionist`
* `sharedLineGroup`
* `serviceEndpoint`'
example: user
enum:
- user
- callQueue
- autoReceptionist
- sharedLineGroup
- serviceEndpoint
phone_number:
type: string
description: The participant phone number.
example: '18108001001'
is_session_owner:
type: boolean
description: Whether it is the owner of the session.
example: true
extension_status:
type: string
description: "This field indicates the status of the extension. \n* `inactive` \n* `deleted`"
example: deleted
enum:
- inactive
- deleted
extension_deleted_time:
type: string
description: The date time the extension was deleted. It exists only when extension_status is `deleted`.
example: '2022-10-14T22:10:54Z'
session_id:
type: string
description: The SMS session ID.
example: d39fc7e14ef9f2b6453f5f02524d79a2
session_type:
type: string
description: 'The session type.
The value for this field can be one of the following:
* `user`
* `call_queue`
* `auto_receptionist`
* `service_endpoint`'
example: user
'400':
description: "**HTTP Status Code:** `400` <br>\n Bad Request \n\n **Error Code:** `400` <br>\n SMS session type is invalid. <br>\n"
'401':
description: "**HTTP Status Code:** `401` <br>\n Unauthorized \n\n **Error Code:** `124` <br>\n Account does not exist: {accountId}. <br>\n"
'404':
description: "**HTTP Status Code:** `404` <br>\n Not Found \n\n **Error Code:** `7012` <br>\n Error retrieving SMS. <br>\n"
'429':
description: "**HTTP Status Code:** `429` <br>\n Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/). \n\n "
security:
- openapi_oauth:
- phone:read:admin
- phone_sms:read
- phone_sms:read:admin
- phone:read:list_sms_sessions
- phone:read:list_sms_sessions:admin
openapi_authorization: []
x-extensions:
x-permissions: []
x-macro-scopes:
- phone:read:admin
- phone_sms:read
- phone_sms:read:admin
x-granular-scopes:
- phone:read:list_sms_sessions
- phone:read:list_sms_sessions:admin
/phone/sms/sessions/{sessionId}:
get:
tags:
- SMS
summary: Get SMS session details
description: 'Returns details about an SMS session.
**Service Endpoint SMS**
* This API now supports retrieving a Service Endpoint SMS session.
* The `sessionId` must belong to a Service Endpoint SMS session.
* Non-Zoom Phone users can access only Service Endpoint SMS sessions. An account-level app is required for non-Zoom Phone users to access Service Endpoint SMS.
**Prerequisites**
* A paid account
* Zoom Phone enabled for the account
* For Zoom Phone SMS: a Zoom Phone-enabled user
* For Service Endpoint SMS: an account-level app and a Service Endpoint phone number enabled for SMS
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone:read`,`phone_sms:read`,`phone_sms:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:sms_session`,`phone:read:sms_session:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`'
operationId: smsSessionDetails
parameters:
- name: sessionId
in: path
description: The SMS session ID.
required: true
schema:
type: string
example: 35ccd84704253f5f793d0a721c7fe655
- name: page_size
in: query
description: The number of records returned within a single API call.
required: false
schema:
maximum: 100
type: integer
example: 30
default: 30
- name: next_page_token
in: query
description: The current page number of returned records.
required: false
schema:
type: string
example: 2z0Ov7kngllAbfQi4ZR2eQTb3mFVYQpYAe2
- name: from
in: query
description: The start time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format. The date range defined by the `from` and `to` parameters should be a month as the response only includes one month's worth of data at once. If unspecified, returns data from the past 30 days.
required: false
schema:
type: string
format: date
example: '2021-12-01'
- name: to
in: query
description: '**Required** only when the `from` parameter is specified. End time and date in **yyyy-mm-dd** or **yyyy-MM-dd''T''HH:mm:ss''Z''** format, the same format as the `from` parameter.'
required: false
schema:
type: string
format: date
example: '2021-12-31'
- name: delivery_status
in: query
description: 'This field filters messages by `all`, `received`, `delivered`, `failed_to_send`, `sent`, `failed_to_deliver`, or `unknown` status.
* `all`: searches for messages in any status. (Default)
* `received`: queries messages that were successfully received on the Zoom number.
* `delivered`: queries messages that were successfully delivered to the intended recipient(s) on the mobile operator''s network.
* `failed_to_send`: queries messages that could not be sent from the Zoom network to the mobile operator''s network.
* `sent`: queries messages that have been sent to the carrier but a delivery confirmation has not been received yet.
* `failed_to_deliver`: queries messages that could not be delivered to the recipient.
* `unknown`: queries messages where the system is unable to determine if the delivery was successful.'
required: false
schema:
type: string
example: delivered
default: all
enum:
- all
- received
- delivered
- failed_to_send
- sent
- failed_to_deliver
- unknown
- name: sort
in: query
description: 'The order of the SMS to return based on creation time. `1`: ascending `2`: descending'
required: false
schema:
type: integer
example: 1
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
next_page_token:
type: string
description: The next page token paginates through a large set of results. It returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
example: 2z0Ov7kngllAbfQi4ZR2eQTb3mFVYQpYAe4
page_size:
type: integer
description: The size of the page.
example: 30
sms_histories:
maxItems: 100
type: array
items:
type: object
properties:
attachments:
maxItems: 10
type: array
items:
type: object
properties:
download_url:
type: string
description: The download link for the media file.
example: https://exampleurl.us/file/download/x18dcVWxTcCzbp4zr2AT3A?jwt=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjcm9zc2ZpbGUiLCJhdWQiOiJmaWxlIiwiZGlnIjoiYTZkODE4NzQ2MDNmN2UzZWM4OThkNDMxM2IxNjNhNTQ4NGI4MjkxMTA0ZmQyYzc4MTg1NmY0MGUxY2FlOTI3YyIsImV4cCI6MTY0ODE5NDA1NH0.eCURcan9QOOw9wvBdSn_-TBzgT5HWBzp04IfsK19Oto
id:
type: string
description: The media file ID.
example: x18dcVWxTcCzbp4zr2AT3A
name:
type: string
description: The file name.
example: FWDHOMaNRaqIvNc3aIdisg.jpg
size:
type: integer
description: The file size.
example: 225740
type:
type: string
description: 'The file type: OTHER, PNG, GIF, JPG, AUDIO, VIDEO'
example: JPG/JPEG
enum:
- OTHER
- PNG
- GIF
- JPG
- AUDIO
- VIDEO
date_time:
type: string
description: The UTC time the message was created.
example: '2022-03-23T02:58:01Z'
direction:
type: string
description: Whether the direction is In or Out.
example: In
message:
type: string
description: The contents of the SMS text.
example: welcome
message_id:
type: string
description: The message ID.
example: IQ-cRH5P5EiTWCwpNzScnECJw
delivery_status:
type: string
description: 'The status of the message.
* `received`: The message was successfully received on the Zoom number.
* `delivered`: The message was successfully delivered to the intended recipient(s) on the mobile operator''s network.
* `failed_to_send`: The message could not be sent from the Zoom network to the mobile operator''s network.
* `sent`: The message has been sent to the carrier, but a delivery confirmation has not been received yet. Note that some carriers do not provide delivery confirmations.
* `failed_to_deliver`: The message could not be delivered to the recipient.
* `unknown`: The system is unable to determine if this message was delivered successfully.'
example: delivered
enum:
- received
- delivered
- failed_to_send
- sent
- failed_to_deliver
- unknown
message_type:
type: integer
description: "The message type: \n \n1 - SMS \n \n2 - MMS \n \n3 - GROUP_SMS \n \n4 - GROUP_MMS \n \n5 - SMS_INTER \n \n6 - MSG_ON_NET"
example: 2
enum:
- 1
- 2
- 3
- 4
- 5
- 6
sender:
required:
- phone_number
type: object
properties:
display_name:
type: string
description: The sender's name.
example: test api
owner:
type: object
properties:
id:
type: string
description: The owner ID.
example: DnEopNmXQEGU2uvvzjgojw
type:
type: string
description: 'The owner type:
* `user`
* `callQueue`
* `autoReceptionist`
* `sharedLineGroup`
* `serviceEndpoint`'
example: user
enum:
- user
- callQueue
- autoReceptionist
- sharedLineGroup
- serviceEndpoint
phone_number:
type: string
description: The sender's phone number.
example: '18108001001'
to_members:
maxItems: 10
type: array
items:
required:
- phone_number
type: object
properties:
display_name:
type: string
description: The participant's name.
example: ezreal mao
owner:
type: object
properties:
id:
type: string
description: The owner ID.
example: WeD59Hn7SvqNRB9jcxz5NQ
type:
type: string
description: 'The owner type:
* `user`
* `callQueue`
* `autoReceptionist`
* `sharedLineGroup`
* `serviceEndpoint`'
example: user
enum:
- user
- callQueue
- autoReceptionist
- sharedLineGroup
- serviceEndpoint
phone_number:
type: string
description: The receiver's phone number.
example: '12092693625'
'400':
description: "**HTTP Status Code:** `400` <br>\n Bad Request \n\n **Error Code:** `400` <br>\n The next page token is invalid or expired.\nRequires from and to\npage number should be > 0 <br>\n"
'401':
description: "**HTTP Status Code:** `401` <br>\n Unauthorized \n\n **Error Code:** `124` <br>\n Access token has expired. <br>\n"
'404':
description: "**HTTP Status Code:*
# --- truncated at 32 KB (108 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zoom-phone/refs/heads/main/openapi/zoom-phone-sms-api-openapi.yml