Zoom Phone Emergency Service Locations API

The Emergency Service Locations API from Zoom Phone — 3 operation(s) for emergency service locations.

Operations 6

POST /phone/batch_locations Batch add emergency service locations #
GET /phone/locations List emergency service locations #
POST /phone/locations Add an emergency service location #
GET /phone/locations/{locationId} Get emergency service location details #
DELETE /phone/locations/{locationId} Delete an emergency location #
PATCH /phone/locations/{locationId} Update emergency service location #

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-emergency-service-locations-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-emergency-service-locations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Phone Emergency Service Locations 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: Emergency Service Locations
paths:
  /phone/batch_locations:
    post:
      tags:
      - Emergency Service Locations
      summary: Batch add emergency service locations
      description: "Adds emergency service locations in batch. \n\n**Prerequisites:**\n* Pro or higher account plan with Zoom phone license\n* Account owner or admin permissions\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:batch_emergency_locations:admin`\n\n**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`"
      operationId: batchAddLocations
      requestBody:
        content:
          application/json:
            schema:
              required:
              - locations
              type: object
              properties:
                locations:
                  maxItems: 10
                  type: array
                  items:
                    required:
                    - company_address
                    - display_name
                    - identifier
                    type: object
                    properties:
                      bssid:
                        type: string
                        description: The location's BSSID (Basic Service Set Identifier).
                        example: SA43YjfBTS6gJbUpfvIziQ
                      company_address:
                        required:
                        - address_line1
                        - country
                        type: object
                        properties:
                          address_line1:
                            type: string
                            description: The location's physical address.
                            example: 55 Almaden Boulevard
                          address_line2:
                            type: string
                            description: The location's optional physical address information. For example, a suite number.
                            example: 6th floor
                          city:
                            type: string
                            description: The location's city.
                            example: SAN JOSE
                          country:
                            type: string
                            description: The location's country.
                            example: United States
                          state_code:
                            type: string
                            description: The location's state, province, or territory.
                            example: CA
                          vat_number:
                            type: string
                            description: 'The location''s VAT/NIF/CIF number. This number gets a new phone number online.


                              **Note:** For Belgium, Netherlands, Portugal, Spain, and Switzerland, this field is required.'
                            example: 123456789B01
                          zip:
                            type: string
                            description: The location's ZIP or postal code.
                            example: '95113'
                      display_name:
                        type: string
                        description: The location's display name.
                        example: example location
                      elin:
                        type: string
                        description: The location's ELIN (Emergency Location Identification Number). This value can be a BYOC number. If you use a BYOC number, you will need to manually update the BYOC address with your carrier.
                        example: '+12058945656'
                      identifier:
                        type: string
                        description: The location's ID.
                        example: eRYjZlItQIqlFbCuRA__SQ
                      network_switches:
                        maxItems: 1000
                        type: array
                        items:
                          type: object
                          properties:
                            mac_address:
                              type: string
                              description: The location's assigned MAC address. Required if the `network_switches` value is set.
                              example: 0004f25eec3d
                            port:
                              type: string
                              description: The location's port label. You **cannot** pass this parameter with the `port_prefix` and `port_range` parameter.
                              example: '11'
                            port_prefix:
                              type: string
                              description: 'The location''s port prefix. The prefix value **cannot** end with a digit.


                                This parameter passes with the `port_range_from` and `port_range_to` parameters.'
                              example: '1'
                            port_range_from:
                              type: string
                              description: 'The location''s port starting range number. This can be a non-negative integer value.


                                This value **must** be less than or equal to the `port_range_to` value.'
                              example: '10'
                            port_range_to:
                              type: string
                              description: 'The location''s port ending range number. This can be a non-negative integer value.


                                This value **cannot** be less than the `port_range_from` value.'
                              example: '20'
                      parent_identifier:
                        type: string
                        description: The location's parent location ID. Leave this value empty if the current location is a top location.
                        example: FksDtQDfR9qs3gWXNDsfIw
                      private_ip:
                        type: string
                        description: The location's subnet or private IP address. This field is required if `minimum_match_criteria` is true.
                        example: 192.1.1.2
                      public_ip:
                        type: string
                        description: The location's public IP address. This field is required for top locations.
                        example: 192.1.1.1
                      sip_group_name:
                        type: string
                        description: 'The location''s assigned SIP routing group for outgoing calls. The system routes the call to the defined [SIP trunk](https://en.wikipedia.org/wiki/SIP_trunking) in the SIP groups when location-based routing is enabled.


                          This only affects top locations and ignores all other locations.'
                        example: band width
                      minimum_match_criteria:
                        type: boolean
                        description: If true, it requires a user's location match on both public and private IP address, or BSSID, or network switch; detecting only a public IP address is not enough to detect the location.
                        example: true
                site_id:
                  type: string
                  description: The site ID.
                  example: SQv52YtkRLC2dwrDdYtGsA
      responses:
        '201':
          description: "**HTTP Status Code:** `201`   \n \nCreated."
          content:
            application/json:
              schema:
                type: object
                properties:
                  locations:
                    maxItems: 10
                    type: array
                    items:
                      type: object
                      properties:
                        display_name:
                          type: string
                          description: The location's display name.
                          example: example location
                        location_id:
                          type: string
                          description: The location ID.
                          example: FwOAeL4TRmqQrmF0jOfzkQ
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `300` <br>\n Validation Failed.\nLocation does not exist: {0}.\nToo many concurrent requests. A request to add locations batch has already been made.\nLocations size must be less than 10.\nYou can only access up to 5000 locations.\nCan not bind ELIN if location does not have an emergency address.\nA phone number can not be bound to multiple locations at the same time.\nPhone number format invalid.\nPhone number does not exist.\nThere is an error with the parent location of the sub location.\nNetwork switches size must be less than 100.\nSwitch MAC address is required.\nDuplicate Switch Info found.\nMac Address format invalid.\nNumber bssid per location limited to less than 100.\nBSSID format error.\nEmergency address Line 1 is required.\nEmergency address country is required.\nIP format error.\nPublic IP is required.\nSIP group does not exist.\nIdentifier can not be matched.\nYou can only access up to {0} level.\nThis location identifier already exists. You cannot have duplicate identifiers.\nThe parent_identifier can not be the value of the identifier of the same location.\nThis location display_name already exists. You cannot have duplicate location names.\nIdentifier is required.\nLocation name is required.\nEmergency address VAT is required in {0}.\nEmergency address state code is required in {0}.\nEmergency address zip is required in {0}.\nThe field can not exceed {0} characters. <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:batch_emergency_locations:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:write:admin
        x-granular-scopes:
        - phone:write:batch_emergency_locations:admin
  /phone/locations:
    get:
      tags:
      - Emergency Service Locations
      summary: List emergency service locations
      description: "Returns emergency service locations. \n**Note**: When you enable [multiple sites](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites), the `site_id` parameter is required.\n\n**Prerequisites:** \n* Pro or a higher account with Zoom Phone license \n* Account owner or admin permissions\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_emergency_locations:admin`\n\n**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`"
      operationId: listLocations
      parameters:
      - name: next_page_token
        in: query
        description: The next page token paginates through large result sets. A next page token returns 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
      - 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: site_id
        in: query
        description: "The unique identifier of the site. It can be retrieved from the [List Phone Sites](https://marketplace.zoom.us/docs/api-reference/phone/methods#operation/listPhoneSites) API. \n\n**Note:** When the account has been enabled Multiple Sites, this field is required."
        required: false
        schema:
          type: string
          example: SQv52YtkRLC2dwrDdYtGsA
      responses:
        '200':
          description: "**HTTP Status Code:** `200`  \n\nEmergency service locations listed successfully."
          content:
            application/json:
              schema:
                type: object
                properties:
                  locations:
                    type: array
                    description: The information about emergency service locations.
                    items:
                      type: object
                      properties:
                        bssid:
                          type: string
                          description: The emergency service location's BSSID (Basic Service Set Identifier).
                          example: SA43YjfBTS6gJbUpfvIziQ
                        elin:
                          type: object
                          properties:
                            phone_number:
                              type: string
                              description: The emergency service location's phone number.
                              example: '+12058945656'
                            phone_number_id:
                              type: string
                              description: The emergency service location's phone number ID.
                              example: 9h5vTQJ0TmyKs0wItZ3JAw
                          description: The emergency service location's ELIN (Emergency Location Identification Number).
                        id:
                          type: string
                          description: The emergency service location's ID.
                          example: eRYjZlItQIqlFbCuRA__SQ
                        identifier:
                          type: string
                          description: The emergency service location's unique ID.
                          example: FksDtQDfR9qs3gWXNDsfIw
                        name:
                          type: string
                          description: The emergency service location's name.
                          example: example location
                        network_switches:
                          type: array
                          description: The network switch information.
                          items:
                            type: object
                            properties:
                              mac_address:
                                type: string
                                description: The MAC address.
                                example: 0004f25eec3d
                              port:
                                type: string
                                description: The port's label.
                                example: '23'
                              port_prefix:
                                type: string
                                description: The port's prefix.
                                example: '01'
                              port_range_from:
                                type: string
                                description: The port's range from value.
                                example: '01'
                              port_range_to:
                                type: string
                                description: The port's range to value.
                                example: '02'
                        parent_location_id:
                          type: string
                          description: The parent location's ID.
                          example: RTGmTYafRU24RqJunfotSA
                        private_ip:
                          type: string
                          description: The emergency service location's subnet or private IP address.
                          example: 192.1.1.2
                        public_ip:
                          type: string
                          description: The emergency service location's public IP address.
                          example: 192.1.1.1
                        sip_group:
                          type: object
                          properties:
                            display_name:
                              type: string
                              description: The SIP group's display name.
                              example: band width
                            id:
                              type: string
                              description: The SIP group's ID.
                              example: F_WKDH6FRdeddZBcNUlUeA
                          description: The emergency service location's SIP group information.
                        site:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The site ID.
                              example: SQv52YtkRLC2dwrDdYtGsA
                            name:
                              type: string
                              description: The site name.
                              example: Main Site
                          description: The emergency service location's site information.
                        emergency_address:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The emergency address ID.
                              example: Qza2T_KATwCeUfTkzGsOmQ
                            address_line1:
                              type: string
                              description: The location's physical address.
                              example: 55 ALMADEN BLVD
                            address_line2:
                              type: string
                              description: The location's optional physical address information. For example, a suite number.
                              example: 6th floor
                            city:
                              type: string
                              description: The location's city.
                              example: SAN JOSE
                            state_code:
                              type: string
                              description: The location's State/Province/Territory.
                              example: CA
                            country:
                              type: string
                              description: The location's country.
                              example: US
                            zip:
                              type: string
                              description: The location's ZIP or postal code.
                              example: '95113'
                            vat_number:
                              type: string
                              description: 'The location''s VAT/NIF/CIF number. This number is used to get a new phone number online.


                                **Note:** For Belgium, Netherlands, Portugal, Spain, and Switzerland, this field is required.'
                              example: 123456789B01
                          description: The specific emergency address for the location
                        minimum_match_criteria:
                          type: boolean
                          description: If true, it requires a user's location match on both public and private IP address, or BSSID, or network switch; detecting only a public IP address is not enough to detect the location.
                          example: true
                  next_page_token:
                    type: string
                    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.
                    example: T6WMY4fJBIAlxPUiqRtwvQS9dvsq8AoRam2
                  page_size:
                    type: integer
                    description: The number of records returned with a single API call.
                    example: 30
                  total_records:
                    type: integer
                    description: The total number of records returned.
                    example: 20
        '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:list_emergency_locations:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:read:admin
        x-granular-scopes:
        - phone:read:list_emergency_locations:admin
    post:
      tags:
      - Emergency Service Locations
      summary: Add an emergency service location
      description: "Adds an emergency service location.\n\n**Prerequisites** \n* Pro or a higher account with Zoom Phone license \n* Account owner or admin permissions\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:emergency_location:admin`\n\n**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`"
      operationId: addLocation
      requestBody:
        content:
          application/json:
            schema:
              required:
              - emergency_address_id
              - name
              type: object
              properties:
                bssid:
                  type: string
                  description: A comma-separated list of the emergency service location's BSSIDs (Basic Service Set Identifiers).
                  example: SA43YjfBTS6gJbUpfvIziQ
                elin_phone_number_id:
                  type: string
                  description: The ELIN (Emergency Location Identification Number). This value must be a phone number ID or phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
                  example: 9h5vTQJ0TmyKs0wItZ3JAw
                emergency_address_id:
                  type: string
                  description: The emergency location address ID.
                  example: Qza2T_KATwCeUfTkzGsOmQ
                name:
                  type: string
                  description: The emergency service location's name.
                  example: example location update
                parent_location_id:
                  type: string
                  description: The parent location's ID to assign to the emergency service location.
                  example: FwOAeL4TRmqQrmF0jOfzkQ
                private_ip:
                  type: string
                  description: A comma-separated list of the emergency service location's subnet or private IP addresses. This field is required if `minimum_match_criteria` is true.
                  example: 192.1.1.3
                public_ip:
                  type: string
                  description: A comma-separated list of the emergency service location's public IP addresses. This parameter is required for top locations.
                  example: 192.1.1.4
                sip_group_id:
                  type: string
                  description: The SIP group ID to assign to the emergency service location. This value is not required for non-top locations.
                  example: SA43YjfBTS6gJbUpfvIziQ
                site_id:
                  type: string
                  description: The site ID.
                  example: F_WKDH6FRdeddZBcNUlUeA
                minimum_match_criteria:
                  type: boolean
                  description: If true, it requires a user's location match on both public and private IP address, or BSSID, or network switch; detecting only a public IP address is not enough to detect the location.
                  example: true
                network_switches:
                  maxItems: 1000
                  type: array
                  description: 'The list of network switch bindings to locate phones at this emergency service location. When a Zoom device registers on a switch/port covered by one of these bindings, its physical location is reported as this location. For example, for E911 dispatch.


                    This field is optional. Omit it, or pass an empty array, to create the location without any switch bindings. You can add bindings later via the switch management APIs.


                    **Limits**

                    - Up to **1000** bindings per request.

                    - Up to **500** bindings may share the same `mac_address`.

                    - The total number of bindings across all locations in your account is capped by your account-level quota.


                    **Uniqueness**

                    - Two entries with the same values on all five fields are rejected as duplicates.


                    **Overlap across locations (same site)**

                    - Bindings with different `mac_address` values never conflict.

                    - Two bindings on the same `mac_address` conflict only when they both cover the same physical port. For example, `port: "11"` conflicts with `port_range_from: "10"`, `port_range_to: "20"`; two numeric ranges conflict when their intervals overlap; two prefixed ranges conflict when the prefixes are identical and the intervals overlap; a numeric range and a prefixed range never conflict because they describe different port-naming schemes.

                    - An "all ports" binding (all port fields empty) conflicts only with another "all ports" binding on the same MAC — it does not conflict with specific single/range bindings on the same MAC.'
                  items:
                    required:
                    - mac_address
                    type: object
                    properties:
                      mac_address:
                        pattern: ^(([0-9A-Fa-f]{2}:)|([0-9A-Fa-f]{2}-)){5}[0-9A-Fa-f]{2}$
                        type: string
                        description: 'MAC address of the switch this binding applies to. **Required**.


                          Format: six 2-digit hexadecimal octets separated by `:` or `-` (case-insensitive). Separators may be mixed within the same value. Values without separators are rejected.


                          Examples: `00:04:f2:5e:ec:3d`, `A1-B2-C3-D4-E5-F6`.

                          Rejected: `0004f25eec3d`.'
                        example: 00:04:f2:5e:ec:3d
                      port:
                        maxLength: 128
                        type: string
                        description: Exact switch-port identifier, used for "single port" matching. When `port` is set, `port_prefix`, `port_range_from`, and `port_range_to` must all be empty.
                        example: '11'
                      port_prefix:
                        maxLength: 128
                        type: string
                        description: 'Non-numeric prefix shared by a range of ports, used for "prefixed port range" matching. The **last character must not be a digit** (e.g. `Gig0/` is valid; `Gig01` is not).


                          When this field is set, both `port_range_from` and `port_range_to` must also be provided, and `port` must be empty.


                          Example: `port_prefix: "Gig0/"` with `port_range_from: "1"` and `port_range_to: "24"` covers ports `Gig0/1` through `Gig0/24`.


                          Maximum length: 128 characters.'
                        example: Gig0/
                      port_range_from:
                        maxLength: 128
                        pattern: ^(0|[1-9][0-9]*)$
                        type: string
                        description: 'Lower bound (inclusive) of the port range. A non-negative integer expressed as a string; leading zeros are not allowed (`"0"` is valid; `"01"` is not).


                          Must be paired with `port_range_to`, and `port_range_from` must be less than or equal to `port_range_to` (numeric comparison).'
                        example: '1'
                      port_range_to:
                        maxLength: 128
                        pattern: ^(0|[1-9][0-9]*)$
                        type: string
                        description: Upper bound (inclusive) of the port range. Same format and pairing rules as `port_range_from`.
                        example: '24'
                    description: 'One switch-port binding. Each entry describes, for a given switch MAC address, which ports should be treated as belonging to this location. Choose **exactly one** of the four matching modes below — any other combination of the four port fields is rejected.


                      1. **All ports of the switch** — leave `port`, `port_prefix`, `port_range_from`, and `port_range_to` all empty. Any phone attaching to any port of this switch reports this location.

                      2. **A single port** — set only `port`.

                      3. **A numeric port range** — set only `port_range_from` and `port_range_to` (both required).

                      4. **A prefixed port range** (for switches that label ports like `Gig0/1` ... `Gig0/24`) — set `port_prefix`, `port_range_from`, and `port_range_to`; leave `port` empty.'
      responses:
        '201':
          description: "**HTTP Status Code:** `201` \n\nCreated."
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The phone's location ID.
                    example: eRYjZlItQIqlFbCuRA__SQ
                  name:
                    type: string
                    description: The phone's location name.
                    example: example location
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `300` <br>\n Validation failed.\nA site ID is required.\nParent location does not exist.\nAn emergency address is required.\nAn emergency address is required.\nA location name is required.\nA public IP is required.\nYou can only access up to \"{0}\" level.\nYou can only access up to 5000 locations.\nThe maximum number of \"{0}\" is {1}.\nCannot bind an ELIN if the location does not have an emergency address.\nIP format error.\nDuplicate Switch Info 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:write:emergency_location:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:write:admin
        x-granular-scopes:
        - phone:write:emergency_location:admin
  /phone/locations/{locationId}:
    get:
      tags:
      - Emergency Service Locations
      summary: Get emergency service location details
      description: "Returns an emergency service location's information.\n\n**Prerequisites:** \n* Pro or a higher account with Zoom Phone license \n* Account owner 

# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zoom-phone/refs/heads/main/openapi/zoom-phone-emergency-service-locations-api-openapi.yml