Zoom Phone SMS Campaign API

The SMS Campaign API from Zoom Phone — 6 operation(s) for sms campaign.

Operations 7

GET /phone/sms_campaigns List SMS campaigns #
GET /phone/sms_campaigns/{smsCampaignId} Get an SMS campaign #
POST /phone/sms_campaigns/{smsCampaignId}/phone_numbers Assign a phone number to SMS campaign #
GET /phone/sms_campaigns/{smsCampaignId}/phone_numbers/opt_status List opt statuses of phone numbers assigned to SMS campaign #
PATCH /phone/sms_campaigns/{smsCampaignId}/phone_numbers/opt_status Update opt statuses of phone numbers assigned to SMS campaign #
DELETE /phone/sms_campaigns/{smsCampaignId}/phone_numbers/{phoneNumberId} Unassign a phone number #
GET /phone/user/{userId}/sms_campaigns/phone_numbers/opt_status List user's opt statuses of phone numbers #

Work with this as data

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-campaign-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 Specification

zoom-phone-sms-campaign-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Phone SMS Campaign 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 Campaign
paths:
  /phone/sms_campaigns:
    get:
      tags:
      - SMS Campaign
      summary: List SMS campaigns
      description: "Returns a list of all SMS campaigns in a Zoom account.\n\n**Prerequisites** \n* A Pro or higher account plan \n* A Zoom Phone license\n\n\n\n**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`\n\n**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_sms_campaigns:admin`\n\n**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`"
      operationId: listAccountSMSCampaigns
      parameters:
      - name: page_size
        in: query
        description: The number of records returned within a single API call.
        required: false
        schema:
          maximum: 300
          type: integer
          example: 30
          default: 30
      - name: next_page_token
        in: query
        description: The next page token paginates through a large set of results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
        required: false
        schema:
          type: string
          example: BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2
      responses:
        '200':
          description: "**HTTP Status Code:** `200` **OK**  \n \nSMS campaign listed successfully."
          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 return whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
                    example: bkOcmnm6mn6ioYAi10BcgRiEL38WzAo6jP2
                  page_size:
                    maximum: 300
                    type: integer
                    description: The number of records returned within a single API call.
                    example: 30
                    default: 30
                  sms_campaigns:
                    maxItems: 300
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: The campaign ID.
                          example: C-BlVwSdjvS3WXk5gzfIQFfQ
                        display_name:
                          type: string
                          description: The display name for the SMS campaign.
                          example: Test SMS Campaign
                        status:
                          type: string
                          description: The status of the SMS campaign. Returns `--` if the campaign is in an exception status.
                          example: active
                          enum:
                          - draft
                          - active
                          - expired
                          - pending
                          - declined
                          - --
                        brand:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The brand ID.
                              example: B-c3AN66d_Q4mrQFNUaW-G2w
                            name:
                              type: string
                              description: The brand name.
                              example: Test Campaign
                          description: The business information from Zoom account.
                  total_records:
                    type: integer
                    description: The total number of records returned.
                    example: 1
        '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. <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 "
      deprecated: true
      security:
      - openapi_oauth:
        - phone:read:admin
        - phone:read:list_sms_campaigns:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:read:admin
        x-granular-scopes:
        - phone:read:list_sms_campaigns:admin
  /phone/sms_campaigns/{smsCampaignId}:
    get:
      tags:
      - SMS Campaign
      summary: Get an SMS campaign
      description: "Returns a specific SMS campaign.\n\n**Prerequisites:** \n* A Pro or higher account plan \n* A Zoom Phone license\n\n\n\n**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`\n\n**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:sms_campaign:admin`\n\n**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`"
      operationId: GetSMSCampaign
      parameters:
      - name: smsCampaignId
        in: path
        required: true
        schema:
          type: string
          example: C-BlVwSdjvS3WXk5gzfIQFfQ
      responses:
        '200':
          description: "**HTTP Status Code:** `200` **OK**  \n \nSMS campaign details retrieved successfully."
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The campaign ID.
                    example: C-BlVwSdjvS3WXk5gzfIQFfQ
                  display_name:
                    type: string
                    description: The display name for the SMS campaign.
                    example: Test SMS Campaign
                  status:
                    type: string
                    description: The status of the SMS campaign. Returns `--` if the campaign is in an exception status.
                    example: active
                    enum:
                    - draft
                    - active
                    - expired
                    - pending
                    - declined
                    - --
                  service_type:
                    type: string
                    description: Which service the campaign is used for.
                    example: zoomPhone
                    enum:
                    - zoomPhone
                    - contactCenter
                  brand:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The brand ID.
                        example: B-c3AN66d_Q4mrQFNUaW-G2w
                      name:
                        type: string
                        description: The brand name.
                        example: Test Campaign
                    description: The business information from Zoom account.
                  phone_numbers:
                    type: array
                    description: Assigned phone numbers.
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: The phone number ID.
                          example: iHE1MQAET2iV85MbfaQmwg
                        number:
                          type: string
                          description: The phone number that is assigned to the SMS campaign.
                          example: '+18887193005'
                  auto_renew:
                    type: boolean
                    description: Whether to keep the SMS capabilities for all phone numbers associated with this campaign. If 'false', the campaign will expire 90 days from the creation date.
                    example: true
                  create_time:
                    type: string
                    description: The creation time of the campaign.
                    example: '2022-07-21T02:23:25.000Z'
                  use_case:
                    type: string
                    description: What will you be using these campaigns for.
                    example: lowVolumeMixed
                    enum:
                    - lowVolumeMixed
                  categories_fit:
                    type: boolean
                    description: Whether *all* customer-facing messages fit into the categories `Account Notifications`, `Customer Care`, `Delivery Notifications`, `Marketing`, and `Public Service Announcements`.
                    example: true
                  content_type:
                    type: array
                    description: The message's content type.
                    items:
                      type: string
                      example: urlLink
                      enum:
                      - urlLink
                      - phoneNumber
                      - ageGated
                      - lending
                  sample_message_1:
                    type: string
                    description: The sample message 1.
                    example: Test Campaign Message1
                  sample_message_2:
                    type: string
                    description: The sample message 2.
                    example: Test Campaign Message2
                  sample_message_3:
                    type: string
                    description: The sample message 3.
                    example: Test Campaign Message3
                  sample_message_4:
                    type: string
                    description: The sample message 4.
                    example: Test Campaign Message4
                  sample_message_5:
                    type: string
                    description: The sample message 5.
                    example: Test Campaign Message5
        '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 "
      deprecated: true
      security:
      - openapi_oauth:
        - phone:read:admin
        - phone:read:sms_campaign:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:read:admin
        x-granular-scopes:
        - phone:read:sms_campaign:admin
  /phone/sms_campaigns/{smsCampaignId}/phone_numbers:
    post:
      tags:
      - SMS Campaign
      summary: Assign a phone number to SMS campaign
      description: "[Assigns a phone number to the SMS campaign](https://support.zoom.us/hc/en-us/articles/5016496738445-SMS-MMS-10DLC-Compliance-for-Zoom-Phone-and-Zoom-Contact-Center#h_01FYVVQM1WMW5JD48YNY3J581B).\n\n**Prerequisites:** \n* A Business or Enterprise account \n* A Zoom Phone license\n\n\n\n**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`\n\n**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:sms_campaign_number:admin`\n\n**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`"
      operationId: assignCampaignPhoneNumbers
      parameters:
      - name: smsCampaignId
        in: path
        description: The unique identifier of the campaign to which the phone number will be assigned.
        required: true
        schema:
          type: string
          example: C-BlVwSdjvS3WXk5gzfIQFfQ
      requestBody:
        description: Either the phone number ID or the phone number in the request body.
        content:
          application/json:
            schema:
              required:
              - contact_number
              - loa_authorizing_person
              - phone_numbers
              - title
              type: object
              properties:
                phone_numbers:
                  maxItems: 49
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The phone number ID.
                        example: iHE1MQAET2iV85MbfaQmwg
                      number:
                        type: string
                        description: The phone number in E164 format.
                        example: '+18887193005'
                loa_authorizing_person:
                  type: string
                  description: The name of the employee issuing the letter of authorization required to port in SMS capabilities on the numbers.
                  example: Alex Carter
                contact_number:
                  type: string
                  description: The contact phone number of the employee issuing the letter of authorization required to port in SMS capabilities on the numbers.
                  example: '+12090000000'
                title:
                  type: string
                  description: The job Title of the person authorizing and signing the leave of absence.
                  example: Zoom Engineer
                contact_emails:
                  type: string
                  description: The contact email of the employee issuing the letter of authorization required to port in SMS capabilities on the numbers.
                  example: alex.carter@zoom.us
      responses:
        '201':
          description: "**HTTP Status Code:** `201`   \n \nPhone numbers assigned successfully. \n"
          content:
            application/json:
              schema:
                type: object
                properties:
                  phone_numbers:
                    maxItems: 49
                    type: array
                    description: The assigned phone numbers.
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: The phone number ID.
                          example: iHE1MQAET2iV85MbfaQmwg
                        number:
                          type: string
                          description: The phone number (in E164 format) that is assigned to the SMS campaign.
                          example: '+18887193005'
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `400` <br>\n The campaign does not exist.<br>\nThe campaign is not active.<br>\nNumbers both not available.<br>\nCan not assign campaign to pending number: {0}.<br>\nCan not assign campaign to toll free number: {0}.<br>\nCan not enable sms for BYOC number: {0}.<br>\nCan not assign campaign to pending campaign number.<br>\nThe selected number size exceeds campaign capacity.<br>\nThe maximum size for phone numbers is 49. <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 "
      deprecated: true
      security:
      - openapi_oauth:
        - phone:write:admin
        - phone:write:sms_campaign_number:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:write:admin
        x-granular-scopes:
        - phone:write:sms_campaign_number:admin
  /phone/sms_campaigns/{smsCampaignId}/phone_numbers/opt_status:
    get:
      tags:
      - SMS Campaign
      summary: List opt statuses of phone numbers assigned to SMS campaign
      description: 'Returns the opt statuses of phone numbers that are assigned to SMS the campaign.


        **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`


        **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:sms_campaign_number_opt_status:admin`


        **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`'
      operationId: getNumberCampaignOptStatus
      parameters:
      - name: smsCampaignId
        in: path
        description: The SMS campaign ID.
        required: true
        schema:
          type: string
          example: C-_2Vkm3BsRoqxybJbP9HqFA
      - name: consumer_phone_number
        in: query
        description: The end user's phone number that sends the Opt-in or Opt-out keyword to the Zoom Phone number.
        required: true
        schema:
          type: string
          example: '15043449240'
      - name: zoom_phone_user_numbers
        in: query
        description: The Zoom users' phone numbers that receive the Opt-in or Opt-out keyword from the end user.
        required: true
        schema:
          maxItems: 10
          uniqueItems: true
          type: array
          items:
            type: string
            example: '12094436304'
      responses:
        '200':
          description: The list of opt statuses for each pair of sender's phone number and receiver's phone number.
          content:
            application/json:
              schema:
                required:
                - phone_number_campaign_opt_statuses
                type: object
                properties:
                  phone_number_campaign_opt_statuses:
                    maxItems: 10
                    uniqueItems: true
                    type: array
                    description: The list of opt statuses for each number pair.
                    items:
                      required:
                      - consumer_phone_number
                      - opt_status
                      - zoom_phone_user_number
                      type: object
                      properties:
                        consumer_phone_number:
                          type: string
                          description: The end user's phone number in E164 format that sends the Opt-in or Opt-out keyword to the Zoom Phone number.
                          example: '+15043449240'
                        zoom_phone_user_number:
                          type: string
                          description: The Zoom user's phone number in E164 format that receives the Opt-in or Opt-out keyword from the end user.
                          example: '+12094436304'
                        opt_status:
                          type: string
                          description: The opt status.
                          example: opt_out
                          enum:
                          - pending
                          - opt_out
                          - opt_in
                      description: The opt status per a number pair.
                description: The list of opt statuses.
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  Size of unique receiver phone numbers cannot exceed the predefined limit. \n\n **Error Code:** `400` <br>\n Size of unique receiver phone numbers cannot exceed {0}. <br>\n"
        '404':
          description: "**HTTP Status Code:** `404` <br>\n Not Found  Path variable smsCampaignId not found \n\n **Error Code:** `404` <br>\n Path variable smsCampaignId not found <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:read:sms_campaign_number_opt_status:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:read:admin
        x-granular-scopes:
        - phone:read:sms_campaign_number_opt_status:admin
    patch:
      tags:
      - SMS Campaign
      summary: Update opt statuses of phone numbers assigned to SMS campaign
      description: 'Updates opt statuses of phone numbers that are assigned to the SMS campaign.


        **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`


        **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:sms_campaign_number_opt_status:admin`


        **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`'
      operationId: updateNumberCampaignOptStatus
      parameters:
      - name: smsCampaignId
        in: path
        description: The SMS campaign ID.
        required: true
        schema:
          type: string
          example: C-_2Vkm3BsRoqxybJbP9HqFA
      requestBody:
        description: This field updates opt statuses of phone numbers that are assigned to the SMS campaign.
        content:
          application/json:
            schema:
              required:
              - consumer_phone_number
              - opt_status
              - zoom_phone_user_numbers
              type: object
              properties:
                consumer_phone_number:
                  type: string
                  description: The end user's phone number that sends the Opt-in or Opt-out keyword to the Zoom Phone number.
                  example: '15043449240'
                zoom_phone_user_numbers:
                  maxItems: 10
                  uniqueItems: true
                  type: array
                  description: The Zoom users' phone numbers that receive the Opt-in or Opt-out keyword from the end user.
                  items:
                    type: string
                    example: '12094436304'
                opt_status:
                  type: string
                  description: 'The opt status: either `opt_in` or `opt_out`.'
                  example: opt_out
                  enum:
                  - opt_in
                  - opt_out
              description: The request payload to update the opt statuses for phone numbers that are assigned to the SMS campaign.
      responses:
        '204':
          description: Update opt status for each pair of sender's phone number and receiver's phone number.
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  Opt status should be either opt_out or opt_in. \n\n **Error Code:** `400` <br>\n Opt status should be either opt_out or opt_in. <br>\n"
        '404':
          description: "**HTTP Status Code:** `404` <br>\n Not Found  Path variable smsCampaignId not found. \n\n **Error Code:** `404` <br>\n Path variable smsCampaignId not found. <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:update:sms_campaign_number_opt_status:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:write:admin
        x-granular-scopes:
        - phone:update:sms_campaign_number_opt_status:admin
  /phone/sms_campaigns/{smsCampaignId}/phone_numbers/{phoneNumberId}:
    delete:
      tags:
      - SMS Campaign
      summary: Unassign a phone number
      description: "[Unassigns a phone number from the SMS campaign](https://support.zoom.us/hc/en-us/articles/5016496738445-SMS-MMS-10DLC-Compliance-for-Zoom-Phone-and-Zoom-Contact-Center#h_01FYVVSPVM8MZN4Y9EW5690QHH).\nRemove the assigned phone number from the campaign.\n\n**Prerequisites:** \n* A Business or Enterprise account \n* A Zoom Phone license \n* The campaign must have been previously assigned a Zoom Phone number\n\n\n\n**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`\n\n**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:sms_campaign_number:admin`\n\n**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`"
      operationId: unassignCampaignPhoneNumber
      parameters:
      - name: smsCampaignId
        in: path
        required: true
        schema:
          type: string
          example: C-BlVwSdjvS3WXk5gzfIQFfQ
      - name: phoneNumberId
        in: path
        description: 'Provide either phone number (in E164 format) or phoneNumberId of the campaign. '
        required: true
        schema:
          type: string
          example: iHE1MQAET2iV85MbfaQmwg
      responses:
        '204':
          description: '**HTTP Status Code:** `204`

            The phone number has been unassigned successfully.'
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `404` <br>\n The brand does not exist. <br>\n**Error Code:** `400` <br>\n The campaign does not exist.<br>\nThe campaign does not have the number. <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 "
      deprecated: true
      security:
      - openapi_oauth:
        - phone:write:admin
        - phone:delete:sms_campaign_number:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:write:admin
        x-granular-scopes:
        - phone:delete:sms_campaign_number:admin
  /phone/user/{userId}/sms_campaigns/phone_numbers/opt_status:
    get:
      tags:
      - SMS Campaign
      summary: List user's opt statuses of phone numbers
      description: 'Returns the opt statuses of a user’s phone numbers. For user-level apps, pass the <a href="https://developers.zoom.us/docs/api/using-zoom-apis/#the-me-keyword" target="_blank">me</a> value instead of the userId parameter.


        **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`


        **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:sms_campaign_number_opt_status`,`phone:read:sms_campaign_number_opt_status:admin`


        **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`'
      operationId: getUserNumberCampaignOptStatus
      parameters:
      - name: userId
        in: path
        description: The user ID.
        required: true
        schema:
          type: string
          example: UEh3hQLtT7iYX5aTJWxbVw
      - name: consumer_phone_numbers
        in: query
        description: The end user's phone number that sends the Opt-in or Opt-out keyword to the Zoom Phone number.
        required: true
        schema:
          maxItems: 10
          uniqueItems: true
          type: array
          example:
          - 120944XXXXX
          items:
            type: string
            example: '+15043449240'
      - name: zoom_phone_user_numbers
        in: query
        description: The Zoom users' phone numbers that receive the Opt-in or Opt-out keyword from the end user.
        required: true
        schema:
          maxItems: 10
          uniqueItems: true
          type: array
          example:
          - 120944XXXXX
          items:
            type: string
            example: '+12094436304'
      responses:
        '200':
          description: The list of opt statuses for each pair of sender's phone number and receiver's phone number.
          content:
            application/json:
              schema:
                required:
                - phone_number_campaign_opt_statuses
                type: object
                properties:
                  phone_number_campaign_opt_statuses:
                    maxItems: 100
                    uniqueItems: true
                    type: array
                    description: The list of opt statuses for each number pair.
                    items:
                      required:
                      - consumer_phone_number
                      - opt_status
                      - zoom_phone_user_number
                      type: object
                      properties:
                        consumer_phone_number:
                          type: string
                          description: The end user's phone number in E164 format that sends the Opt-in or Opt-out keyword to the Zoom Phone number.
                          example: +120944XXXXX
                        zoom_phone_user_number:
                          type: string
                          description: The Zoom user's phone number in E164 format that receives the Opt-in or Opt-out keyword from the end user.
                          example: +120944XXXXX
                        opt_status:
                          type: string
                          description: The opt status.
                          example: opt_out
                          enum:
                          - pending
                          - opt_out
                          - opt_in
                        opt_in_status:
                          maximum: 4
                          minimum: 0
                          type: integer
                          description: 'The Opt-In status between the Zoom Phone user number and consumer phone number. This is a sub-status of `opt_status` and uses the following enumeration:

                            - 0: Default status. The Opt-In status for the Zoom Phone user number cannot be determined. This may occur when the Zoom Phone user number is not associated with a Campaign, among other reasons.

                            - 1: This is a new SMS session and an Opt-In message must be sent first.

                            - 2: An Opt-In message has been sent and a response is pending.

                            - 3: An Opt-In message has been sent and the recipient has consented to receive additional SMS messages.

                            - 4: An Opt-In message has been sent, but the recipient has declined to receive additional SMS messages, or the number has been configured to block all outbound SMS messages.'
                          format: int32
                          example: 0
                          default: 0
                          enum:
                          - 0
                          - 1
                          - 2
                          - 3
                          - 4
                        opt_in_message:
                          type: string
                          description: If `opt_in_status=1`, the `opt_in_message` will return the Opt-In message of the Campaign bound to `zoom_phone_user_number`. In this case, you must send the `opt_in_message` as the first message in the SMS session and then wait for the Opt-In response.
                          example: Text START to receive text messages from ZOOM. Message frequency may vary. Message and Data Rates may apply. To end messaging from us, reply with STOP. Reply with HELP for more information.
                      description: The opt status per a number pair.
                description: The list of opt statuses.
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `400` <br>\n Size of unique receiver phone numbers cannot exceed {0}. <br>\n"
        '404':
          description: "**HTTP Status Code:** `404` <br>\n Not Found

# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zoom-phone/refs/heads/main/openapi/zoom-phone-sms-campaign-api-openapi.yml