# Phone - **OpenAPI Version:** `3.1.1` - **API Version:** `2` 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/). 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/). 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. ## Servers - **URL:** `https://api.zoom.us/v2` ## Operations ### List an account's Zoom Phone settings - **Method:** `GET` - **Path:** `/phone/account_settings` - **Tags:** Accounts Returns an account's Zoom Phone settings. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:list_account_settings:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Account settings retrieved successfully. ###### Content-Type: application/json - **`ad_hoc_call_recording`** `object` — Whether to allow extensions to record and save calls in the cloud. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`advanced_encryption`** `object` — Whether to allow voicemail to be encrypted with keys that are not accessible to Zoom servers. These Voicemail can be decrypted only by the intended user recipient. Shared Line Appearance, Shared Line Group, Call Queue, or Auto Receptionist Voicemail is encrypted, but can still be played. Email to Voicemail, transcriptions, checking Voicemails by dialing into the Voicemail system, or web is not available when this feature is enabled. This policy requires a Power Pack license to be enabled. If the user does who inherits this policy does not have a Power Pack license, the policy is not applied. Settings is only available with client version 5.12 or later. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`allow_end_user_edit_call_handling`** `object` — Once disabled, users cannot to edit their call handling settings on the web portal or enable call forwarding on the client. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`allow_mobile_home_phone_callout`** `object` — Allows users to use mobile or home phone to place calls. Zoom app will call this device first before ringing the called number. Users' Call Me On phone number will be masked with Zoom Phone caller ID. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`allowed_call_locations`** `object` — Once enabled, it defines where the extension or user can make and accept calls and send SMS. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`allow_internal_calls`** `boolean` — Whether to allow internal calls when outside of the allowed locations * **`locations_applied`** `boolean` — Whether locations have been applied. - **`audio_intercom`** `object` — Whether to allow hands-free peer-to-peer conversations. When an intercom call is received, the phone beeps to notify the user of the incoming intercom call, and the user's phone automatically answers the intercom call. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`auto_call_from_third_party_apps`** `object` — This field allows the user to perform call control actions from authorized Zoom Marketplace apps. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`auto_call_recording`** `object` — Whether to allow automatic recording of all inbound and outbound calls. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`allow_stop_resume_recording`** `boolean` — Whether the stop and resume of automatic call recording is enabled. * **`disconnect_on_recording_failure`** `boolean` — Whether a call disconnects when there is an issue with the automatic call recording, and the call cannot reconnect after five seconds. This does \*\*not\*\* include emergency calls. * **`inbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`recording_start_prompt_audio_id`** `string` — The audio that plays when the recording has started for inbound call. You can use this audio ID to get the audio information using \[Get an audio item]\(https\://developer.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\_audio\_id\`, \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\`, and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` with the same value. * **`outbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`recording_start_prompt_audio_id`** `string` — The audio that plays when the recording has started for outbound call. You can use this audio ID to get the audio information using \[Get an audio item]\(https\://developer.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\_audio\_id\`, \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\`, and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` with the same value. * **`play_recording_beep_tone`** `object` - **`enable`** `boolean` — Whether to play a side tone beep for recorded users while recording. - **`play_beep_member`** `string`, possible values: `"allMembers", "recordingUser"` — Whether to play the recording beep tone for all participants in the call or only the recording user. It displays only when \`enable\` is true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when \`enable\` is true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The volume of the side tone beep. It displays only when \`enable\` is set to \`true\`. * **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — The type of calls automatically recorded: \* \`inbound\` \* \`outbound\` \* \`both\` * **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent is enabled. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` to operate inbound and outbound prompt separately. \Note:\ \* If customers opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\` and \`inbound\_audio\_notification.recording\_explicit\_consent\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. * **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` to operate inbound and outbound prompt separately. \Note:\ \* If customers opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\` and \`inbound\_audio\_notification.recording\_start\_prompt\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\` will be also updated. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` will be also updated. * **`recording_start_prompt_audio_id`** `string` — The audio that plays when the recording has started. You can use this audio ID to get the audio information using \[Get an audio item]\(https\://developer.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` to operate inbound and outbound prompt separately. \Note:\ \* If customers opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\_audio\_id\` and \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` will be also updated. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\_audio\_id\`, \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\`, and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\`, and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` will be also updated. * **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`auto_delete_data_after_retention_duration`** `object` — This field allows Zoom to automatically delete data after the retention duration has lapsed. - **`delete_type`** `integer`, possible values: `1, 2` — The deletion policy. \* 1 - soft delete \* 2 - permanent delete - **`enable`** `boolean` — Allows Zoom to automatically delete data after the retention duration has lapsed. - **`items`** `array` **Items:** - **`duration`** `integer` — The retention duration where -1 means unlimited. For units of time, see the \`time\_unit\` below. For \`year\`, the duration:-1, 1-10; for \`day\`, the duration:-1, 1-60; for \`month\`, the duration:-1, 1-18. - **`time_unit`** `string`, possible values: `"year", "month", "day"` — The unit of time. - **`type`** `string`, possible values: `"callLog", "onDemandRecording", "automaticRecording", "voicemail", "videomail", "sms", "fax"` — The data types. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`permanently_delete_after_days`** `integer` — The number of days after which the data will be permanently deleted automatically. Use -1 to retain data indefinitely. - **`auto_opt_out_in_call_queue`** `object` — Once enabled, when Call Queue members log out of Zoom (Except for desk phones and Zoom Phone appliances), they will be automatically Opted-out from the Call Queue as well. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`prompt_before_opt_out_call_queue`** `boolean` — Always ask the user if they want to opt-out from the Call Queue when they sign out of Zoom - **`block_calls_as_threat`** `object` — Whether to allow users to block and classify calls as threat. Inbound calls from these phones numbers can be configured with custom handling options. \*\*Note\*\*: Only customers who opted for OP flag \`Enable New Version Inbound Blocked List\` can use this feature. - **`block_calls_without_caller_id`** `object` — Whether calls without caller ID are blocked. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`block_external_calls`** `object` — This field allows you to set rules for blocking external calls during business, closed, and holiday hours. This feature is only available for user, Zoom Room, and common areas. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`block_list_for_inbound_calls_and_messaging`** `object` — Whether to allow users and administrators to block inbound calls and SMS/MMS from phone numbers or prefixes. Note: Only for use by customers who opted for OP flag \`Enable New Version Inbound Blocked List\`. - **`call_handling_forwarding_to_other_users`** `object` — Whether to allow users to forward their calls to other numbers. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`call_forwarding_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`call_live_transcription`** `object` — Whether to let users turn on live transcriptions for a call. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`transcription_start_prompt`** `object` — Whether to play a prompt to call participants when the transcription has started. - **`audio_id`** `string` — The audio prompt file ID. If the audio was removed from the user's audio library, it is marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://developers.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`audio_name`** `string` — The audio prompt file name. - **`enable`** `boolean` - **`call_overflow`** `object` — Whether to allow users to forward their calls to other numbers when a call is not answered **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`call_overflow_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`call_park`** `object` — Whether to allow calls placed on hold to resume from another location using a retrieval code. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`call_queue_opt_out_reason`** `object` — This field sets the opt-out reasons for call queues. When enabled, call queue members should select an opt-out reason when they turn off the \`receive queue call\` feature. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`call_screening`** `object` — Prompts incoming direct external callers to respond to a button to reach users. Callers who don't respond will be disconnected. Devices will not be able to receive any third party faxes. - **`enable`** `boolean` — Whether this policy is enabled - **`exclude_user_company_contacts`** `boolean` — This field excludes user and company contacts from call screening, calls will reach users as normal - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`call_transferring`** `object` — This field allows users to warm or blind transfer their calls. This does not apply to warm transfer on IP Phones except for Yealink. Voicemail is transferable only to internal extensions. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`call_transferring_type`** `integer`, possible values: `1, 2, 3, 4` — 1-No restriction. 2-Medium restriction (external numbers and external contacts not allowed). 3-High restriction (external numbers, unrecorded external contacts, and internal extensions without inbound automatic recording not allowed). 4-Low restriction (external numbers not allowed). - **`chat_channel`** `object` — Enables chat channel functionality for call queues - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`check_voicemails_over_phone`** `object` — Whether to allow extension owners or members of a shared line group to check voicemails for extension numbers over the phone using a PIN code. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`conference_dtmf`** `object` — Allows users to interact with automated systems, input access codes, or perform other functions without disrupting the call. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`connect_to_operator`** `object` — Once disabled, users cannot route their calls to an operator as part of the 'When a call is not answered' setting. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`customize_line_name`** `object` — Customizes the line name. - **`common_area_line_name`** `string`, possible values: `"phoneNumber", "extensionNumber", "displayName", "displayName;extensionNumber"` — The common area line name. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`user_line_name`** `string`, possible values: `"phoneNumber", "extensionNumber", "displayName", "displayName;extensionNumber", "firstName;extensionNumber", "firstName;lastName;extensionNumber"` — The user line name. - **`delegation`** `object` — Whether the user can use \[call delegation]\(https\://support.zoom.us/hc/en-us/articles/360032881731-Setting-up-call-delegation-shared-lines-appearance-). **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`desk_phone_smart_key_positions_layout`** `object` — Allows Zoom to move your frequently used line keys to your pre-programmed smart keys layout. Smart keys will be updated on a weekly basis. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`display_call_feedback_survey`** `object` — Whether to display a thumbs up or down survey at the end of each call. If participants respond with thumbs down, they can provide additional information about what went wrong. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`e2e_encryption`** `object` — Whether to allow users to switch their calls to End-to-End Encryption. If users have \*\*Automatic Call Recording\*\* turned on, they can't use End-to-End Encryption. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`elevate_to_meeting`** `object` — Whether to allow users to elevate their phone calls to a meeting. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`end_conference_call_when_originator_drops`** `object` — Once enabled, a personal conference call will end when the originator, who first merges other participant(s) into the conference call, drops. This will not affect the conference barge feature of Shared Line Group. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`external_calling_on_zoom_room_common_area`** `object` — Whether to allow Zoom Rooms to call external phone numbers based on the calling plans and other Zoom Phone policies. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`hand_off_to_room`** `object` — Whethet to allow users to send a call to a Zoom Room. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`hide_phone_call_history_in_ios`** `object` — Hides Zoom Phone calls in iOS/iPadOS device call history. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`international_calling`** `object` — Whether to allow extensions to place international calls outside of the calling plan. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`local_survivability_mode`** `object` — Whether to allow user or extension to have core phone services in the event of an outage. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`manage_call_routing_for_unassigned_numbers`** `object` — Allows calls to numbers not assigned to an extension to be handled according to the configured settings. This applies to calls originating both inside and outside the account. - **`enable`** `boolean` — Whether to enable call routing for unassigned numbers. - **`incoming_call_action`** `string`, possible values: `"disconnect", "play_message_then_disconnect", "forward_to_another_extension"` — The routing action for incoming calls to unassigned numbers. \`disconnect\` - Disconnect the call. \`play\_message\_then\_disconnect\` - Play a message and then disconnect. \`forward\_to\_another\_extension\` - Forward the call to another extension. - **`incoming_call_routing_setting`** `object` — The routing setting. Only returns when \`incoming\_call\_action\` is not \`disconnect\`. - **`locked`** `boolean` — Whether this setting is locked by the account administrator. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level has locked this setting. - **`mobile_switch_to_carrier`** `object` — Whether to allow the user to switch from a Zoom Phone to their native carrier. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`no_hold_conference`** `object` — Users can set up a conference call without any interruption in the current call - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`obfuscate_sensitive_data_during_call`** `object` — Obfuscates sensitive data during a call - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`online_fax`** `object` — Allows user to send and receive faxes. - **`enable`** `boolean` — Whether this policy is enabled - **`enable_new_fax_email_notifications`** `boolean` — This field enables email notifications when a new fax is received - **`include_fax_as_attachment`** `boolean` — The field includes fax as an attachment in the email notification - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`outbound_calling`** `object` — Whether to define calling rules to restrict the user or extension from calling specific countries, cities, or numbers. Note: Only for use by customers who opted for OP flag \`Enable New Version Outbound Blocked List\`. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`outbound_sms`** `object` — Whether to allow users to send and receive messages. You must assign a valid calling plan and phone number to each user for them to send and receive messages. Note: Only for use by customers who opted for OP flag \`Enable New Version Outbound Blocked List\`. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`override_default_port`** `object` — This field sets a range for port assignment. Zoom desktop, mobile clients, Zoom Rooms, and Zoom Phone Appliances use ports during a call. The range should be between 9,000 and 9,999. At least 50 ports need to be configured to ensure the functionality is not affected. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`peer_to_peer_media`** `object` — Whether to allow Zoom clients to send media directly to each other. Users or devices that have certain features enabled, such as recording or monitoring, might not be able to use peer to peer media. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`personal_audio_library`** `object` **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`allow_music_on_hold_customization`** `boolean` — Whether to allow music on hold customization. * **`allow_voicemail_and_message_greeting_customization`** `boolean` — Whether to allow voicemail and message greeting customization. - **`prevent_users_upload_audio_files`** `object` — Prevents users from uploading audio files - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`private_call_park`** `object` — Allows calls placed on hold to be resumed by allowed users with the retrieval code. - **`call_not_picked_up_action`** `integer` — The action when a parked call is not picked up. \`100\` - Ring back to parker \`0\` - Forward to voicemail of the parker \`9\` - Disconnect \`50\` - Forward to another extension - **`enable`** `boolean` — Whether this policy is enabled - **`expiration_period`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — A time limit for parked calls in minutes. After the expiration period ends, the retrieval code is no longer valid and a new code generates. - **`forward_to`** `object` — The extension's forwarding information. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "zoomRoom", "commonArea", "ciscoRoom/polycomRoom", "autoReceptionist", "callQueue", "sharedLineGroup"` — The type of extension: \* \`user\` \* \`zoomRoom\` \* \`commonArea\` \* \`ciscoRoom/polycomRoom\` \* \`autoReceptionist\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension \`user\`, \`zoomRoom\`, \`commonArea\`, \`ciscoRoom/polycomRoom\`, \`autoReceptionist\`, \`callQueue\` or \`sharedLineGroup\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`music_on_park`** `object` — Plays music when a call is parked. - **`audio_id`** `string` — The audio prompt file ID. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://developers.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`audio_name`** `string` — The audio prompt file name. - **`sequence`** `integer`, possible values: `0, 1` — This field chooses how parked calls are assigned to a BLF (Busy Lamp Field) key. Sequential assignment parks the call at the next available BLF key. Random assignment parks the call at a randomly selected BLF key. \`0\` - Random \`1\` - Sequential - **`restricted_call_hours`** `object` — Once enabled, define when the extension or user cannot make or accept calls and send SMS. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`allow_internal_calls`** `boolean` — Whether to allow internal calls or SMS during restricted hours. * **`restricted_holiday_hours_applied`** `boolean` — Whether restricted holiday hours have been applied. * **`restricted_hours_applied`** `boolean` — Whether restricted hours have been applied. * **`time_zone`** `object` — This field sets either time zone \`id\` or \`set\_by\_extension\`. - **`id`** `string` — The \[time zone list]\(https\://developer.zoom.us/docs/api-reference/other-references/abbreviation-lists/#timezones) for supported time zones and their formats. - **`name`** `string` — The time zone name. If time zone id is empty, it shows as \`setByExtension\`. - **`select_outbound_caller_id`** `object` — Whether to allow extensions to change outbound caller ID when placing calls. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`allow_hide_outbound_caller_id`** `boolean` — Whether to allow extensions to hide outbound caller ID. - **`shared_voicemail_notification_by_email`** `object` — Once enabled, users receive email notification when there is a new shared voicemail or videomail. If the extension that shares the voicemail or videomail has disabled the voicemail or videomail notification by email policy, then users do not receive notifications. It only displays when the voicemail policy is using the new policy framework. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`show_custom_disclaimer_when_using_zoom_phone`** `object` — Shows a custom disclaimer when starting to use Zoom Phone service - **`custom_disclaimer_list`** `array` — The custom disclaimer list. **Items:** - **`body`** `string` — The custom disclaimer body. - **`language`** `string` — The audio prompt language code. American English: \`en-US\` British English: \`en-GB\` Espa\ñol americano: \`es-US\` Fran\çais canadien: \`fr-CA\` Dansk: \`da-DK\` Deutsch: \`de-DE\` Espa\ñol: \`es-ES\` Fran\çais: \`fr-FR\` Italiano: \`it-IT\` Nederlands: \`nl-NL\` Portugues portugal: \`pt-PT\` Japanese: \`ja-JP\` Korean: \`ko-KO\` Portugues brasil: \`pt-BR\` Chinese: \`zh-CN\` Taiwanese: \`zh-TW\` - **`title`** `string` — The custom disclaimer title. - **`display_frequency`** `string`, possible values: `"first_time_only", "every_time", "every_month", "every_quarter", "every_6_months", "every_year"` — The display frequency. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`sms`** `object` — Whether to allow users to send and receive messages. You must assign a valid calling plan and phone number to each user for them to send and receive messages. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`international_sms`** `boolean` — Whether the user can send and receive international messages. You can set this field only if \`sms\` is enabled. - **`sms_auto_reply`** `object` — Enables SMS Auto Reply feature for User, Auto Receptionist, and Call Queue. Power Pack license is required for this feature to work. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`sms_etiquette_tool`** `object` — This field identifies defined keywords and text patterns over SMS and prevents users from sharing unwanted messages. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`sms_template`** `object` — Uses pre-defined templates to help users compose messages. Power Pack license is required for this feature to work. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`sms_template_list`** `array` — The SMS template list. **Items:** - **`active`** `boolean` — Whether it is active. - **`content`** `string` — Text to Display. This text will be editable by users. Customer input fields may be added by using the buttons below. Customer information will be removed if not available. - **`description`** `string` — The SMS template description. - **`name`** `string` — The SMS template name. - **`sms_template_id`** `string` — The SMS template ID. - **`team_sms_thread_summary`** `object` — Team SMS thread summary with AI Companion - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`use_callkit_for_incoming_call_notifications_in_ios`** `object` — Uses CallKit always for Incoming call notifications on iOS/iPadOS devices. When this feature is enabled for a user or common area, their iOS/iPadOS device will always use CallKit for incoming call notifications no matter if the Zoom App is running in the foreground or background, preventing interruptions when receiving inbound calls on the device. This setting only applies to iOS/iPadOS devices with CallKit enabled. If a user modifies this setting on their client, the value will be updated on this policy. Locking this policy will prevent users from making changes to the setting. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`voicemail`** `object` **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`allow_delete`** `boolean` — This field allows users to delete their own voicemail or videomail. * **`allow_download`** `boolean` — This field allows users to download their own voicemail or videomail. * **`allow_share`** `boolean` — This field allows users to share their own voicemail. * **`allow_videomail`** `boolean` — This field allows videomail * **`allow_virtual_background`** `boolean` — This field allows virtual background for voicemail or videomail greeting - **`voicemail_intent_based_prioritization`** `object` — Voicemail prioritization with AI Companion - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`voicemail_notification_by_email`** `object` — Whether to enable voicemail or videomail transcription feature for User, Auto Receptionist, Call Queue, and Shared Line Groups. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`forward_voicemail_to_email`** `boolean` — Whether to forward the voicemail to email. * **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. * **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`voicemail_tasks`** `object` — Voicemail tasks with AI Companion - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`voicemail_transcription`** `object` — Whether to enable voicemail/videomail transcription feature for User, Auto Receptionist, Call Queue, and Shared Line Groups. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`zoom_phone_on_mobile`** `object` — Whether to allow user to use Zoom Phone on mobile clients (iOS, iPad OS and Android). **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. * **`allow_calling_sms_mms`** `boolean` — This field allows calling and SMS or MMS functions on mobile. - **`zoom_phone_on_pwa`** `object` — Whether to allow users to use Zoom Phone on Zoom Progressive Web App. **All of:** - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. **Example:** ```json { "call_live_transcription": { "enable": true, "locked": false, "locked_by": "account", "transcription_start_prompt": { "enable": true, "audio_id": "yCT14TwySDGVUypVlKNEyA", "audio_name": "example.mp3" } }, "local_survivability_mode": { "enable": true, "locked": false, "locked_by": "account" }, "external_calling_on_zoom_room_common_area": { "enable": true, "locked": false, "locked_by": "account" }, "select_outbound_caller_id": { "enable": true, "locked": false, "locked_by": "account", "allow_hide_outbound_caller_id": true }, "personal_audio_library": { "enable": true, "locked": false, "locked_by": "account", "allow_music_on_hold_customization": true, "allow_voicemail_and_message_greeting_customization": true }, "voicemail": { "enable": true, "locked": false, "locked_by": "account", "allow_videomail": true, "allow_download": false, "allow_delete": true, "allow_share": true, "allow_virtual_background": true }, "voicemail_transcription": { "enable": true, "locked": false, "locked_by": "account" }, "voicemail_notification_by_email": { "enable": true, "locked": false, "locked_by": "account", "include_voicemail_file": true, "include_voicemail_transcription": false, "forward_voicemail_to_email": true }, "shared_voicemail_notification_by_email": { "enable": true, "locked": false, "locked_by": "account" }, "restricted_call_hours": { "enable": true, "locked": false, "locked_by": "account", "time_zone": { "id": "America/Adak", "name": "(GMT-9:00) Adak" }, "restricted_hours_applied": false, "restricted_holiday_hours_applied": false, "allow_internal_calls": true }, "allowed_call_locations": { "enable": true, "locked": false, "locked_by": "account", "locations_applied": false, "allow_internal_calls": true }, "check_voicemails_over_phone": { "enable": true, "locked": false, "locked_by": "account" }, "auto_call_recording": { "enable": true, "locked": false, "locked_by": "account", "recording_calls": "inbound", "recording_transcription": true, "allow_stop_resume_recording": true, "disconnect_on_recording_failure": true, "play_recording_beep_tone": { "enable": true, "play_beep_member": "allMembers", "play_beep_volume": 60, "play_beep_time_interval": 15 }, "inbound_audio_notification": { "recording_start_prompt": true, "recording_start_prompt_audio_id": "ySMexBgBQsioV8KKCUybTA", "recording_explicit_consent": true }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_start_prompt_audio_id": "ySMexBgBQsioV8KKCUybTA", "recording_explicit_consent": true } }, "ad_hoc_call_recording": { "recording_transcription": true, "allow_download": true, "allow_delete": true, "recording_start_prompt": true, "recording_explicit_consent": true, "play_recording_beep_tone": { "enable": true, "play_beep_member": "allMembers", "play_beep_volume": 60, "play_beep_time_interval": 15 }, "enable": true, "locked": false, "locked_by": "account" }, "international_calling": { "enable": true, "locked": false, "locked_by": "account" }, "outbound_calling": { "enable": true, "locked": false, "locked_by": "account" }, "outbound_sms": { "enable": true, "locked": false, "locked_by": "account" }, "sms": { "enable": true, "locked": false, "locked_by": "account", "international_sms": true }, "sms_etiquette_tool": { "sms_etiquette_policy": [ { "id": "PdPtFFDbQhKr05WepCHhWQ", "name": "invalid symbol", "description": "invalid symbol", "rule": 1, "content": "test", "action": 1, "active": true } ], "enable": true, "locked": false, "locked_by": "account" }, "zoom_phone_on_mobile": { "enable": true, "locked": false, "locked_by": "account", "allow_calling_sms_mms": true }, "zoom_phone_on_pwa": { "enable": true, "locked": false, "locked_by": "account" }, "e2e_encryption": { "enable": true, "locked": false, "locked_by": "account" }, "call_handling_forwarding_to_other_users": { "enable": true, "locked": false, "locked_by": "account", "call_forwarding_type": 1 }, "call_overflow": { "enable": true, "locked": false, "locked_by": "account", "call_overflow_type": 1 }, "call_transferring": { "enable": true, "locked": false, "locked_by": "account", "call_transferring_type": 2 }, "elevate_to_meeting": { "enable": true, "locked": false, "locked_by": "account" }, "call_park": { "expiration_period": 3, "call_not_picked_up_action": 50, "forward_to": { "display_name": "ZOOM_API Test", "extension_id": "TO586CYlQFC_WCUvPRXytA", "extension_number": 100014, "extension_type": "user", "id": "oG_nYRFuTJiY1tu0Fur_4Q" }, "sequence": 1, "enable": true, "locked": false, "locked_by": "account" }, "hand_off_to_room": { "enable": true, "locked": false, "locked_by": "account" }, "mobile_switch_to_carrier": { "enable": true, "locked": false, "locked_by": "account" }, "delegation": { "enable": true, "locked": false, "locked_by": "account" }, "audio_intercom": { "enable": true, "locked": false, "locked_by": "account" }, "block_calls_without_caller_id": { "enable": true, "locked": false, "locked_by": "account" }, "block_external_calls": { "block_business_hours": true, "block_closed_hours": true, "block_holiday_hours": true, "block_call_action": 0, "enable": true, "locked": false, "locked_by": "account" }, "call_queue_opt_out_reason": { "call_queue_opt_out_reasons_list": [ { "code": "Break", "system": true, "enable": true } ], "enable": true, "locked": false, "locked_by": "account" }, "auto_delete_data_after_retention_duration": { "enable": true, "locked": false, "locked_by": "account", "items": [ { "type": "callLog", "duration": -1, "time_unit": "year" } ], "delete_type": 1, "permanently_delete_after_days": -1 }, "auto_call_from_third_party_apps": { "enable": true, "locked": false, "locked_by": "account" }, "override_default_port": { "min_port": 9000, "max_port": 9998, "enable": true, "locked": false, "locked_by": "account" }, "peer_to_peer_media": { "enable": true, "locked": false, "locked_by": "account" }, "advanced_encryption": { "disable_incoming_unencrypted_voicemail": true, "enable": true, "locked": false, "locked_by": "account" }, "display_call_feedback_survey": { "feedback_type": 1, "feedback_mos": { "enable": true, "min": "1.1", "max": "3.0" }, "feedback_duration": { "enable": true, "min": 0, "max": 60 }, "enable": true, "locked": false, "locked_by": "account" }, "block_list_for_inbound_calls_and_messaging": { "enable": true, "locked": true, "locked_by": "account" }, "block_calls_as_threat": { "enable": true, "locked": true, "locked_by": "invalid" }, "online_fax": { "enable": true, "locked": false, "locked_by": "account", "enable_new_fax_email_notifications": true, "include_fax_as_attachment": false }, "private_call_park": { "enable": true, "locked": false, "locked_by": "account", "expiration_period": 3, "call_not_picked_up_action": 50, "forward_to": { "display_name": "ZOOM_API Test", "extension_id": "TO586CYlQFC_WCUvPRXytA", "extension_number": 100014, "extension_type": "user", "id": "oG_nYRFuTJiY1tu0Fur_4Q" }, "sequence": 1, "music_on_park": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "audio_name": "example.mp3" } }, "sms_template": { "enable": true, "locked": false, "locked_by": "account", "sms_template_list": [ { "sms_template_id": "0qWIP8S8QXmo6KShUIyvZA", "name": "name", "description": "description", "content": "content", "active": true } ] }, "call_screening": { "enable": true, "locked": false, "locked_by": "account", "exclude_user_company_contacts": true }, "sms_auto_reply": { "enable": true, "locked": false, "locked_by": "account" }, "allow_end_user_edit_call_handling": { "enable": true, "locked": false, "locked_by": "account" }, "connect_to_operator": { "enable": true, "locked": false, "locked_by": "account" }, "no_hold_conference": { "enable": true, "locked": false, "locked_by": "account" }, "conference_dtmf": { "enable": true, "locked": false, "locked_by": "account" }, "end_conference_call_when_originator_drops": { "enable": true, "locked": false, "locked_by": "account" }, "chat_channel": { "enable": true, "locked": false, "locked_by": "account" }, "desk_phone_smart_key_positions_layout": { "enable": true, "locked": false, "locked_by": "account" }, "auto_opt_out_in_call_queue": { "enable": false, "locked": false, "locked_by": "account", "prompt_before_opt_out_call_queue": true }, "allow_mobile_home_phone_callout": { "enable": true, "locked": false, "locked_by": "account" }, "use_callkit_for_incoming_call_notifications_in_ios": { "enable": false, "locked": false, "locked_by": "account" }, "hide_phone_call_history_in_ios": { "enable": false, "locked": false, "locked_by": "account" }, "obfuscate_sensitive_data_during_call": { "enable": false, "locked": false, "locked_by": "account" }, "prevent_users_upload_audio_files": { "enable": false, "locked": false, "locked_by": "account" }, "voicemail_tasks": { "enable": false, "locked": false, "locked_by": "account" }, "voicemail_intent_based_prioritization": { "enable": false, "locked": false, "locked_by": "account" }, "team_sms_thread_summary": { "enable": false, "locked": false, "locked_by": "account" }, "customize_line_name": { "enable": false, "locked": false, "locked_by": "account", "user_line_name": "phoneNumber", "common_area_line_name": "phoneNumber" }, "show_custom_disclaimer_when_using_zoom_phone": { "enable": false, "locked": false, "locked_by": "account", "display_frequency": "first_time_only", "custom_disclaimer_list": [ { "language": "en-GB", "title": "tilte", "body": "body" } ] }, "manage_call_routing_for_unassigned_numbers": { "enable": true, "locked": false, "locked_by": "account", "incoming_call_action": "disconnect", "incoming_call_routing_setting": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "audio_name": "routing-message.mp3" } } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Setting type(s) supplied in query parameter setting\_types is invalid. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List an account's customized outbound caller ID phone numbers - **Method:** `GET` - **Path:** `/phone/outbound_caller_id/customized_numbers` - **Tags:** Accounts Retrieves phone numbers that can be used as the `account-level` customized outbound caller ID. Note that when multiple sites policy is enabled, users cannot manage the `account-level` configuration. The system will throw an exception. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[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:list_customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Customized numbers for outbound caller ID listed successfully. ###### Content-Type: application/json - **`customize_numbers`** `array` **Items:** - **`customize_id`** `string` — The customization ID. - **`display_name`** `string` — Name of the phone number. - **`extension_id`** `string` — The extension ID. - **`extension_name`** `string` — The extension name. - **`extension_number`** `string` — The extension number. - **`extension_type`** `string` — The extension type. - **`incoming`** `boolean` — Whether the incoming policy is enabled for the phone number. - **`outgoing`** `boolean` — Whether the outgoing policy is enabled for the phone number. - **`phone_number`** `string` — The phone number in E164 format. - **`phone_number_id`** `string` — The ID of the phone number. - **`site`** `object` - **`id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`name`** `string` — The name of the site. - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "customize_numbers": [ { "customize_id": "8_RkKw9OQ42oYsXqJJjs4A", "phone_number_id": "55JUZPwERHuGttd_j4qBsQ", "phone_number": "+12055437350", "display_name": "test abc", "incoming": true, "outgoing": true, "extension_id": "HaSokHMCSeK8taMdv2vnXQ", "extension_type": "callQueue", "extension_number": "10001", "extension_name": "SJ CQ", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "testSite" } } ], "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 30, "total_records": 10 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add phone numbers for an account's customized outbound caller ID - **Method:** `POST` - **Path:** `/phone/outbound_caller_id/customized_numbers` - **Tags:** Accounts Adds the `account-level` customized outbound caller ID phone numbers. Note that when multiple sites policy is enabled, users cannot manage the `account-level` configuration. The system will throw an exception. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[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:write:customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`phone_number_ids`** `array` — The phone number IDs. **Items:** `string` **Example:** ```json { "phone_number_ids": [ "55JUZPwERHuGttd_j4qBsQ" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Customized caller ID numbers added successfully. ###### Content-Type: application/json **Example:** ```json null ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete phone numbers for an account's customized outbound caller ID - **Method:** `DELETE` - **Path:** `/phone/outbound_caller_id/customized_numbers` - **Tags:** Accounts Deletes the `account-level` customized outbound caller ID phone numbers. Note that when multiple sites policy is enabled, users cannot manage the `account-level` configuration. The system will throw an exception. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[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:delete:customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*Created\*\* Customized numbers have been deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List alert settings with paging query - **Method:** `GET` - **Path:** `/phone/alert_settings` - **Tags:** Alerts Gets [alert settings](https://support.zoom.us/hc/en-us/articles/7146944434445) for an account with paging query. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_alert_settings:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Alert settings listed successfully. ###### Content-Type: application/json - **`alert_settings`** `array` **Items:** - **`alert_setting_id`** `string` — The unique identifier of the alert setting. - **`alert_setting_name`** `string` — The name of the alert setting. - **`chat_channels`** `array` — The chat channels. This field applies when the value of \`module\` represents \`Call Queue Management\` or \`Route Group Management\` or \`Devices \& Phones Management\` or \`Call Quality Management\`. **Items:** - **`chat_channel_name`** `string` — The channel name. - **`end_point`** `string` — The end point. - **`token`** `string` — The verification token. - **`email_recipients`** `array` — The email addresses of recipients. **Items:** `string` - **`frequency`** `integer`, possible values: `5, 10, 15, 30, 60` — The frequency of alert triggers. The unit is \`minutes\`. When the value of \`module\` represents \`Call Queue Management\` or \`Route Group Management\` or \`Devices \& Phones Management\` or \`Call Quality Management\`, it will be used. - **`module`** `integer` — The module of the alert. The module and its code mappings display as: \`Call Queue Management\`-\`1\`, \`Route Group Management\`-\`2\`, \`Devices \& Phones Management\`-\`3\`, \`Call Quality Management\`-\`4\`, \`Emergency Services Management\`-\`5\` - **`rule`** `integer` — The rule of the alert. The rule and its code mappings display as: \`Service Level\`-\`1\`, \`Inbound Abandoned Calls\`-\`2\`, \`Inbound Overflowed Calls\`-\`3\`, \`Inbound Avg Call Waiting Time\`-\`4\`, \`Inbound Forwarded to Voicemail\`-\`5\`, \`Number of Waiting Calls\`-\`6\`, \`Member Availability (Active)\`-\`7\`, \`Member Availability (Opt-in/Opt-out)\`-\`8\`, \`Route groups status change\`-\`9\`, \`Devices go offline\`-\`10\`, \`Devices go online\`-\`11\`, \`Device offline rate\`-\`12\`, \`QoS Alert\`-\`13\`, \`Emergency Call Alert\`-\`14\`. - **`rule_conditions`** `array` — The rule conditions. **Items:** - **`rule_condition_type`** `integer`, possible values: `1, 2, 3, 4, 5` — The condition type. \* \`1\`-\`Threshold\` \* \`2\`-\`Warning\` \* \`3\`-\`Critical\` \* \`4\`-\`Alert\` \* \`5\`-\`Severity\`. The \`Threshold\` is used in the case of the \`Service Level\` rule. The \`Warning\` or \`Critical\` is used in the case of the \`Service Level\` or \`Inbound Abandoned Calls\` or \`Inbound Overflowed Calls\` or \`Number of Waiting Calls\` or \`Inbound Forwarded to Voicemail\` or \`Member Availability (Active)\` or \`Member Availability (Opt-in/Opt-out)\` or \`Device offline rate\` or \`Inbound Avg Call Waiting Time\` or \`QoS Alert\` rule. The \`Alert\` is used in the case of the \`Devices go offline\` or \`device\_online\_time\` rule. The \`Severity\` is used in the case of the \`Emergency Call Alert\` or \`Route groups status change\` rule. - **`rule_condition_value`** `string` — The rule condition value. In the case of the value of \`rule\_condition\_type\` is \`1\`, the available values: \`15\`, \`30\`, \`60\`, \`120\`, \`180\`, \`240\`, \`300\`. In the case of the value of \`rule\_condition\_type \`is \`2\` or \`3\`, when the value of \`rule\` represents \`Service Level\` or \`Inbound Abandoned Calls\` or \`Inbound Overflowed Calls\` or \`Inbound Forwarded to Voicemail\` or \`Member Availability (Active)\` or \`Member Availability (Opt-in/Opt-out)\` or \`Device offline rate\`, the unit is \`percentage\`, the value can only be in the range of \`1\` to \`100\`, when the value of \`rule\` represents \`Inbound Avg Call Waiting Time\`, the unit is \`seconds\`, the available values: \`10\`, \`15\`, \`20\`, \`25\`, \`30\`, \`45\`, \`60\`, \`120\`, \`180\`, \`240\`, \`300\`, \`600\`, \`900\`, \`1200\`, \`1500\`, \`1800\`, when the value of \`rule\` represents \`QoS Alert\`, the value can be only in the range of \`0\` to \`5\`. In the case of the value of \`rule\_condition\_type\` is \`4\`, the available values:\`5\`, \`10\`, \`15\`,\`30\`,\`60\`. In the case of the value of \`rule\_condition\_type\` is \`5\`,the available values:\`Warning\`,\`Critical\`. - **`status`** `integer`, possible values: `0, 1` — The alert's status: \* \`0\` \— Inactive. \* \`1\` \— Active. - **`targets`** `array` — The targets of the alert. **Items:** - **`target_name`** `string` — The target name. - **`time_frame_from`** `string` — The start time of time frame in which the alert was triggered, in \`HH:mm:ss\` format. When the \`time\_frame\_type\` is \`all\_day\`, the value is \`00:00:00\` - **`time_frame_to`** `string` — The end time of time frame in which the alert was triggered, in \`HH:mm:ss\` format. When the \`time\_frame\_type\` is \`all\_day\`, the value is \`00:00:00\` - **`time_frame_type`** `string`, possible values: `"all_day", "specific_time"` — The time frame type. The available values: \`all\_day\`, \`specific\_time\` - **`next_page_token`** `string` — The next page token paginates through a large set of results. A next page token is returned whenever the set of the available result list exceeds the page size. - **`page_size`** `integer` — The size of each page. **Example:** ```json { "next_page_token": "2z0Ov7kngllAbfQi4ZR2eQTb3mFVYQpYAe3", "page_size": 30, "alert_settings": [ { "alert_setting_id": "uvsOCaiDQR2M-NviKFHo0w", "alert_setting_name": "Call Queue Alert", "module": 1, "rule": 1, "rule_conditions": [ { "rule_condition_type": 5, "rule_condition_value": "Warning" } ], "targets": [ { "target_name": "test api" } ], "time_frame_type": "specific_time", "time_frame_from": "08:30:00", "time_frame_to": "18:00:00", "frequency": 5, "email_recipients": [ "test@example.com" ], "chat_channels": [ { "chat_channel_name": "ApiTA_Site_2020_07_21_11_02_26_901", "token": "eyJhbGciOiJIUzUxMiIsInYiOiIy", "end_point": "https://www.testexample.com" } ], "status": 1 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13000\` \
Only power pack user can get CQ rules.\
\
\*\*Error Code:\*\* \`13001\` \
Non super admin can only list CQ rules.\
\
\*\*Error Code:\*\* \`13002\` \
Current operation is not allowed, please contact support.\
\
\*\*Error Code:\*\* \`13012\` \
The module:{0} does not support this rule:{1}.\
\
\*\*Error Code:\*\* \`403\` \
You do not have permission. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add an alert setting - **Method:** `POST` - **Path:** `/phone/alert_settings` - **Tags:** Alerts [Adds an alert setting](https://support.zoom.us/hc/en-us/articles/7146944434445). **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:alert_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`alert_setting_name` (required)** `string` — The name of the alert setting. - **`module` (required)** `integer` — The module of the alert. The module and its code mappings are shown as: \`Call Queue Management\`-\`1\`, \`Route Group Management\`-\`2\`, \`Devices \& Phones Management\`-\`3\`, \`Call Quality Management\`-\`4\`, and \`Emergency Services Management\`-\`5\` - **`rule` (required)** `integer` — The rule of the alert. The rule and its code mappings are shown as: \`Service Level\`-\`1\`, \`Inbound Abandoned Calls\`-\`2\`, \`Inbound Overflowed Calls\`-\`3\`, \`Inbound Avg Call Waiting Time\`-\`4\`, \`Inbound Forwarded to Voicemail\`-\`5\`, \`Number of Waiting Calls\`-\`6\`, \`Member Availability (Active)\`-\`7\`, \`Member Availability (Opt-in/Opt-out)\`-\`8\`, \`Route groups status change\`-\`9\`, \`Devices go offline\`-\`10\`, \`Devices go online\`-\`11\`, \`Device offline rate\`-\`12\`, \`QoS Alert\`-\`13\`, and \`Emergency Call Alert\`-\`14\`. When the value of the \`module\` is \`1\`, the value of \`rule\` can only be in the range of \`1\` to \`8\`. When the value of the \`module\` is \`2\`, the value of \`rule\` can only be \`9\`. When the value of the \`module\` is \`3\`, the value of \`rule\` can only be in the range of \`10\` to \`12\`. When the value of the \`module\` is \`4\`, the value of \`rule\` can only be \`13\`. When the value of the \`module\` is \`5\`, the value of \`rule\` can only be \`14\`. Alerts of rule \`7\` or rule \`8\` cannot exceed 30 in number. - **`rule_conditions` (required)** `array` — The rule conditions. **Items:** - **`rule_condition_type`** `integer`, possible values: `1, 2, 3, 4, 5` — The condition type. \* \`1\`-\`Threshold\` \* \`2\`-\`Warning\` \* \`3\`-\`Critical\` \* \`4\`-\`Alert\` \* \`5\`-\`Severity\` We use the \`Threshold\` for the \`Service Level\` rule. We use the \`Warning\` or \`Critical\` for: \`Service Level\`, \`Inbound Abandoned Calls\`, \`Inbound Overflowed Calls\`, \`Inbound Forwarded to Voicemail\`, \`Number of Waiting Calls\`, \`Member Availability (Active)\`, \`Member Availability (Opt-in/Opt-out)\`, \`Device offline rate\`, \`Inbound Avg Call Waiting Time\`, or \`QoS Alert\` rule. We use \`Alert\` for the \`Devices go offline\` or \`Devices go online\` rule. We use \`Severity\` for the \`Emergency Call Alert\` or \`Route groups status change\` rule. - **`rule_condition_value`** `string` — The rule condition value. \`rule\_condition\_type\` is \`1\`: The available values are \`15\`, \`30\`, \`60\`, \`120\`, \`180\`, \`240\`, \`300\`. \`rule\_condition\_type \`is \`2\` or \`3\`: When the value of \`rule\` represents \`Service Level\`, \`Inbound Abandoned Calls\`, \`Inbound Overflowed Calls\`, \`Inbound Forwarded to Voicemail\`, \`Member Availability (Active)\`, \`Member Availability (Opt-in/Opt-out)\`, or \`Device offline rate\`, the unit is \`percentage\`. The value can only be in the range of \`1\` to \`100\`. When the value of \`rule\` represents \`Inbound Avg Call Waiting Time\`, the unit is \`seconds\`. The available values are \`10\`, \`15\`, \`20\`, \`25\`, \`30\`, \`45\`, \`60\`, \`120\`, \`180\`, \`240\`, \`300\`, \`600\`, \`900\`, \`1200\`, \`1500\`, and \`1800\`. When the value of \`rule\` represents \`QoS Alert\`, the value can be only in the range of \`0\` to \`5\`. \`rule\_condition\_type\` is \`4\`: The available values:\`5\`, \`10\`, \`15\`,\`30\`, and \`60\`. \`rule\_condition\_type\` is \`5\`: The available values are\`Warning\` and \`Critical\`. - **`target_type` (required)** `integer`, possible values: `1, 2, 3, 4, 5` — The target type. \* \`1\`-\`User\` \* \`2\`-\`Account\` \* \`3\`-\`Call Queue\` \* \`4\`-\`Site\` \* \`5\`-\`Device\` - **`time_frame_from` (required)** `string` — The start time of time frame in which the alert was triggered, in \`HH:mm:ss\` format. When the \`time\_frame\_type\` is \`all\_day\`, the value is \`00:00:00\`. The value should be either at the whole hour or at half past the hour. - **`time_frame_to` (required)** `string` — The end time of time frame in which the alert was triggered, in \`HH:mm:ss\` format. When the \`time\_frame\_type\` is \`all\_day\`, the value is \`00:00:00\`. The value should be either at the whole hour or at half past the hour. - **`time_frame_type` (required)** `string`, possible values: `"all_day", "specific_time"` — The time frame type. The available values: \`all\_day\` and \`specific\_time\` - **`chat_channels`** `array` — The chat channels. It's used When the value of \`module\` represents \`Call Queue Management\`, \`Route Group Management\`, \`Devices \& Phones Management\`, and \`Call Quality Management\`. The number of the chat channels is up to \`3\` **Items:** - **`chat_channel_name`** `string` — The channel name - **`end_point`** `string` — The end point. - **`token`** `string` — The verification token. - **`email_recipients`** `array` — The email addresses of recipients. The number of the emails is up to \`10\` **Items:** `string` - **`frequency`** `integer`, possible values: `5, 10, 15, 30, 60` — The frequency of alert triggers. The unit is \`minutes\`. When the value of \`module\` represents \`Call Queue Management\` or \`Route Group Management\` or \`Devices \& Phones Management\` or \`Call Quality Management\`, it will be used. - **`status`** `integer`, possible values: `0, 1` — The alert's status: \* \`0\` — Inactive. \* \`1\` — Active. - **`target_ids`** `array` — The target IDs of the alert. The target type can be \`User\`, \`Account\`, \`Call Queue\`, \`Site\`, and \`Device\`. When the value of \`rule\` is in the range of \`1\` to \`8\`, it only supports the \`Call Queue\` and if the number of \`Call Queue\` is \`1\`, you should pass the \`Extension ID\` of the specific call queue. When the value of the \`rule\` is \`9\`, it can only support the \`Account\`. You only need to specify the value of \`target\_type\`. This field doesn't need a specified value. When the value of the \`rule\` is \`10\`, it can support the \`Account\` or \`Device\`. If you want to set the \`Account\`, you only need to specify the value of \`target\_type\`. This field doesn't need a specified value. If you want to set the \`Device\`, you should pass the \`Device ID\` of the specific device. The number of \`Device\` is up to \`5\`. When the value of the \`rule\` is \`11\`, it can support the \`Device\`. The number of \`Device\` is up to \`5\`. You should pass the \`Device ID\` of the specific device. When the value of the \`rule\` is \`12\`, it can support the \`Site\` and the number of \`Site\` is \`1\`. You should pass the \`Site ID\` of the specific site. When the value of the \`rule\` is \`13\`, it can support the \`User\` and the number of \`User\` is up to \`5\`. You should pass the \`Extension ID\` of the specific user. When the value of the \`rule\` is \`14\`, it can support the \`Site\` and the number of \`Site\` is \`1\`. You should pass the \`Site ID\` of the specific site. **Items:** `string` **Example:** ```json { "alert_setting_name": "Call Queue Alert", "module": 1, "rule": 1, "target_type": 1, "target_ids": [ "1PXbl7s6Q52nbePrUxUZTg" ], "rule_conditions": [ { "rule_condition_type": 5, "rule_condition_value": "Warning" } ], "time_frame_type": "specific_time", "time_frame_from": "08:30:00", "time_frame_to": "18:00:00", "frequency": 5, "email_recipients": [ "test@example.com" ], "chat_channels": [ { "chat_channel_name": "ApiTA_Site_2020_07_21_11_02_26_901", "token": "eyJhbGciOiJIUzUxMiIsInYiOiIy", "end_point": "https://www.testexample.com" } ], "status": 1 } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Alert setting added successfully. ###### Content-Type: application/json - **`alert_setting_id`** `string` — The unique identifier of the alert setting. - **`alert_setting_name`** `string` — The name of the alert setting. **Example:** ```json { "alert_setting_id": "uvsOCaiDQR2M-NviKFHo0w", "alert_setting_name": "Call Queue Alert" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed\
\
\*\*Error Code:\*\* \`13004\` \
Alert rule on this target already exists.\
\
\*\*Error Code:\*\* \`13005\` \
This alert can only be set up once.\
\
\*\*Error Code:\*\* \`13006\` \
The number of target is invalid. \
\
\*\*Error Code:\*\* \`13007\` \
The number of email recipients is invalid. \
\
\*\*Error Code:\*\* \`13008\` \
The number of chat channels is invalid.\
\
\*\*Error Code:\*\* \`13009\` \
Fail to create alert.\
\
\*\*Error Code:\*\* \`13010\` \
Invalid parameters.\
\
\*\*Error Code:\*\* \`13012\` \
The module:{0} does not support this rule:{1}.\
\
\*\*Error Code:\*\* \`13013\` \
The rule:{0} does not support this target type:{1}.\
\
\*\*Error Code:\*\* \`13014\` \
The target id:{0} is invalid.\
\
\*\*Error Code:\*\* \`403\` \
You do not have permission.\
\
\*\*Error Code:\*\* \`13015\` \
The rule:{0} can not support the rule condition type:{1}.\
\
\*\*Error Code:\*\* \`13016\` \
The rule:{0} is missing the rule condition type:{1}.\
\
\*\*Error Code:\*\* \`13017\` \
The value of the rule condition type:{0} is invalid.\
\
\*\*Error Code:\*\* \`13018\` \
The value of alert field:{0} is invalid.\
\
\*\*Error Code:\*\* \`13019\` \
The group does not exist, groupId:{0}.\
\
\*\*Error Code:\*\* \`13020\` \
There are duplicated rule condition types.\
\
\*\*Error Code:\*\* \`13021\` \
The rule condition value can not be same.\
\
\*\*Error Code:\*\* \`13022\` \
The number of alerts for this module:{0} has reached the limit, and it is not allowed to create alerts of this rule:{1}.\
\
\*\*Error Code:\*\* \`13023\` \
The number of email recipients is invalid.\
\
\*\*Error Code:\*\* \`13024\` \
The number of chat channels is invalid. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get alert setting details - **Method:** `GET` - **Path:** `/phone/alert_settings/{alertSettingId}` - **Tags:** Alerts Returns detailed information about a specific [alert setting](https://support.zoom.us/hc/en-us/articles/7146944434445). **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:alert_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Alert setting information retrieved successfully. ###### Content-Type: application/json - **`alert_setting_id`** `string` — The unique identifier of the alert setting. - **`alert_setting_name`** `string` — The name of the alert setting. - **`chat_channels`** `array` — The chat channels. This field applies when the value of \`module\` represents \`Call Queue Management\`, \`Route Group Management\`, \`Devices \& Phones Management\`, or \`Call Quality Management\`. **Items:** - **`chat_channel_name`** `string` — The channel name. - **`end_point`** `string` — The end point. - **`token`** `string` — The verification token. - **`email_recipients`** `array` — The email addresses of recipients. **Items:** `string` - **`frequency`** `integer`, possible values: `5, 10, 15, 30, 60` — The frequency of alert triggers. The unit is \`minutes\`. It's used when the value of \`module\` represents \`Call Queue Management\`, \`Route Group Management\`, \`Devices \& Phones Management\`, or \`Call Quality Management\`. - **`module`** `integer` — The module of the alert. The module and its code mappings displays as: \`Call Queue Management\`-\`1\`, \`Route Group Management\`-\`2\`, \`Devices \& Phones Management\`-\`3\`, \`Call Quality Management\`-\`4\`, \`Emergency Services Management\`-\`5\` - **`rule`** `integer` — The rule of the alert. The rule and its code mappings displays as: \`Service Level\`-\`1\`, \`Inbound Abandoned Calls\`-\`2\`, \`Inbound Overflowed Calls\`-\`3\`, \`Inbound Avg Call Waiting Time\`-\`4\`, \`Inbound Forwarded to Voicemail\`-\`5\`, \`Number of Waiting Calls\`-\`6\`, \`Member Availability (Active)\`-\`7\`, \`Member Availability (Opt-in/Opt-out)\`-\`8\`, \`Route groups status change\`-\`9\`, \`Devices go offline\`-\`10\`, \`Devices go online\`-\`11\`, \`Device offline rate\`-\`12\`, \`QoS Alert\`-\`13\`, \`Emergency Call Alert\`-\`14\`. - **`rule_conditions`** `array` — The rule conditions. **Items:** - **`rule_condition_type`** `integer`, possible values: `1, 2, 3, 4, 5` — The condition type. \* \`1\`-\`Threshold\` \* \`2\`-\`Warning\` \* \`3\`-\`Critical\` \* \`4\`-\`Alert\` \* \`5\`-\`Severity\`. The \`Threshold\` is used for the \`Service Level\` rule. The \`Warning\` or \`Critical\` is used for the \`Service Level\`, \`Inbound Abandoned Calls\`, \`Inbound Overflowed Calls\`, \`Number of Waiting Calls\`, \`Inbound Forwarded to Voicemail\`, \`Member Availability (Active)\`, \`Member Availability (Opt-in/Opt-out)\`, \`Device offline rate\`, \`Inbound Avg Call Waiting Time\`, or \`QoS Alert\` rule. The \`Alert\` is used for the \`Devices go offline\` or \`device\_online\_time\` rule. The \`Severity\` is used for the \`Emergency Call Alert\` or \`Route groups status change\` rule. - **`rule_condition_value`** `string` — The rule condition value. If the \`rule\_condition\_type\` is \`1\`, the available values are \`15\`, \`30\`, \`60\`, \`120\`, \`180\`, \`240\`, and \`300\`. In the case of the value of \`rule\_condition\_type \`is \`2\` or \`3\`, when the value of \`rule\` represents \`Service Level\`, \`Inbound Abandoned Calls\`, \`Inbound Overflowed Calls\`, \`Inbound Forwarded to Voicemail\`, \`Member Availability (Active)\`, \`Member Availability (Opt-in/Opt-out)\`, or \`Device offline rate\`, the unit is \`percentage\`. The value can only be in the range of \`1\` to \`100\`, when the value of \`rule\` represents \`Inbound Avg Call Waiting Time\`, the unit is \`seconds\`. The available values are \`10\`, \`15\`, \`20\`, \`25\`, \`30\`, \`45\`, \`60\`, \`120\`, \`180\`, \`240\`, \`300\`, \`600\`, \`900\`, \`1200\`, \`1500\`, and \`1800\`. When the value of \`rule\` represents \`QoS Alert\`, the value can be only in the range of \`0\` to \`5\`. In the case of the value of \`rule\_condition\_type\` is \`4\`, the available values are\`5\`, \`10\`, \`15\`,\`30\`, and \`60\`. In the case of the value of \`rule\_condition\_type\` is \`5\`, the available values are \`Warning\` and\`Critical\`. - **`status`** `integer`, possible values: `0, 1` — The alert's status: \* \`0\` — Inactive. \* \`1\` — Active. - **`targets`** `array` — The targets of the alert. **Items:** - **`assignees`** `array` — This field applies when the the value of \`target\_type\` represents \`Devices\`. **Items:** - **`extension_id`** `string` — The extension ID of the \`user\` or \`common area\`. - **`extension_number`** `integer`, format: `int64` — The extension number of the Zoom Phone the \`user\` or \`commonArea\` uses. - **`extension_type`** `string`, possible values: `"user", "commonArea"` — The type of the assignee. Its available only if the device is assigned. - **`name`** `string` — Name. - **`site`** `object` - **`id`** `string` — The \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672) of the phone user. - **`name`** `string` — The name of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672). - **`target_extension_number`** `integer`, format: `int64` — The extension number of the Zoom Phone that the \`User\` uses. - **`target_id`** `string` — The target ID. - **`target_name`** `string` — The target name. - **`target_type`** `integer`, possible values: `1, 2, 3, 4, 5` — The target type. \* \`1\`-\`User\` \* \`2\`-\`Account\` \* \`3\`-\`Call Queue\` \* \`4\`-\`Site\` \* \`5\`-\`Device\` - **`time_frame_from`** `string` — The start time of time frame in which the alert was triggered, in \`HH:mm:ss\` format. When the \`time\_frame\_type\` is \`all\_day\`, the value is \`00:00:00\` - **`time_frame_to`** `string` — The end time of time frame in which the alert was triggered, in \`HH:mm:ss\` format. When the \`time\_frame\_type\` is \`all\_day\`, the value is \`00:00:00\` - **`time_frame_type`** `string`, possible values: `"all_day", "specific_time"` — The time frame type. The available values: \`all\_day\`, \`specific\_time\` **Example:** ```json { "alert_setting_id": "uvsOCaiDQR2M-NviKFHo0w", "alert_setting_name": "Call Queue Alert", "module": 1, "rule": 1, "rule_conditions": [ { "rule_condition_type": 1, "rule_condition_value": "Warning" } ], "targets": [ { "target_id": "-GHFnf5WQe-H-_r0Wwx9iQ", "target_name": "test api", "target_type": 1, "target_extension_number": 123, "site": { "id": "123123", "name": "Main Site" }, "assignees": [ { "extension_number": 123, "name": "Pooja", "extension_type": "user", "extension_id": "MjGXQfCxShapaxJDka7" } ] } ], "time_frame_type": "specific_time", "time_frame_from": "08:30:00", "time_frame_to": "18:00:00", "frequency": 5, "email_recipients": [ "test@example.com" ], "chat_channels": [ { "chat_channel_name": "ApiTA_Site_2020_07_21_11_02_26_901", "token": "eyJhbGciOiJIUzUxMiIsInYiOiIy", "end_point": "https://www.testexample.com" } ], "status": 1 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`403\` \
You do not have permission. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13003\` \
The alert setting does not exist, alertSettingId:{0}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an alert setting - **Method:** `DELETE` - **Path:** `/phone/alert_settings/{alertSettingId}` - **Tags:** Alerts Deletes an [alert setting](https://support.zoom.us/hc/en-us/articles/7146944434445). **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions. **[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:delete:alert_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Alert setting deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`403\` \
You do not have permission. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13003\` \
The alert setting does not exist, alertSettingId:{0}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update an alert setting - **Method:** `PATCH` - **Path:** `/phone/alert_settings/{alertSettingId}` - **Tags:** Alerts Updates information of an [Alert setting](https://support.zoom.us/hc/en-us/articles/7146944434445). **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:patch:alert_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`alert_setting_name`** `string` — The name of the alert setting. - **`chat_channels`** `array` — The chat channels. This field applies when the value of \`module\` represents \`Call Queue Management\` or \`Route Group Management\` or \`Devices \& Phones Management\` or \`Call Quality Management\`. The number of the chat channels is up to \`3\` **Items:** - **`chat_channel_name`** `string` — The channel name. - **`end_point`** `string` — The end point. - **`token`** `string` — The verification token. - **`email_recipients`** `array` — The email addresses of recipients. The number of the emails is up to \`10\` **Items:** `string` - **`frequency`** `integer`, possible values: `5, 10, 15, 30, 60` — The frequency of alert triggers. The unit is \`minutes\`. When the value of \`module\` represents \`Call Queue Management\` or \`Route Group Management\` or \`Devices \& Phones Management\` or \`Call Quality Management\`, it will be used. - **`rule_conditions`** `array` — The rule conditions. **Items:** - **`rule_condition_type`** `integer`, possible values: `1, 2, 3, 4, 5` — The condition type. \* \`1\`-\`Threshold\` \* \`2\`-\`Warning\` \* \`3\`-\`Critical\` \* \`4\`-\`Alert\` \* \`5\`-\`Severity\`. The \`Threshold\` is used for the \`Service Level\` rule. The \`Warning\` or \`Critical\` is used for the \`Service Level\`, \`Inbound Abandoned Calls\`, \`Inbound Overflowed Calls\`, \`Number of Waiting Calls\`, \`Inbound Forwarded to Voicemail\`, \`Member Availability (Active)\`, \`Member Availability (Opt-in/Opt-out)\`, \`Device offline rate\`, \`Inbound Avg Call Waiting Time\`, or \`QoS Alert\` rule. The \`Alert\` is used for the \`Devices go offline\` or \`device\_online\_time\` rule. The \`Severity\` is used for the \`Emergency Call Alert\` or \`Route groups status change\` rule. - **`rule_condition_value`** `string` — The rule condition value. In the case of the value of \`rule\_condition\_type\` is \`1\`, the available values: \`15\`, \`30\`, \`60\`, \`120\`, \`180\`, \`240\`, \`300\`. In the case of the value of \`rule\_condition\_type \`is \`2\` or \`3\`, when the value of \`rule\` represents \`Service Level\` or \`Inbound Abandoned Calls\` or \`Inbound Overflowed Calls\` or \`Inbound Forwarded to Voicemail\` or \`Member Availability (Active)\` or \`Member Availability (Opt-in/Opt-out)\` or \`Device offline rate\`, the unit is \`percentage\`, the value can only be in the range of \`1\` to \`100\`, when the value of \`rule\` represents \`Inbound Avg Call Waiting Time\`, the unit is \`seconds\`, the available values: \`10\`, \`15\`, \`20\`, \`25\`, \`30\`, \`45\`, \`60\`, \`120\`, \`180\`, \`240\`, \`300\`, \`600\`, \`900\`, \`1200\`, \`1500\`, \`1800\`, when the value of \`rule\` represents \`QoS Alert\`, the value can be only in the range of \`0\` to \`5\`. In the case of the value of \`rule\_condition\_type\` is \`4\`, the available values:\`5\`, \`10\`, \`15\`,\`30\`,\`60\`. In the case of the value of \`rule\_condition\_type\` is \`5\`,the available values:\`Warning\`,\`Critical\`. - **`status`** `integer`, possible values: `0, 1` — The alert's status: \* \`0\` \— Inactive. \* \`1\` \— Active. - **`target_ids`** `array` — The target IDs of the alert. When the rule is \`Devices go offline\` and the old value of this field does not represents \`Account\`, it can be updated incrementally. When the rule is \`Devices go online\` or \`QoS Alert\`, it can be updated incrementally. In the case of \`Devices go online\` or \`Devices go offline\` rule, you should pass the \`Device ID\` of the specific device and the number of Device is up to \`5\` In the case of \`QoS Alert\` rule, you should pass the \`Extension ID\` of the specific user and the number of User is up to \`5\` **Items:** `string` - **`time_frame_from`** `string` — The start time of time frame in which the alert was triggered, in \`HH:mm:ss\` format. When the \`time\_frame\_type\` is \`all\_day\`, the value is \`00:00:00\`. The value should be either at the whole hour or at half past the hour. - **`time_frame_to`** `string` — The end time of time frame in which the alert was triggered, in \`HH:mm:ss\` format. When the \`time\_frame\_type\` is \`all\_day\`, the value is \`00:00:00\`. The value should be either at the whole hour or at half past the hour. - **`time_frame_type`** `string`, possible values: `"all_day", "specific_time"` — The time frame type. The available values: \`all\_day\`, \`specific\_time\` **Example:** ```json { "alert_setting_name": "Call Queue Alert", "rule_conditions": [ { "rule_condition_type": 1, "rule_condition_value": "Warning" } ], "target_ids": [ "vcmGf5wETQy2qExibfWUiA" ], "time_frame_type": "specific_time", "time_frame_from": "08:30:00", "time_frame_to": "18:00:00", "frequency": 5, "email_recipients": [ "test@example.com" ], "chat_channels": [ { "chat_channel_name": "ApiTA_Site_2020_07_21_11_02_26_901", "token": "eyJhbGciOiJIUzUxMiIsInYiOiIy", "end_point": "https://www.testexample.com" } ], "status": 1 } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Alert setting updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed\
\
\*\*Error Code:\*\* \`13006\` \
The number of target is invalid.\
\
\*\*Error Code:\*\* \`13007\` \
The number of email recipients is invalid. \
\
\*\*Error Code:\*\* \`13008\` \
The number of chat channels is invalid.\
\
\*\*Error Code:\*\* \`13010\` \
Invalid parameters.\
\
\*\*Error Code:\*\* \`13011\` \
The specified extension is in the private directory whom you do not have access to.\
\
\*\*Error Code:\*\* \`13014\` \
The target id:{0} is invalid.\
\
\*\*Error Code:\*\* \`403\` \
You do not have permission.\
\
\*\*Error Code:\*\* \`13023\` \
The number of email recipients is invalid.\
\
\*\*Error Code:\*\* \`13024\` \
The number of chat channels is invalid. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13003\` \
The alert setting does not exist, alertSettingId:{0}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get an audio item - **Method:** `GET` - **Path:** `/phone/audios/{audioId}` - **Tags:** Audio Library Returns an audio item. Only the admin or user can access your audio. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:audio`,`phone:read:audio:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\*Successfully listed an audio item. ###### Content-Type: application/json - **`audio_id`** `string` — The unique identifier of the audio item. - **`name`** `string` — The name of the audio item. - **`play_url`** `string` — The URL of the audio file. (The URL is valid for 6 hours.) - **`text`** `string` — The message to play. The maximum message length is 3000. - **`voice_accent`** `string` — The accent of the audio file, such as \`Joanna-Female\` or \`Joey-Male\`. - **`voice_language`** `string`, possible values: `"en-US", "en-GB", "en-GB-WLS", "en-AU", "en-IN", "en-ZA", "en-NZ", "es-ES", "es-US", "es-MX", "fr-CA", "da-DK", "de-DE", "fr-FR", "it-IT", "is-IS", "nl-NL", "pt-PT", "ja-JP", "ko-KO", "ko-KR", "pt-BR", "pl-PL", "zh-CN", "zh-TW", "cmn-CN", "tr-TR", "nb-NO", "ro-RO", "ru-RU", "sv-SE", "cy-GB", "ca-ES", "de-AT", "arb"` — The audio voice language. The language and its code mappings, such as: \`American English\`-\`en-US\`, or \`British English\`-\`en-GB\`. **Example:** ```json { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3", "play_url": "https://file.example.com/file?jwt=eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzY3MjY0MDEsImlzcyI6ImNyb3NzZmlsZSIsImF1ZCI6ImZpbGUiLCJkaWciOiIzM2MyZGFhZjQ2ZDQ2MzFiNGJkMWUzZmRmYmI5OTBjOTUzNTEwZmE5ZDYxZjYyNDAyNGY5OWZiYmY5ZmZlMWU4In0.kPwNFT1C_twZHl3CTeyaiOLhxmJBcHb__SvDBmgGpiQ&mode=download&path=zoomfs%3A%2F%2Fpbx-voice%2F%2Fprompt%2FNNNiWOl7SSmO-qXFOSXPMA%2FhcAjVmo0SVmdSvW2Sm7VrA.mp3", "text": "hello", "voice_language": "en-US", "voice_accent": "Joanna-Female" } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an audio item - **Method:** `DELETE` - **Path:** `/phone/audios/{audioId}` - **Tags:** Audio Library Deletes an audio item. Only the admin or user can delete your audio. **Prerequisites:** - Business, or Education account - Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:audio`,`phone:delete:audio:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully deleted an audio item ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update an audio item - **Method:** `PATCH` - **Path:** `/phone/audios/{audioId}` - **Tags:** Audio Library Updates an audio item. Only the admin or user can update your audio. **Prerequisites:** - Business or Education account - Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:audio`,`phone:update:audio:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`name` (required)** `string` — The name of the audio item. **Example:** ```json { "name": "hello.mp3" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully updated an audio item ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List audio items - **Method:** `GET` - **Path:** `/phone/users/{userId}/audios` - **Tags:** Audio Library Returns personal audios. Only the admin or user can query your audios and directly pass the `me` value instead of the `userId` parameter. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:list_audios`,`phone:read:list_audios:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully listed the audio items. ###### Content-Type: application/json - **`audios`** `array` — The audio item list. **Items:** - **`audio_id`** `string` — The unique identifier of the audio item. - **`name`** `string` — The name of the audio item. **Example:** ```json { "audios": [ { "audio_id": "fPOSdWWqRVqhohLYs7TW9Q", "name": "hello.mp3" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add an audio item for text-to-speech conversion - **Method:** `POST` - **Path:** `/phone/users/{userId}/audios` - **Tags:** Audio Library Adds an audio item for [text-to-speech conversion](https://support.zoom.us/hc/en-us/articles/4402414203533-Using-the-audio-library-to-customize-audio#h_01F8B0D2ZJBKEDH10DFZ7J2CM7). Only the admin or user can add your audio and directly pass the `me` value instead of the `userId` parameter. **Prerequisites:** - Business or Education account - Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:audio`,`phone:write:audio:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`audio_name`** `string` — The name of the audio item. - **`text`** `string` — The message to play. The maximum message length is 3000 - **`voice_accent`** `string` — The accent of the audio file, \`Joanna-Female\` or \`Joey-Male\` for example. - **`voice_language`** `string` — Language \`en-US\` or \`en-GB\` for example. **Example:** ```json { "audio_name": "hello.mp3", "text": "hello", "voice_language": "en-US", "voice_accent": "Joanna-Female" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Added an audio item successfully. ###### Content-Type: application/json - **`audio_id`** `string` — Unique identifier of the audio item - **`name`** `string` — Name of the audio item **Example:** ```json { "audio_id": "fPOSdWWqRVqhohLYs7TW9Q", "name": "hello.mp3" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user ID.\
User does not exist.\
The language is not supported.\
The voice accent is not supported.\
The text is empty.\
Maximum text length has been exceeded. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add audio items - **Method:** `POST` - **Path:** `/phone/users/{userId}/audios/batch` - **Tags:** Audio Library Adds the audio items. You can only upload voice files at this time. Only the admin or user can add your audio and directly pass the `me` value instead of the `userId` parameter. **Prerequisites:** - Business or Education account - Zoom Phone license **Size and quantity limits for audio attachments:** - Up to 5 attachments - Each file size should be no more than 1MB **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:batch_audios`,`phone:write:batch_audios:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Request Body ##### Content-Type: application/json - **`attachments`** `array` **Items:** - **`audio_type`** `string` — The format of the attachments. Supported formats: audio/mpeg, audio/wav - **`base64_encoding`** `string` — The ASCII string to send \[Base64 encoded]\(https\://en.wikipedia.org/wiki/Base64) attachments as text. - **`name`** `string` — The audio file name. **Example:** ```json { "attachments": [ { "audio_type": "audio/mpeg, audio/wav", "base64_encoding": "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz\nIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg\ndGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZG=", "name": "hello.mp3" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Audio items successfully added. ###### Content-Type: application/json - **`audios`** `array` — The audio item list. **Items:** - **`audio_id`** `string` — The unique identifier of the audio item. - **`name`** `string` — The name of the audio item. **Example:** ```json { "audios": [ { "audio_id": "fPOSdWWqRVqhohLYs7TW9Q", "name": "hello.mp3" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The type of audio is invalid, audio name: {0}. The size of audio exceeds limit, audio name: {0}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List auto receptionists - **Method:** `GET` - **Path:** `/phone/auto_receptionists` - **Tags:** Auto Receptionists Returns a list of auto receptionists. **Prerequisites:** - Pro or a higher account with Zoom Phone license. - Account owner or admin permissions. **[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:list_auto_receptionists:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* List of \[auto receptionists]\(https\://support.zoom.us/hc/en-us/articles/360021121312-Managing-auto-receptionists) retrieved successfully. ###### Content-Type: application/json - **`auto_receptionists`** `array` **Items:** - **`audio_prompt_language`** `string` — Audio prompt language. - **`cost_center`** `string` — \`nullable\` Cost center name. - **`department`** `string` — \`nullable\` Department name. - **`extension_id`** `string` — Extension ID - **`extension_number`** `integer`, format: `int64` — Extension number of the auto receptionist. - **`holiday_hours`** `array` — The holiday hours. **Items:** - **`from`** `string`, format: `date-time` — The holiday start date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`id`** `string` — The holiday ID. - **`name`** `string` — The name of the holiday. - **`to`** `string`, format: `date-time` — The holiday end date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`id`** `string` — The unique identifier of the auto receptionist. - **`name`** `string` — Name of the auto receptionist. - **`phone_numbers`** `array` **Items:** - **`id`** `string` — Unique identifier of the phone number. - **`number`** `string` — Phone number. - **`site`** `object` - **`id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) to which the common area desk phone is assigned. - **`name`** `string` — Name of the site. - **`timezone`** `string` — \[Timezone]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones) of the Auto Receptionist. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — Total number of records returned from a single API call. - **`total_records`** `integer` — Total number of records found for this query. **Example:** ```json { "auto_receptionists": [ { "cost_center": "testCostCenter", "department": "testDepartment", "extension_id": "WfsrPERXS8inWrpH1Hi_KQ", "extension_number": 555550000000001, "id": "nqerMCD0Tu6RPGoCpVbPtA", "name": "JamieAuto", "timezone": "Pacific/Midway", "audio_prompt_language": "en-US", "holiday_hours": [ { "id": "i3gP6xFUTHqSFrIE6nHs7Q", "name": "Holiday 1", "from": "2022-03-08T16:00:00Z", "to": "2022-03-09T16:00:00Z" } ], "phone_numbers": [ { "id": "KsxwNLEhQ0SJ4U4Bor4ShA", "number": "+12058945717" } ], "site": { "id": "O4rBC_zEQnCVoiHfXKGKNA", "name": "jamietestsite" } } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30, "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add an auto receptionist - **Method:** `POST` - **Path:** `/phone/auto_receptionists` - **Tags:** Auto Receptionists Adds an [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-) to a Zoom Phone. Auto receptionists answer calls with a personalized recording and routes calls to a phone user, call queue, common area, voicemail or an IVR system. **Prerequisites:** - Pro or higher account with Zoom Phone license. - Account owner or admin privileges **[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:write:auto_receptionist:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`name` (required)** `string` — Provide a name to help identify the auto receptionist. - **`site_id`** `string` — Unique identifier of the site where the auto receptionist is to be assigned. This field is required only if you have \[multiple sites]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) enabled. **Example:** ```json { "name": "JamieAuto", "site_id": "O4rBC_zEQnCVoiHfXKGKNA" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Auto receptionist added successfully. ###### Content-Type: application/json - **`extension_number`** `integer`, format: `int64` — Extension number assigned to the auto receptionist. - **`id`** `string` — Auto receptionist ID. The unique identifier of the auto receptionist. - **`name`** `string` — Name of the auto receptionist. **Example:** ```json { "extension_number": 555550000000001, "id": "nqerMCD0Tu6RPGoCpVbPtA", "name": "JamieAuto" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get an auto receptionist - **Method:** `GET` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}` - **Tags:** Auto Receptionists Returns information on a specific auto receptionist. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:auto_receptionist:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully get an auto receptionist detail. ###### Content-Type: application/json - **`audio_prompt_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The language for all default audio prompts for the auto receptionist. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`cost_center`** `string` — \`nullable\` The cost center name. - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`department`** `string` — \`nullable\` The name of the department. - **`extension_id`** `string` — The extension ID - **`extension_number`** `integer`, format: `int64` — The extension number of the auto receptionist. - **`holiday_hours`** `array` — The holiday hours. **Items:** - **`from`** `string`, format: `date-time` — The holiday start date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`id`** `string` — The holiday ID. - **`name`** `string` — The name of the holiday. - **`to`** `string`, format: `date-time` — The holiday end date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`name`** `string` — The name of the auto receptionist. - **`own_storage_name`** `string` — The name of your own storage. Use your own storage provided by Oracle Cloud Infrastructure (OCI) to store Zoom Phone recordings, voicemails, and voicemail transcripts, and custom greeting prompts. - **`phone_numbers`** `array` **Items:** - **`id`** `string` — The unique identifier of the phone number. - **`number`** `string` — The phone number. - **`recording_storage_location`** `string`, possible values: `"US", "AU", "CA", "DE", "IN", "JP", "SG", "BR", "CN", "MX"` — Where the recording will be stored. Recording includes Phone recordings, voicemail, voicemail transcripts, and custom greeting prompts. \* \`US\` : United States \* \`AU\` : Australia \* \`CA\` : Canada \* \`DE\` : Germany \* \`IN\` : India \* \`JP\` : Japan \* \`SG\` : Singapore \* \`BR\` : Brazil \* \`CN\` : China \* \`MX\` : Mexico \Note:\ \* If the setting is locked at the Account level, it can't be updated. - **`site`** `object` - **`id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) to which the common area desk phone is assigned. - **`name`** `string` — The name of the site. - **`timezone`** `string` — \[Timezone]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones) of the auto receptionist. **Example:** ```json { "cost_center": "testCostCenter", "department": "testDepartment", "extension_id": "WfsrPERXS8inWrpH1Hi_KQ", "extension_number": 555550000000001, "name": "JamieAuto", "timezone": "Pacific/Midway", "audio_prompt_language": "en-US", "default_transcription_language": "en-US", "holiday_hours": [ { "id": "i3gP6xFUTHqSFrIE6nHs7Q", "name": "Holiday 1", "from": "2022-03-08T16:00:00Z", "to": "2022-03-09T16:00:00Z" } ], "phone_numbers": [ { "id": "KsxwNLEhQ0SJ4U4Bor4ShA", "number": "+12058945717" } ], "site": { "id": "O4rBC_zEQnCVoiHfXKGKNA", "name": "jamietestsite" }, "recording_storage_location": "US", "own_storage_name": "us-oracle-storage" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a non-primary auto receptionist - **Method:** `DELETE` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}` - **Tags:** Auto Receptionists [Deletes a non-primary auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-#h_1d5ffc56-6ba3-4ce5-9d86-4a1a1ee743f3). An auto receptionist answers calls with a personalized recording and routes calls to a phone user, call queue, common area (phone), or to a voicemail. An auto receptionist can also be set up so that it routes calls to an interactive voice response (IVR) system to allow callers to select the routing options. **Prerequisites:** - Pro or higher account with Zoom Phone license. **[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:delete:auto_receptionist:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Auto Receptionist deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Unable to delete main Auto receptionist.\
\
\
\*\*Error Code:\*\* \`404\` \
AutoReceptionist does not exist: {autoReceptionistId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update an auto receptionist - **Method:** `PATCH` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}` - **Tags:** Auto Receptionists [Changes information](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-#h_1d5ffc56-6ba3-4ce5-9d86-4a1a1ee743f3) such as the display name and the extension number assigned to the main auto receptionist. An auto receptionist answers calls with a personalized recording. And it routes calls to a phone user, call queue, common area, or voicemail. An auto receptionist can also be set up so that it routes calls to an interactive voice response (IVR) system to allow callers to select the routing options. **Prerequisites:** - Pro or higher account with Zoom Phone license. **[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:auto_receptionist:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`audio_prompt_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The language for all default audio prompts for the Auto Receptionist. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`cost_center`** `string` — The cost center name. - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`department`** `string` — The department name. - **`extension_number`** `integer`, format: `int64` — The extension number to be assigned to the auto receptionist. If site code is enabled, provide the short extension number instead. - **`name`** `string` — Display name of the auto receptionist. - **`recording_storage_location`** `string`, possible values: `"US", "AU", "CA", "DE", "IN", "JP", "SG", "BR", "CN", "MX"` — Where the recording will be stored. The recording includes Phone recordings, voicemail, voicemail transcripts, and custom greeting prompts. \* \`US\` : United States \* \`AU\` : Australia \* \`CA\` : Canada \* \`DE\` : Germany \* \`IN\` : India \* \`JP\` : Japan \* \`SG\` : Singapore \* \`BR\` : Brazil \* \`CN\` : China \* \`MX\` : Mexico \Note:\ \* If the setting is locked at the Account level, it can't be updated. - **`timezone`** `string` — The \[timezone]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones) of the Auto Receptionist. **Example:** ```json { "cost_center": "testCostCenter", "department": "testDepartment", "extension_number": 555550000000001, "name": "JamieAuto", "audio_prompt_language": "en-US", "default_transcription_language": "en-US", "timezone": "Pacific/Midway", "recording_storage_location": "US" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Auto Receptionist details updated sucessfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Extension Number must be {min} to {max} digits\
Validation Failed. AutoReceptionist does not exist, AutoReceptionistId: {autoReceptionistId}\
Audio prompt language is invalid:{0}\
Time zone is invalid:{0}\
\
\*\*Error Code:\*\* \`400\` \
Invalid short number length.\
Invalid full extension number length.\
\
\
\*\*Error Code:\*\* \`10001\` \
Number {extensionNumber} is a reserved extension number.\
Extension number {extensionNumber} is already used.\
Language setting is invalid. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign phone numbers - **Method:** `POST` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/phone_numbers` - **Tags:** Auto Receptionists Assigns available phone numbers to an [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-). The available numbers can be retrieved using the List Phone Numbers API with `type` query parameter set to "unassigned". **Prerequisites:** - Pro or higher account plan with Zoom Phone License - Account owner or admin permissions **[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:write:auto_receptionist_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`phone_numbers`** `array` — Provide either the unique identifier of the Phone Number in the \`id\` field or provide the phone number in the \`number\` field. **Items:** - **`id`** `string` — Unique Identifier of the Phone number. - **`number`** `string` — Phone number in e164 format. **Example:** ```json { "phone_numbers": [ { "id": "KsxwNLEhQ0SJ4U4Bor4ShA", "number": "+12058945717" } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone numbers assigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Unable to update this number as it is used for outbound caller ID to public safety answering point.\
Phone number does not exist, phonenumberId:{phonenumberId}\
phoneNumber is used, phonenumberId:{phonenumberId} \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
AutoReceptionist does not exist, AutoReceptionistId: {autoReceptionId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign all phone numbers - **Method:** `DELETE` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/phone_numbers` - **Tags:** Auto Receptionists Unassigns all phone numbers that were previously assigned to an [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-). **Prerequisites:** - Pro or higher account plan with Zoom Phone License - Account owner or admin permissions **[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:delete:auto_receptionist_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone numbers unassigned successfully. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
AutoReceptionist does not exist, AutoReceptionistId: {autoReceptionId} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign a phone number - **Method:** `DELETE` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/phone_numbers/{phoneNumberId}` - **Tags:** Auto Receptionists Unassigns a specific phone number that was previously assigned to an [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-). **Prerequisites:** - Pro or higher account plan with Zoom Phone License - Account owner or admin permissions **[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:delete:auto_receptionist_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone number unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Phone number does not belong to auto receptionist. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
AutoReceptionist does not exist, AutoReceptionistId: {autoReceptionId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get an auto receptionist policy - **Method:** `GET` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/policies` - **Tags:** Auto Receptionists Returns the policy setting of a specific [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-). **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:auto_receptionist_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully retrieved the auto receptionist policy. ###### Content-Type: application/json - **`sms`** `object` - **`enable`** `boolean` — Whether to allow users, call queues and auto receptionists to send and receive messages. You will still need to assign a valid calling plan and phone number to each user in order for them to send and receive messages. - **`international_sms`** `boolean` — Whether the user can send and receive international messages. - **`international_sms_countries`** `array` — The country to which users can send and receive international messages. The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). **Items:** `string` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`voicemail_access_members`** `array` — Shared voicemail access member list. **Items:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or unique identifier of the common area depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`delete`** `boolean` — Specifies whether the user has delete permissions. The default is \*\*false\*\*. - **`download`** `boolean` — Specifies whether the user has download permissions. The default is \*\*false\*\*. - **`shared_id`** `string` — Unique identifier of the shared voicemail that the user can access. - **`voicemail_notification_by_email`** `object` — Once enabled, users will receive email notifications when there is a new voicemail from users, call queues, auto receptionists or shared line groups. Users who disabled the shared voicemail notification by email policy will not receive notifications. Only displayed when the voicemail policy is using the new policy framework. - **`enable`** `boolean` - **`forward_voicemail_to_email`** `boolean` — Whether to forward the voicemail to email. - **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`voicemail_transcription`** `object` - **`enable`** `boolean` — Whether to allow users to access transcriptions of voicemails from the Zoom client, the Zoom web portal and email notifications. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). **Example:** ```json { "voicemail_access_members": [ { "shared_id": "--e8ugg0SeS-9clgrDkn2w", "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "delete": false, "download": false } ], "voicemail_transcription": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": false, "forward_voicemail_to_email": true, "enable": true, "locked": true, "locked_by": "site", "modified": true }, "sms": { "enable": true, "international_sms": true, "international_sms_countries": [ "US" ], "locked": true, "locked_by": "site", "modified": true } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update an auto receptionist policy - **Method:** `PATCH` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/policies` - **Tags:** Auto Receptionists Updates the policy setting of a specific [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-). **Prerequisites:** - Pro or higher account plan with Zoom Phone License - Account owner or admin permissions **[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:auto_receptionist_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`sms`** `object` - **`enable`** `boolean` — Whether to allow users, call queues and auto receptionists to send and receive messages. You will still need to assign a valid calling plan and phone number to each user in order for them to send and receive messages. - **`international_sms`** `boolean` — Whether the user can send and receive international messages. - **`international_sms_countries`** `array` — The country which users can send and receive international messages. The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). **Items:** `string` - **`reset`** `boolean` — Whether the current settings will use the phone account's settings (applicable if the current settings are using the new policy framework). - **`voicemail_notification_by_email`** `object` — Once enabled, users will receive email notifications when there is a new voicemail from users, call queues, auto receptionists or shared line groups. Users who disabled the shared voicemail notification by email policy will not receive notifications. Only displayed when the voicemail policy is using the new policy framework. - **`enable`** `boolean` - **`forward_voicemail_to_email`** `boolean` — Whether to forward the voicemail to email. - **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`reset`** `boolean` — Whether the current settings will use the phone account's settings (applicable if the current settings are using the new policy framework). - **`voicemail_transcription`** `object` - **`enable`** `boolean` — Whether to allow users to access transcriptions of voicemails from the Zoom client, the Zoom web portal and email notifications. - **`reset`** `boolean` — Whether the current settings will use the phone account's settings (applicable if the current settings are using the new policy framework). **Example:** ```json { "voicemail_transcription": { "enable": true, "reset": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": false, "forward_voicemail_to_email": true, "enable": true, "reset": true }, "sms": { "enable": true, "reset": true, "international_sms": true, "international_sms_countries": [ "US" ] } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Auto receptionist policy updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a policy subsetting - **Method:** `POST` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/policies/{policyType}` - **Tags:** Auto Receptionists Adds a policy subsetting for a specific [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-) according to the `policyType`. For example, you can use this API to set up shared access members.\ \ **Prerequisites:** - Pro or higher account plan with Zoom Phone License - Account owner or admin permissions **[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:write:auto_receptionist_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`voicemail_access_member`** `object` - **`access_user_id`** `string` — The user that is allowed to access voicemail messages for the extension. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. The default type will be the user, if empty. Allowed: user | commonArea. - **`delete`** `boolean` — Specifies whether the user has delete permissions. The default is \*\*false\*\*. - **`download`** `boolean` — Specifies whether the user has download permissions. The default is \*\*false\*\*. **Example:** ```json { "voicemail_access_member": { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "delete": false, "download": false } } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Auto receptionist policy created successfully. ###### Content-Type: application/json - **`voicemail_access_member`** `object` - **`access_user_id`** `string` — The user that is allowed to access voicemail messages for the extension. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`delete`** `boolean` — Specifies whether the user has delete permissions. The default is \*\*false\*\*. - **`download`** `boolean` — Specifies whether the user has download permissions. The default is \*\*false\*\*. - **`shared_id`** `string` — Unique identifier of the shared voicemail that the user can access. **Example:** ```json { "voicemail_access_member": { "shared_id": "--e8ugg0SeS-9clgrDkn2w", "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "delete": false, "download": false } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
\*\*Error Code:\*\* \`429\` \
You can only add up to {0} {1} to access your voicemail.\
User does not exist: {0}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a policy subsetting - **Method:** `DELETE` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/policies/{policyType}` - **Tags:** Auto Receptionists Removes the policy subsetting for a specific [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-) according to the `policyType`. For example, you can use this API to remove shared access members. **Prerequisites:** - Pro or higher account plan with Zoom Phone License - Account owner or admin permissions **[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:delete:auto_receptionist_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Auto receptionist policy successfully deleted. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a policy subsetting - **Method:** `PATCH` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/policies/{policyType}` - **Tags:** Auto Receptionists Updates the policy subsetting of a specific [auto receptionist](https://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-) according to the `policyType`. For example, you can use this API to update shared access members. **Prerequisites** - Pro or higher account plan with Zoom Phone License - Account owner or admin permissions **[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:auto_receptionist_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`voicemail_access_member`** `object` — The setting for voicemail access members. - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or the unique identifier of the common area, depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. The default type will be user if empty. Allowed: user | commonArea. - **`delete`** `boolean` — This field specifies whether the user has delete permissions. The default is \*\*false\*\*. - **`download`** `boolean` — This field specifies whether the user has download permissions. The default is \*\*false\*\*. - **`share`** `boolean` — This field specifies whether the user has share permissions. The default is \*\*false\*\*. - **`shared_id`** `string` — This field is an unique identifier of the shared voicemail that the user can access. **Example:** ```json { "voicemail_access_member": { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "delete": false, "download": false, "share": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Auto receptionist policy updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List billing accounts - **Method:** `GET` - **Path:** `/phone/billing_accounts` - **Tags:** Billing Account Retrieves a list of available billing accounts for a Zoom account owner or a user with admin privileges. If the [multiple sites](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) option has been enabled for the account, then `field(site_id)` is required. **Prerequisites:** - Pro or higher account plan with Zoom phone license **[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:list_billing_accounts:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Billing accounts returned successfully. ###### Content-Type: application/json - **`billing_accounts`** `array` **Items:** - **`id`** `string` — The billing account ID. - **`name`** `string` — The billing account name. **Example:** ```json { "billing_accounts": [ { "id": "3WWAEiEjTj2IQuyDiKMd_A", "name": "Delhi billing" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request site\_id is invalid ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get billing account details - **Method:** `GET` - **Path:** `/phone/billing_accounts/{billingAccountId}` - **Tags:** Billing Account A Zoom account owner or a user with admin privilege can use this API to get information about a billing account. **Prerequisites:** - Pro or higher account plan with Zoom phone license **[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:billing_account:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Billing account retrieved successfully. ###### Content-Type: application/json - **`id`** `string` — The billing account ID. - **`name`** `string` — The billing account name. **Example:** ```json { "id": "3WWAEiEjTj2IQuyDiKMd_A", "name": "Delhi billing" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Billing account does not exist: {billingAccountId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List blocked lists - **Method:** `GET` - **Path:** `/phone/blocked_list` - **Tags:** Blocked List Returns all the blocked lists in an acccount. A Zoom account owner or a user with admin privilege can block phone numbers for phone users in an account. Blocked numbers can be inbound (numbers will be blocked from calling in) and outbound (phone users in your account won't be able to dial those numbers). Blocked callers will hear a generic message stating that the person they are calling is not available. **Prerequisites:** - Pro or higher account plan with Zoom phone license **[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:list_blocked_lists:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Blocked list returned successfully. ###### Content-Type: application/json - **`blocked_list`** `array` **Items:** - **`block_type`** `string`, possible values: `"inbound", "outbound", "threat"` — The block type. \`inbound\`: The blocked number or numbers with the specified prefix are prevented from calling in to phone users. \`outbound\`: The phone users are prevented from calling the blocked number or numbers with the specified prefix. - **`comment`** `string` — Comments to help you identify the blocked number or prefix. - **`id`** `string` — The unique identifier of the blocked list. - **`match_type`** `string`, possible values: `"phoneNumber", "prefix"` — Whether the match type for the blocked list: \`phoneNumber\`: Indicates that only a specific phone number that is shown in the \`phone\_number\` field is blocked. \`prefix\`: Indicates that all numbers starting with the prefix that is shown in the \`phone\_number\` field are blocked. - **`phone_number`** `string` — The phone number to be blocked if you passed \`phoneNumber\` as the value for the \`match\_type\` field. If you passed \`prefix\` as the value for the \`match\_type\` field, provide the prefix of the phone number in the \`country\` field. Displayed in E164 format. - **`status`** `string`, possible values: `"active", "inactive"` — Whether the blocking is active or inactive. \`active\`: The blocked list is active. \`inactive\`: The blocked list is inactive. - **`next_page_token`** `string` — 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. - **`page_size`** `integer`, default: `30` — The total number of records returned from a single API call. - **`total_records`** `integer` — The total number of records found for this query. **Example:** ```json { "blocked_list": [ { "block_type": "inbound", "comment": "test", "id": "2ypsHHwTTFK-fzZJkudYwA", "match_type": "prefix", "phone_number": "+12055558945", "status": "active" } ], "next_page_token": "OvrVMfenVmKgsH0SqfWQ2jgUsHFGXeanCB2", "page_size": 30, "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create a blocked list - **Method:** `POST` - **Path:** `/phone/blocked_list` - **Tags:** Blocked List Creates a block list and add a number to the list. A Zoom account owner or a user with the admin privilege can block phone numbers for phone users in an account. Blocked numbers can be inbound (numbers will be blocked from calling in) and outbound (phone users in your account won't be able to dial those numbers). Blocked callers will hear a generic message stating that the person they are calling is not available. **Prerequisites:** - Pro or higher account plan with Zoom phone license **[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:write:blocked_list:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`block_type`** `string`, possible values: `"inbound", "outbound", "threat"` — Whether you want the block type to be inbound or outbound. \`inbound\`: Pass this value to prevent the blocked number or prefix from calling into the phone users. \`outbound\`: Pass this value to prevent phone users from calling the blocked number or prefix. - **`comment`** `string` — Comments to help you identify the blocked number or prefix. - **`country`** `string` — The country information. For example, entering US or CH. - **`match_type`** `string`, possible values: `"phoneNumber", "prefix"` — This field specifies the match type for the blocked list: \* \`phoneNumber\`: Choose this option (Phone Number Match) if you want to block a specific phone number. Provide the phone number in the \`phone\_number\` field and the country code in the \`country\` field. \* \`prefix\`: Choose this option (Prefix Match) if you want to block all numbers with a specific country or an area code. Enter a phone number in the \`phone\_number\` field and in the \`country\` field, enter a country code as part of the prefix. - **`phone_number`** `string` — The phone number to be blocked if you passed \`phoneNumber\` as the value for the \`match\_type\` field. If you passed \`prefix\` as the value for the \`match\_type\` field, provide the prefix of the phone number in the \`country\` field. - **`status`** `string`, possible values: `"active", "inactive"` — This field enables or disables the blocking. One of the following values are allowed: \`active\`: Keep the blocking active. \`inactive\`: Disable the blocking. **Example:** ```json { "block_type": "inbound", "comment": "test", "country": "US", "match_type": "prefix", "phone_number": "112", "status": "active" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Number added to the blocked list successfully. ###### Content-Type: application/json - **`id`** `string` — The unique identifier of the blocked list. **Example:** ```json { "id": "2ypsHHwTTFK-fzZJkudYwA" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid country. \
##### Status: 409 \*\*HTTP Status Code:\*\* \`409\` \
Conflict ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get blocked list details - **Method:** `GET` - **Path:** `/phone/blocked_list/{blockedListId}` - **Tags:** Blocked List Returns the information about a specific blocked list. A Zoom account owner or a user with admin privilege can block phone numbers for phone users in an account. Blocked numbers can be inbound (numbers will be blocked from calling in) and outbound (phone users in your account won't be able to dial those numbers). Blocked callers will hear a generic message stating that the person they are calling is not available. **Prerequisites:** - Pro or higher account plan with Zoom phone license **[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:blocked_list:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Blocked list retrieved successfully. ###### Content-Type: application/json - **`block_type`** `string`, possible values: `"inbound", "outbound", "threat"` — The block type. \* \`inbound\`: The blocked number or numbers with the specifie prefix are prevented from calling in to phone users. \* \`outbound\`: The phone users are prevented from calling the blocked number or numbers with the specified prefix. - **`comment`** `string` — This field provides a comment to help you identify the blocked number or prefix. - **`id`** `string` — The blocked list ID. - **`match_type`** `string`, possible values: `"phoneNumber", "prefix"` — This field indicates the match type for the blocked list. The values can be one of the following: \* \`phoneNumber\`: Indicates that only a specific phone number that is shown in the \`phone\_number\` field is blocked. \* \`prefix\`: Indicates that all numbers starting with prefix that is shown in the \`phone\_number\` field are blocked. - **`phone_number`** `string` — The phone number or the prefix number that is blocked based on the \`match\_type\`. Displayed in E164 format. - **`status`** `string`, possible values: `"active", "inactive"` — This field indicates whether the blocking is active or inactive. \*n\`active\`: The blocked list is active. \* \`inactive\`: The blocked list is inactive. **Example:** ```json { "block_type": "inbound", "comment": "test", "id": "2ypsHHwTTFK-fzZJkudYwA", "match_type": "prefix", "phone_number": "+120665558945", "status": "active" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Blocked number (Id: {blockedListId}) does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a blocked list - **Method:** `DELETE` - **Path:** `/phone/blocked_list/{blockedListId}` - **Tags:** Blocked List Deletes a blocked list, which removes the associated number from the blocked list. The number will be unblocked after the deletion. A Zoom account owner or a user with admin privilege can block phone numbers for phone users in an account. Blocked numbers can be inbound (numbers will be blocked from calling in) and outbound (phone users in your account won't be able to dial those numbers). **Prerequisites:** - Pro or higher account plan with Zoom phone license **[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:delete:blocked_list:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Blocked list deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Blocked number (Id: {blockedListId}) does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a blocked list - **Method:** `PATCH` - **Path:** `/phone/blocked_list/{blockedListId}` - **Tags:** Blocked List Updates the information in the blocked list. A Zoom account owner or a user with admin privilege can block phone numbers for phone users in an account. Blocked numbers can be inbound (numbers will be blocked from calling in) and outbound (phone users in your account won't be able to dial those numbers). Blocked callers hear a generic message stating that the person they are calling is not available. **Prerequisites:** - Pro or higher account plan with Zoom phone license **[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:blocked_list:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`block_type`** `string`, possible values: `"inbound", "outbound"` — Whether you want the block type to be inbound or outbound. \`inbound\`: Pass this value to prevent the blocked number or prefix from calling in to phone users. \`outbound\`: Pass this value to prevent phone users from calling the blocked number or prefix. - **`comment`** `string` — This field enables you to make a comment to identify the blocked number or prefix. - **`country`** `string` — The country information. For example, entering US or CH. - **`match_type`** `string`, possible values: `"phoneNumber", "prefix"` — This field specifies the match type for the blocked list: \* \`phoneNumber\`: Choose this option (Phone Number Match) if you want to block a specific phone number. Provide the phone number in the \`phone\_number\` field and the country code in the \`country\` field. \* \`prefix\`: Choose this option (Prefix Match) if you want to block all numbers with a specific country or an area code. Enter a phone number in the \`phone\_number\` field and in the \`country\` field, enter a country code as part of the prefix. - **`phone_number`** `string` — The phone number to be blocked if you passed \`phoneNumber\` as the value for the \`match\_type\` field. If you passed \`prefix\` as the value for the \`match\_type\` field, provide the prefix of the phone number in the \`country\` field. - **`status`** `string`, possible values: `"active", "inactive"` — This field enables or disables the blocking: \* \`active\`: Keep the blocking active. \* \`inactive\`: Disable the blocking. **Example:** ```json { "block_type": "outbound", "comment": "testComment", "country": "CH", "match_type": "prefix", "phone_number": "113", "status": "inactive" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Blocked list updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid country. \
##### Status: 409 \*\*HTTP Status Code:\*\* \`409\` \
Conflict ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call handling settings - **Method:** `GET` - **Path:** `/phone/extension/{extensionId}/call_handling/settings` - **Tags:** Call Handling Returns information about a Zoom Phone's call handling settings. Call handling settings let you control how your system routes calls during business, closed, or holiday hours. For more information, read our [API guide](https://developers.zoom.us/docs/zoom-phone/call-handling/) or Zoom support article [Customizing call handling settings](https://support.zoom.us/hc/en-us/articles/360059966372-Customizing-call-handling-settings). **Applicable to user, call queue, auto receptionist, or shared line group call handling at this time.** **Prerequisites** - Pro or a higher account with Zoom Phone enabled **[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:list_call_handling_settings:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` OK ###### Content-Type: application/json - **`business_hours`** `array` — The information about business hours settings. **Items:** - **`settings`** `object` — The business hours settings. - **`allow_callers_check_voicemail`** `boolean` — \`Note: This field is invalid and part of incorrect documentation. It is not included in the actual response.\` Whether to allow the callers to check voicemails over a phone. Required only when the \`call\_not\_answer\_action\` setting is set to \`1\` (Forward to a voicemail). - **`allow_members_to_reset`** `boolean` — This field allows queue members to set their own business hours. It allows queue members' business hours to override the default hours of the call queue. Required for \`Call Queue custom\_hours\` sub-setting. - **`audio_while_connecting`** `object` — Returns the audio played when the inbound callers are waiting to be routed to the next available call queue member. \* empty char - default \* \`ring\_tone\` - "Ring Tone" option \* \`0\` - disable Returned only for the \`Call Queue\` \`call\_handling\` sub-setting. - **`id`** `string` — The audio-while-connecting prompt ID. If the audio was removed from the user's audio library, it's marked with a prefix (for example, \`removed\_vWby3OZaQlS1nAdmEAqgwA\`). You can use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The audio while connecting the prompt name. - **`busy_routing`** `object` — The extension's forwarding or overflow information when the user is busy on another call during Business Hours. Applicable to the extension as shown below: \* \`User\`. - **`action`** `integer` — The action to take when the user is busy on another call during Business Hours: \* \`21\` - Call waiting. \* \`22\` - Play a busy signal. \* \`1\` \— Forward to a voicemail/videomail. \* \`2\` - Forward to the user. \* \`4\` - Forward to the common area. \* \`6\` - Forward to the auto receptionist. \* \`7\` - Forward to a call queue. \* \`8\` - Forward to a shared line group. \* \`9\` - Forward to an external contact. \* \`10\` - Forward to an external number. \* \`12\` \— Play a message, then disconnect. - **`allow_callers_check_voicemail`** `boolean` — Whether to allow the callers to check voicemails over a phone. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` - **`busy_play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue) or \`8\`(Forward to a Shared Line Group). Applicable to the extension as shown below: \* \`User\` - **`connect_to_operator`** `boolean` — Whether to allow callers to reach an operator. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` - **`forward_to`** `object` — The information about the call forwarding target. This field is only available in the following scenarios: \* Secnario 1: when \`action\` in the \`busy\_routing\` section is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue), \`8\`(Forward to a Shared Line Group) or \`9\`(forward to an External Contact) for the user busy on another call, this field is used to display the extension to which the call will be forwarded. This scenario applies to \`User\`. \* Secnario 2: When \`action\` in the \`busy\_routing\` section is set to \`10\` (Forward to Phone number/External number) for the user busy on another call, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`. - **`description`** `string` — This field forwards to an external number description. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`busy\_routing\` section is set to \`10\` (Forward to Phone number/External number) for the user busy on another call, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "autoReceptionist", "callQueue", "commonArea"` — The type of extension: \* \`user\` \* \`autoReceptionist\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`autoReceptionist\`, \`device\`, or \`callQueue\`. - **`phone_number`** `string` — The extension's phone number or forward to an external number, in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`busy\_routing\` section is set to \`10\` (Forward to Phone number/External number) for the user busy on another call, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`. - **`voicemail_greeting`** `object` — The voicemail greeting prompt. It returns only when the \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail) for the \`Call Queue\` or \`Auto Receptionist\` \`call\_handling\` sub-setting. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`message_greeting`** `object` — The message greeting prompt. This field is only available in the following scenarios: \* Secnario 1: The the \`action\` in the \`busy\_routing\` section is set to \`12\` (Play a message, then disconnect). Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`id`** `string` — The message greeting prompt ID. Options: empty char - default - **`name`** `string` — The message greeting prompt name. - **`operator`** `object` — The the operator to whom the call is being forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. Applicable to the extension as shown below: \* \`User\` - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "commonArea", "sharedLineGroup", "callQueue"` — The type of extension: \* \`user\` \* \`commonArea\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`commonArea\`, \`sharedLineGroup\`, \`device\`, or \`callQueue\`. - **`overflow_play_callee_voicemail_greeting`** `boolean` — \`Note: This field is invalid and part of incorrect documentation. It is only included in the \`routing\` section.\` Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. It displays when \`call\_not\_answer\_action\` is set to \`2\` - Forward to the user, \`4\` - Forward to the common area, \`6\` - Forward to the auto receptionist, \`7\` - Forward to a call queue, \`8\` - Forward to a shared line group, \`9\` - Forward to an external contact, \`10\` - Forward to an external number. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. Applicable to the extension as shown below: \* \`User\` - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. This field helps to ensure that missed calls do not reach to your personal voicemail. It returns for the \`Forward to an external number\` and \`Forward to External Contacts\` options. - **`voicemail_greeting`** `object` — The voicemail greeting audio prompt Returns only for the \`user\` and \`call\_handling\` subsetting options. It displays when the \`action\` in the \`busy\_routing\` section is set to \`1\` - Forward to a voicemail. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`voicemail_leaving_instruction`** `object` — The voicemail leaving instruction prompt. This field is only available in the following scenarios: \* Secnario 1: The the \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail), and either \`connect\_to\_operator\` or \`allow\_callers\_check\_voicemail\` is set to \`true\`. Applicable to the extension as shown below: \* \`User\` - **`id`** `string` — The voicemail leaving instruction prompt ID. Options: empty char - default - **`name`** `string` — The voicemail leaving instruction prompt name. - **`call_distribution`** `object` — This option distributes incoming calls. If \`Sequential\` or \`Rotating\` is selected, calls ring for a specific time before trying the next available queue member. Returned only for the \`call\_handling\` sub-setting. - **`handle_multiple_calls`** `boolean` — The maximum number of calls that can be handled simultaneously is less than half of the total amount of available call queue members. Note that the first incoming call might not be answered first. Returned only except \`simultaneous\` ring mode. - **`ring_duration`** `integer`, possible values: `10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — The ringing duration for each member: \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` Returned only except \`simultaneous\` ring mode. - **`ring_mode`** `string`, possible values: `"simultaneous", "sequential", "rotating", "longest_idle"` — The call distribution ring mode: \* \`simultaneous\` \* \`sequential\` \* \`rotating\` \* \`longest\_idle\` - **`skip_offline_device_phone_number`** `boolean` — 1. Devices with Zoom app or client not launched and mobile phone with screen locked will be skipped. 2. Phone numbers added to user's call handling settings are skipped. Returned only except \`simultaneous\` ring mode. - **`call_forwarding_settings`** `array` — The call forwarding settings. It returns only for the \`call\_forwarding\` sub-setting. **Items:** - **`description`** `string` — The external phone number's description. - **`enable`** `boolean` — Whether to receive a call. - **`external_contact`** `object` - **`email`** `string` — The external contact's email address. - **`external_contact_id`** `string` — The external contact's ID. - **`name`** `string` — The external contact's username or extension display name. - **`phone_numbers`** `array` — The external contact's phone numbers. **Items:** `string` - **`id`** `string` — The call forwarding's ID. - **`phone_number`** `string` — The external phone number in E164 format. - **`call_not_answer_action`** `integer`, possible values: `1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14` — \`Note: This field is invalid and part of incorrect documentation. It is not included in the actual response.\` The action to take when a call is not answered: \* \`1\` \— Forward to a voicemail. \* \`2\` \— Forward to the user. \* \`4\` \— Forward to the common area. \* \`6\` \— Forward to the auto receptionist. \* \`7\` \— Forward to a call queue. \* \`8\` \— Forward to a shared line group. \* \`9\` \— Forward to an external contact. \* \`10\` - Forward to a phone number. \* \`11\` \— Disconnect. \* \`12\` \— Play a message, then disconnect. \* \`13\` - Forward to message. \* \`14\` - Forward to interactive voice response (IVR). Returned only for the \`call\_handling\` sub-setting. - **`connect_to_operator`** `boolean` — \`Note: This field is invalid and part of incorrect documentation. It is not included in the actual response.\` Whether to allow callers to reach an operator. Returns only when \`call\_not\_answer\_action\` is set to \`1\` (Forward to a voicemail). - **`custom_hours_settings`** `array` — The custom hours settings. It returns only for the \`custom\_hours\` sub-setting. **Items:** - **`from`** `string` — The custom hours start time and \`HH:mm\` format. - **`to`** `string` — The custom hours end time in \`HH:mm\` format. - **`type`** `integer`, possible values: `0, 1, 2` — The type of custom hours: \* \`0\` \— Disabled. \* \`1\` \— 24 hours. \* \`2\` \— Customized hours. - **`weekday`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week: \* \`1\` \— Sunday \* \`2\` \— Monday \* \`3\` \— Tuesday \* \`4\` \— Wednesday \* \`5\` \— Thursday \* \`6\` \— Friday \* \`7\` \— Saturday - **`greeting_prompt`** `object` — The greeting audio prompt Returns only for the \`Call Queue\` or \`Auto Receptionist\` \`call\_handling\` sub-setting. - **`id`** `string` — The greeting audio prompt ID. Options: empty char - default and \`0\` - disable If the audio was removed from the user's audio library, it's marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The greeting audio prompt name. - **`max_call_in_queue`** `integer` — The maximum number of calls in queue. Specify the maximum number of callers to place in the queue. When this number is exceeded, callers will be routed based on the overflow option. Up to 60. Returned only for the \`Call Queue\` \`call\_handling\` sub-setting. - **`max_wait_time`** `integer`, possible values: `10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 120, 180, 240, 300, 600, 900, 1200, 1500, 1800` — The maximum wait time, in seconds, for \`simultaneous\` ring mode or the ring duration for each device for \`sequential\` ring mode: \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` Specify how long a caller waits in the queue. Once the wait time is exceeded, the caller is rerouted based on the overflow option for call queue\`: \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` \* \`120\` \* \`180\` \* \`240\` \* \`300\` \* \`600\` \* \`900\` \* \`1200\` \* \`1500\` \* \`1800\` Returned only for the \`call\_handling\` sub-setting. - **`music_on_hold`** `object` — The music on hold prompt. This field is an option to choose music for inbound callers when they're placed on hold by a call queue member. empty char - default and \`0\` - disable. Returned only for the \`Call Queue\` \`call\_handling\` sub-setting. - **`id`** `string` — The music on hold prompt ID. If the audio was removed from the user's audio library, it's marked with a prefix, (for example, \`removed\_vWby3OZaQlS1nAdmEAqgwA\`). You can use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The music on hold prompt name. - **`receive_call`** `boolean` — This field enables calls to be received during a current call. When enabled, call queue members can receive new incoming calls notification even on the call. Returned only for the \`Call Queue\` \`call\_handling\` sub-setting. - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. This field helps to ensure missed calls do not reach to your personal voicemail. This field returns only for the \`call\_forwarding\` sub-setting. - **`ring_mode`** `string`, possible values: `"simultaneous", "sequential"` — The call handling ring mode: \* \`simultaneous\` \* \`sequential\` Returned only for the \`call\_handling\` sub-setting. - **`routing`** `object` — The extension's forwarding or overflow information when a call is not answered during Business Hours. Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\`. - **`action`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 19` — The action to take when a call is not answered during Business Hours: \* \`1\` \— Forward to a Voicemail. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`2\` \— Forward to the User. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`3\` \— Forward to the Zoom Room. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`4\` \— Forward to the Common Area. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`5\` \— Forward to the Cisco/Polycom Room. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`6\` \— Forward to the Auto Receptionist. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`7\` \— Forward to a Call Queue. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`8\` \— Forward to a Shared Line Group. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`9\` \— Forward to an External Contact. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`10\` - Forward to a Phone Number. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`11\` \— Disconnect. Applicable to \`User\`, \`Call Queue\`, or \`Shared Line Group\`. \* \`12\` \— Play a message, then disconnect. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\` \* \`14\` - Forward to an Interactive Voice Response (IVR). Applicable to \`Auto Receptionist\`. \* \`15\` \— Forward to a Partner Contact Center. Applicable to \`Auto Receptionist\`. \* \`18\` \— Forward to Microsoft Teams Resource Account. Required the license of Zoom Phone for Microsoft Teams. Applicable to \`Call queue\`, \`Auto Receptionist\`, or \`Shared Line group\`. \* \`19\` \— Forward to a Zoom Contact Center. Required Zoom Contact Center license. Applicable to \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. - **`allow_callers_check_voicemail`** `boolean` — Whether to allow the callers to check voicemails over a phone. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` \* \`Shared Line Group\` - **`busy_play_callee_voicemail_greeting`** `boolean` — \`Note: This field is invalid and part of incorrect documentation. It is only included in \`busy\_routing\` section.\` Whether to play the callee's voicemail greeting when the caller reaches the end of the forwarding sequence. It displays when \`busy\_routing\` action is set to \`2\` - Forward to the user, \`4\` - Forward to the common area, \`6\` - Forward to the auto receptionist, \`7\` - Forward to a call queue, \`8\` - Forward to a shared line group, \`9\` - Forward to an external contact, \`10\` - Forward to an external number. - **`connect_to_operator`** `boolean` — Whether to allow callers to reach an operator. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`forward_to`** `object` — The information about the call forwarding target. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`1\` (Forward to voicemail) for unanswered calls, this field is used to display the specific extension to which voicemails are forwarded. This scenario applies to \`Auto Receptionist\` and \`Call Queue\`. \* Secnario 2: when \`action\` in the \`routing\` section is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue), \`8\`(Forward to a Shared Line Group) or \`9\`(forward to an External Contact) for unanswered calls, this field is used to display the extension to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. \* Secnario 3: When \`action\` in the \`routing\` section is set to \`19\` (Forward to a Zoom Contact Center) for unanswered calls, this field is used to display the specific Zoom Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. \* Secnario 4: When \`action\` in the \`routing\` section is set to \`15\` (Forward to a Partner Contact Center) for unanswered calls, this field is used to display the specific Partner Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`. \* Secnario 5: When \`action\` in the \`routing\` section is set to \`10\` (Forward to Phone number/External number) for unanswered calls, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. \* Secnario 6: When \`action\` in the \`routing\` section is set to \`18\` (Forward to Microsoft Teams Resource Account) for unanswered calls, this field is used to display the specific Microsoft Teams Voice App to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`description`** `string` — This field forwards to an external number description. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`10\` (Forward to Phone number/External number) for unanswered calls, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "autoReceptionist", "callQueue", "commonArea"` — The type of extension: \* \`user\` \* \`autoReceptionist\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`autoReceptionist\`, \`device\`, or \`callQueue\`. - **`partner_contact_center_id`** `string` — The ID of the Partner Contact Center to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`15\` (Forward to a Partner Contact Center) for unanswered calls, this field is used to display the specific Partner Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`. - **`pcc_phone_number_display_name`** `string` — The display name of the Partner Contact Center to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`15\` (Forward to a Partner Contact Center) for unanswered calls, this field is used to display the specific Partner Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`. - **`phone_number`** `string` — The extension's phone number or forward to an external number, in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`10\` (Forward to Phone number/External number) for unanswered calls, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`teams_app_id`** `string` — The ID of the Microsoft Teams Voice App to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`18\` (Forward to Microsoft Teams Resource Account) for unanswered calls, this field is used to display the specific Microsoft Teams Voice App to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`teams_voice_app_name`** `string` — The display name of the Microsoft Teams Voice App to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`18\` (Forward to Microsoft Teams Resource Account) for unanswered calls, this field is used to display the specific Microsoft Teams Voice App to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`voicemail_greeting`** `object` — The voicemail greeting prompt. It returns only when the \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail) for the \`Call Queue\` or \`Auto Receptionist\` \`call\_handling\` sub-setting. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`zcc_phone_number`** `string` — The Zoom Contact Center phone number to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`19\` (Forward to a Zoom Contact Center) for unanswered calls, this field is used to display the specific Zoom Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`zcc_phone_number_display_name`** `string` — The display name of the Zoom Contact Center phone number to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`19\` (Forward to a Zoom Contact Center) for unanswered calls, this field is used to display the specific Zoom Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`message_greeting`** `object` — The message greeting prompt. This field is only available in the following scenarios: \* Secnario 1: The the \`action\` in the \`routing\` section is set to \`12\` (Play a message, then disconnect). Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`id`** `string` — The message greeting prompt ID. Options: empty char - default - **`name`** `string` — The message greeting prompt name. - **`operator`** `object` — The the operator to whom the call is being forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "commonArea", "sharedLineGroup", "callQueue"` — The type of extension: \* \`user\` \* \`commonArea\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`commonArea\`, \`sharedLineGroup\`, \`device\`, or \`callQueue\`. - **`overflow_play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue) or \`8\`(Forward to a Shared Line Group). Applicable to the extension as shown below: \* \`User\` - **`play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. Applicable to the extension as shown below: \* \`User\` - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. It helps to ensure that missed calls do not reach to your personal voicemail. It returns for the \`Forward to an external number\` and \`Forward to External Contacts\` options. - **`voicemail_greeting`** `object` — The voicemail greeting audio prompt Returns only for the \`user\` and \`call\_handling\` subsetting. It displays when the \`action\` in the \`routing\` section is set to \`1\` - Forward to a voicemail. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`voicemail_leaving_instruction`** `object` — The voicemail leaving instruction prompt. This field is only available in the following scenarios: \* Secnario 1: The the \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail), and either \`connect\_to\_operator\` or \`allow\_callers\_check\_voicemail\` is set to \`true\`. Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`id`** `string` — The voicemail leaving instruction prompt ID. Options: empty char - default - **`name`** `string` — The voicemail leaving instruction prompt name. - **`type`** `integer`, possible values: `1, 2` — The type of custom hours: \* \`1\` \— 24 hours, 7 days a week. \* \`2\` \— Custom hours. Returns only for the \`custom\_hours\` sub-setting. - **`wrap_up_time`** `integer`, possible values: `10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 120, 180, 240, 300` — The wrap up time in seconds. Specify the duration before the next queue call is routed to a member in call queue: \* \`0\` \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` \* \`120\` \* \`180\` \* \`240\` \* \`300\` Returns only for the \`call\_handling\` sub-setting option. - **`sub_setting_type`** `string`, possible values: `"call_forwarding", "custom_hours", "call_handling"` — The type of sub-setting: \* \`call\_forwarding\` \* \`custom\_hours\` \* \`call\_handling\` - **`closed_hours`** `array` — The information about the closed hours settings. **Items:** - **`settings`** `object` — The closed hours settings. - **`allow_callers_check_voicemail`** `boolean` — \`Note: This field is invalid and part of incorrect documentation. It is not included in the actual response.\` Whether to allow the callers to check voicemails over a phone. It's required only when the \`call\_not\_answer\_action\` setting is set to \`1\` (Forward to a voicemail). - **`busy_routing`** `object` — The extension's forwarding or overflow information when the user is busy on another call during Closed Hours. Applicable to the extension as shown below: \* \`User\`. - **`action`** `integer` — The action to take when the user is busy on another call during Closed Hours: \* \`21\` - Call waiting. \* \`22\` - Play a busy signal. \* \`1\` \— Forward to a voicemail/videomail. \* \`2\` - Forward to the user. \* \`4\` - Forward to the common area. \* \`6\` - Forward to the auto receptionist. \* \`7\` - Forward to a call queue. \* \`8\` - Forward to a shared line group. \* \`9\` - Forward to an external contact. \* \`10\` - Forward to an external number. \* \`12\` \— Play a message, then disconnect. - **`allow_callers_check_voicemail`** `boolean` — Whether to allow the callers to check voicemails over a phone. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` - **`busy_play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue) or \`8\`(Forward to a Shared Line Group). Applicable to the extension as shown below: \* \`User\` - **`connect_to_operator`** `boolean` — Whether to allow callers to reach an operator. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` - **`forward_to`** `object` — The information about the call forwarding target: This field is only available in the following scenarios: \* Secnario 1: when \`action\` in the \`busy\_routing\` section is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue), \`8\`(Forward to a Shared Line Group) or \`9\`(forward to an External Contact) for the user busy on another call, this field is used to display the extension to which the call will be forwarded. This scenario applies to \`User\`. \* Secnario 2: When \`action\` in the \`busy\_routing\` section is set to \`10\` (Forward to Phone number/External number) for the user busy on another call, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`. - **`description`** `string` — This field forwards to an external number description. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`busy\_routing\` section is set to \`10\` (Forward to Phone number/External number) for the user busy on another call, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "autoReceptionist", "callQueue", "commonArea"` — The type of extension: \* \`user\` \* \`autoReceptionist\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`autoReceptionist\`, \`device\`, or \`callQueue\`. - **`phone_number`** `string` — The extension's phone number or forward to an external number, in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`busy\_routing\` section is set to \`10\` (Forward to Phone number/External number) for the user busy on another call, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`. - **`voicemail_greeting`** `object` — The voicemail greeting prompt. It returns only when the \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail) for the \`Call Queue\` or \`Auto Receptionist\` \`call\_handling\` sub-setting. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`message_greeting`** `object` — The message greeting prompt. This field is only available in the following scenarios: \* Secnario 1: The the \`action\` in the \`busy\_routing\` section is set to \`12\` (Play a message, then disconnect). Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`id`** `string` — The message greeting prompt ID. Options: empty char - default - **`name`** `string` — The message greeting prompt name. - **`operator`** `object` — The the operator to whom the call is being forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. Applicable to the extension as shown below: \* \`User\` - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "commonArea", "sharedLineGroup", "callQueue"` — The type of extension: \* \`user\` \* \`commonArea\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`commonArea\`, \`sharedLineGroup\`, \`device\`, or \`callQueue\`. - **`overflow_play_callee_voicemail_greeting`** `boolean` — \`Note: This field is invalid and part of incorrect documentation. It is only included in the \`routing\` section.\` Whether to play the callee's voicemail greeting when the caller reaches the end of the forwarding sequence. It displays when \`call\_not\_answer\_action\` is set to \`2\` - Forward to the user, \`4\` - Forward to the common area, \`6\` - Forward to the auto receptionist, \`7\` - Forward to a call queue, \`8\` - Forward to a shared line group, \`9\` - Forward to an external contact, \`10\` - Forward to an external number. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. Applicable to the extension as shown below: \* \`User\` - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. This field helps to ensure that missed calls do not reach to your personal voicemail. Returned for the \`Forward to an external number\` and \`Forward to External Contacts\` options. - **`voicemail_greeting`** `object` — The voicemail greeting audio prompt Returns only for the \`user\` and \`call\_handling\` subsetting options. It displays when the \`action\` in the \`busy\_routing\` section is set to \`1\` - Forward to a voicemail. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`voicemail_leaving_instruction`** `object` — The voicemail leaving instruction prompt. This field is only available in the following scenarios: \* Secnario 1: The the \`action\` in the \`busy\_routing\` section is set to \`1\` (Forward to a voicemail), and either \`connect\_to\_operator\` or \`allow\_callers\_check\_voicemail\` is set to \`true\`. Applicable to the extension as shown below: \* \`User\` - **`id`** `string` — The voicemail leaving instruction prompt ID. Options: empty char - default - **`name`** `string` — The voicemail leaving instruction prompt name. - **`call_forwarding_settings`** `array` — The call forwarding settings. It returns only for the \`call\_forwarding\` sub-setting options. **Items:** - **`description`** `string` — The external phone number description. - **`enable`** `boolean` — Whether to receive a call. - **`external_contact`** `object` - **`email`** `string` — The external contact's email address. - **`external_contact_id`** `string` — The external contact's ID. - **`name`** `string` — The external contact's username or extension display name. - **`phone_numbers`** `array` — The external contact's phone numbers. **Items:** `string` - **`id`** `string` — The call forwarding ID. - **`phone_number`** `string` — The external phone number, in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. - **`call_not_answer_action`** `integer`, possible values: `1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14` — \`Note: This field is invalid and part of incorrect documentation. It is not included in the actual response.\` The action to take when a call is not answered: \* \`1\` \— Forward to a voicemail. \* \`2\` \— Forward to the user. \* \`4\` \— Forward to the common area. \* \`6\` \— Forward to the auto receptionist. \* \`7\` \— Forward to a call queue. \* \`8\` \— Forward to a shared line group. \* \`9\` \— Forward to an external contact. \* \`10\` - Forward to a phone number. \* \`11\` \— Disconnect. \* \`12\` \— Play a message, then disconnect. \* \`13\` - Forward to message. \* \`14\` - Forward to interactive voice response (IVR). Returns only for the \`call\_handling\` sub-setting option. - **`connect_to_operator`** `boolean` — \`Note: This field is invalid and part of incorrect documentation. It is not included in the actual response.\` Whether to allow callers to reach an operator. It returns only when the \`call\_not\_answer\_action\` setting is set to \`1\` (Forward to a voicemail). - **`max_wait_time`** `integer`, possible values: `10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — The maximum wait time, in seconds, for \`simultaneous\` ring mode or the ring duration for each device for \`sequential\` ring mode: \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` Returns only for the \`call\_handling\` sub-setting option. - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. It helps to ensure that missed calls do not reach to your personal voicemail. It returns only for the \`call\_forwarding\` sub-setting option. - **`ring_mode`** `string`, possible values: `"simultaneous", "sequential"` — The call handling's ring mode setting: \* \`simultaneous\` \* \`sequential\` Returns only for the \`call\_handling\` sub-setting option. - **`routing`** `object` — The extension's forwarding or overflow information when a call is not answered during Closed Hours. Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\`. - **`action`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 19` — The action to take when a call is not answered during Closed Hours: \* \`1\` \— Forward to a Voicemail. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`2\` \— Forward to the User. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`3\` \— Forward to the Zoom Room. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`4\` \— Forward to the Common Area. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`5\` \— Forward to the Cisco/Polycom Room. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`6\` \— Forward to the Auto Receptionist. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`7\` \— Forward to a Call Queue. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`8\` \— Forward to a Shared Line Group. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`9\` \— Forward to an External Contact. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`10\` - Forward to a Phone Number. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`11\` \— Disconnect. Applicable to \`User\`, \`Call Queue\`, or \`Shared Line Group\`. \* \`12\` \— Play a message, then disconnect. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\` \* \`14\` - Forward to an Interactive Voice Response (IVR). Applicable to \`Auto Receptionist\`. \* \`15\` \— Forward to a Partner Contact Center. Applicable to \`Auto Receptionist\`. \* \`18\` \— Forward to Microsoft Teams Resource Account. Required the license of Zoom Phone for Microsoft Teams. Applicable to \`Call queue\`, \`Auto Receptionist\`, or \`Shared Line group\`. \* \`19\` \— Forward to a Zoom Contact Center. Required Zoom Contact Center license. Applicable to \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. - **`allow_callers_check_voicemail`** `boolean` — Whether to allow the callers to check voicemails over a phone. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` \* \`Shared Line Group\` - **`busy_play_callee_voicemail_greeting`** `boolean` — \`Note: This field is invalid and part of incorrect documentation. It is only included in the \`busy\_routing\` section.\` Whether to play callee's voicemail greeting when caller reaches end of forwarding sequence. It displays when \`busy\_routing\` action is set to \`2\` - Forward to the user, \`4\` - Forward to the common area, \`6\` - Forward to the auto receptionist, \`7\` - Forward to a call queue, \`8\` - Forward to a shared line group, \`9\` - Forward to an external contact, \`10\` - Forward to an external number. - **`connect_to_operator`** `boolean` — Whether to allow callers to reach an operator. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`forward_to`** `object` — The information about the call forwarding target: This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`1\` (Forward to voicemail) for unanswered calls, this field is used to display the specific extension to which voicemails are forwarded. This scenario applies to \`Auto Receptionist\` and \`Call Queue\`. \* Secnario 2: when \`action\` in the \`routing\` section is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue), \`8\`(Forward to a Shared Line Group) or \`9\`(forward to an External Contact) for unanswered calls, this field is used to display the extension to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. \* Secnario 3: When \`action\` in the \`routing\` section is set to \`19\` (Forward to a Zoom Contact Center) for unanswered calls, this field is used to display the specific Zoom Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. \* Secnario 4: When \`action\` in the \`routing\` section is set to \`15\` (Forward to a Partner Contact Center) for unanswered calls, this field is used to display the specific Partner Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`. \* Secnario 5: When \`action\` in the \`routing\` section is set to \`10\` (Forward to Phone number/External number) for unanswered calls, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. \* Secnario 6: When \`action\` in the \`routing\` section is set to \`18\` (Forward to Microsoft Teams Resource Account) for unanswered calls, this field is used to display the specific Microsoft Teams Voice App to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`description`** `string` — This field forwards to an external number description. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`10\` (Forward to Phone number/External number) for unanswered calls, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "autoReceptionist", "callQueue", "commonArea"` — The type of extension: \* \`user\` \* \`autoReceptionist\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`autoReceptionist\`, \`device\`, or \`callQueue\`. - **`partner_contact_center_id`** `string` — The ID of the Partner Contact Center to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`15\` (Forward to a Partner Contact Center) for unanswered calls, this field is used to display the specific Partner Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`. - **`pcc_phone_number_display_name`** `string` — The display name of the Partner Contact Center to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`15\` (Forward to a Partner Contact Center) for unanswered calls, this field is used to display the specific Partner Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`. - **`phone_number`** `string` — The extension's phone number or forward to an external number, in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`10\` (Forward to Phone number/External number) for unanswered calls, this field is used to display the specific Phone number/External number to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`teams_app_id`** `string` — The ID of the Microsoft Teams Voice App to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`18\` (Forward to Microsoft Teams Resource Account) for unanswered calls, this field is used to display the specific Microsoft Teams Voice App to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`teams_voice_app_name`** `string` — The display name of the Microsoft Teams Voice App to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`18\` (Forward to Microsoft Teams Resource Account) for unanswered calls, this field is used to display the specific Microsoft Teams Voice App to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`voicemail_greeting`** `object` — The voicemail greeting prompt. It returns only when the \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail) for the \`Call Queue\` or \`Auto Receptionist\` \`call\_handling\` sub-setting. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`zcc_phone_number`** `string` — The Zoom Contact Center phone number to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`19\` (Forward to a Zoom Contact Center) for unanswered calls, this field is used to display the specific Zoom Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`zcc_phone_number_display_name`** `string` — The display name of the Zoom Contact Center phone number to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: When \`action\` in the \`routing\` section is set to \`19\` (Forward to a Zoom Contact Center) for unanswered calls, this field is used to display the specific Zoom Contact Center to which the call will be forwarded. This scenario applies to \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\`. - **`message_greeting`** `object` — The message greeting prompt. This field is only available in the following scenarios: \* Secnario 1: The the \`action\` in the \`routing\` section is set to \`12\` (Play a message, then disconnect). Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`id`** `string` — The message greeting prompt ID. Options: empty char - default - **`name`** `string` — The message greeting prompt name. - **`operator`** `object` — The the operator to whom the call is being forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`display_name`** `string` — The extension name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "commonArea", "sharedLineGroup", "callQueue"` — The type of extension: \* \`user\` \* \`commonArea\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`commonArea\`, \`sharedLineGroup\`, \`device\`, or \`callQueue\`. - **`overflow_play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue) or \`8\`(Forward to a Shared Line Group). Applicable to the extension as shown below: \* \`User\` - **`play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. Applicable to the extension as shown below: \* \`User\` - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. This field helps to ensure that missed calls do not reach to your personal voicemail. It returns for the \`Forward to an external number\` and \`Forward to External Contacts\` options. - **`voicemail_greeting`** `object` — The voicemail greeting audio prompt Returns only for the \`user\` and \`call\_handling\` subsetting options. It displays when the \`action\` in the \`routing\` section is set to \`1\` - Forward to a voicemail. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`voicemail_leaving_instruction`** `object` — The voicemail leaving instruction prompt. This field is only available in the following scenarios: \* Secnario 1: The the \`action\` in the \`routing\` section is set to \`1\` (Forward to a voicemail), and either \`connect\_to\_operator\` or \`allow\_callers\_check\_voicemail\` is set to \`true\`. Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`id`** `string` — The voicemail leaving instruction prompt ID. Options: empty char - default - **`name`** `string` — The voicemail leaving instruction prompt name. - **`sub_setting_type`** `string`, possible values: `"call_forwarding", "call_handling"` — The type of sub-setting: \* \`call\_forwarding\` \* \`call\_handling\` - **`holiday_hours`** `array` — The information about the holiday hours settings. **Items:** - **`details`** `array` — The information about the holiday call handling. **Items:** - **`settings`** `object` — The sub-setting information. - **`allow_callers_check_voicemail`** `boolean` — Whether to allow the callers to check voicemails over a phone. It's required only when the \`call\_not\_answer\_action\` setting is set to \`1\` (Forward to a voicemail). - **`call_forwarding_settings`** `array` — The call forwarding settings. It returns only for the \`call\_forwarding\` sub-setting option. **Items:** - **`description`** `string` — The external phone number's description. - **`enable`** `boolean` — Whether to receive a call. - **`external_contact`** `object` - **`email`** `string` — The external contact's email address. - **`external_contact_id`** `string` — The external contact's ID. - **`name`** `string` — The external contact's username or extension display name. - **`phone_numbers`** `array` — The external contact's phone numbers. **Items:** `string` - **`id`** `string` — The call forwarding's ID. - **`phone_number`** `string` — The external phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. - **`call_not_answer_action`** `integer`, possible values: `1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14` — The action to take when a call is not answered: \* \`1\` \— Forward to a voicemail. \* \`2\` \— Forward to the user. \* \`4\` \— Forward to the common area. \* \`6\` \— Forward to the auto receptionist. \* \`7\` \— Forward to a call queue. \* \`8\` \— Forward to a shared line group. \* \`9\` \— Forward to an external contact. \* \`10\` - Forward to a phone number. \* \`11\` \— Disconnect. \* \`12\` \— Play a message, then disconnect. \* \`13\` - Forward to message. \* \`14\` - Forward to interactive voice response (IVR). Returned only for the \`call\_handling\` sub-setting. - **`connect_to_operator`** `boolean` — Whether to allow callers to reach an operator. It returns only when the \`call\_not\_answer\_action\` setting is set to \`1\` (Forward to a voicemail). - **`from`** `string`, format: `date-time` — The holiday start date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. It returns only for the \`holiday\` sub-setting. - **`max_wait_time`** `integer`, possible values: `10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — The maximum wait time, in seconds, for \`simultaneous\` ring mode or the ring duration for each device for \`sequential\` ring mode: \* \`10\` \* \`15\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` Returned only for the \`call\_handling\` sub-setting. - **`name`** `string` — The holiday name. It returns only for the \`holiday\` sub-setting. - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. It returns only for the \`call\_forwarding\` sub-setting. - **`ring_mode`** `string`, possible values: `"simultaneous", "sequential"` — The call handling's ring mode setting: \* \`simultaneous\` \* \`sequential\` Returned only for the \`call\_handling\` sub-setting. - **`routing`** `object` — The extension's forwarding or overflow information. It returns the response when \`call\_not\_answer\_action\` or \`busy\_on\_another\_call\_action\` is set to \`1\` (Forward to a voicemail), \`2\` (Forward to the user), \`4\` (Forward to the common area), \`6\` (Forward to the auto receptionist), \`7\` (Forward to a call queue), \`8\` (Forward to a shared line group), \`9\` (Forward to an external contact), or \`10\` (Forward to an external number). - **`action`** `integer` — The extension's forwarding or overflow information. For \`call\_not\_answered\`: \* \`1\` \— Forward to a voicemail/videomail. \* \`2\` - Forward to the user. \* \`4\` - Forward to the common area. \* \`6\` - Forward to the auto receptionist. \* \`7\` - Forward to a call queue. \* \`8\` - Forward to a shared line group. \* \`9\` - Forward to an external contact. \* \`10\` - Forward to an external number. \* \`11\` \— Disconnect. \* \`12\` \— Play a message, then disconnect. For \`busy\_on\_another\_call\_action\`: \* \`21\` - Call waiting. \* \`22\` - Play a busy signal. \* \`1\` \— Forward to a voicemail/videomail. \* \`2\` - Forward to the user. \* \`4\` - Forward to the common area. \* \`6\` - Forward to the auto receptionist. \* \`7\` - Forward to a call queue. \* \`8\` - Forward to a shared line group. \* \`9\` - Forward to an external contact. \* \`10\` - Forward to an external number. \* \`12\` \— Play a message, then disconnect. - **`allow_callers_check_voicemail`** `boolean` — Whether to allow the callers to check voicemails over a phone. It returns only for the \`user\` and \`call\_handling\` subsetting. It displays when the \`call\_not\_answer\_action\` setting or \`busy\_on\_another\_call\_action\` setting is set to \`1\` (Forward to a voicemail). - **`busy_play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when caller reaches end of forwarding sequence. It displays when \`busy\_routing\` action is set to \`2\` - Forward to the user, \`4\` - Forward to the common area, \`6\` - Forward to the auto receptionist, \`7\` - Forward to a call queue, \`8\` - Forward to a shared line group, \`9\` - Forward to an external contact, \`10\` - Forward to an external number. - **`connect_to_operator`** `boolean` — Whether to allow callers to reach an operator. It returns only for the \`user\` and \`call\_handling\` subsetting. It displays when the \`call\_not\_answer\_action\` setting or \`busy\_on\_another\_call\_action\` setting is set to \`1\` (Forward to a voicemail). - **`forward_to`** `object` — The extension's forwarding information. It returns the response when \`call\_not\_answer\_action\` or \`busy\_on\_another\_call\_action\` is set to \`2\` (Forward to the user), \`4\` (Forward to the common area), \`6\` (Forward to the auto receptionist), \`7\` (Forward to a call queue), \`8\` (Forward to a shared line group), \`9\` (Forward to an external contact), or \`10\` (Forward to an external number). - **`description`** `string` — This field forwards to an external number description. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "autoReceptionist", "callQueue", "commonArea"` — The type of extension: \* \`user\` \* \`autoReceptionist\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`autoReceptionist\`, \`device\`, or \`callQueue\`. - **`phone_number`** `string` — The extension's phone number or forward to an external number, in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. - **`voicemail_greeting`** `object` — The voicemail greeting prompt. It returns only when \`call\_not\_answer\_action\` is set to \`1\` (Forward to a voicemail) for the \`Call Queue\` or \`Auto Receptionist\` \`call\_handling\` sub-setting. - **`operator`** `object` — This field allows callers to reach an operator. Its a response returned when the \`call\_not\_answer\_action\` or \`busy\_on\_another\_call\_action\` setting is set to \`1\` (Forward to a voicemail) and \`connect\_to\_operator\` setting is set to \`true\`. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "commonArea", "sharedLineGroup", "callQueue"` — The type of extension: \* \`user\` \* \`commonArea\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension for \`user\`, \`commonArea\`, \`sharedLineGroup\`, \`device\`, or \`callQueue\`. - **`overflow_play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when caller reaches end of forwarding sequence. It displays when \`call\_not\_answer\_action\` is set to \`2\` - Forward to the user, \`4\` - Forward to the common area, \`6\` - Forward to the auto receptionist, \`7\` - Forward to a call queue, \`8\` - Forward to a shared line group, \`9\` - Forward to an external contact, \`10\` - Forward to an external number. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when caller reaches end of forwarding sequence. It displays when \`busy\_routing\` action or \`call\_not\_answer\_action\` is set to \`1\` - Forward to a voicemail. - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. This field helps to ensure that missed calls do not reach to your personal voicemail. Returned for the \`Forward to an external number\` and \`Forward to External Contacts\` options. - **`voicemail_greeting`** `object` — The voicemail greeting audio prompt Returned only for the \`user\` and \`call\_handling\` subsetting. It displays when \`busy\_on\_another\_call\_action\` action or \`call\_not\_answer\_action\` set to \`1\` - Forward to a voicemail. - **`id`** `string` — The voicemail greeting audio prompt ID. Options: empty char - default - **`name`** `string` — The voicemail greeting audio prompt name. - **`to`** `string`, format: `date-time` — The holiday end date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. It returns only for the \`holiday\` sub-setting. - **`sub_setting_type`** `string`, possible values: `"call_forwarding", "call_handling", "holiday"` — The type of sub-setting: \* \`call\_forwarding\` \* \`call\_handling\` \* \`holiday\` - **`holiday_id`** `string` — The holiday's ID. **Example:** ```json { "business_hours": [ { "settings": { "allow_members_to_reset": true, "audio_while_connecting": { "id": "qPwtDrrcSua8O0_n0bDRDg", "name": "Default" }, "call_distribution": { "handle_multiple_calls": true, "ring_duration": 10, "ring_mode": "simultaneous", "skip_offline_device_phone_number": true }, "call_forwarding_settings": [ { "description": "testNumber", "enable": true, "id": "qPvrfrrcrf843cdfvbDRDg", "phone_number": "+12058945565", "external_contact": { "name": "Johnson", "email": "example@example.com", "external_contact_id": "OJGi5xOFQPmrJbKg68-iWg", "phone_numbers": [ "+12058945656" ] } } ], "custom_hours_settings": [ { "from": "09:00", "to": "18:00", "type": 1, "weekday": 5 } ], "greeting_prompt": { "id": "0", "name": "test" }, "max_call_in_queue": 5, "max_wait_time": 30, "music_on_hold": { "id": "fdsij3he89qj2-23uie", "name": "Default" }, "receive_call": true, "require_press_1_before_connecting": true, "ring_mode": "simultaneous", "routing": { "action": 1, "forward_to": { "display_name": "api_ta_test", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w", "phone_number": "+18889843519", "description": "forward to phone number +18889843519.", "voicemail_greeting": { "id": "b_fFF75hRgCtzG7Dw7wQgQ", "name": "Voicemail greeting" }, "zcc_phone_number": "12055903036", "zcc_phone_number_display_name": "Display name - (205) 690-3036(American English)", "partner_contact_center_id": "0Qa7FFTfR0CgzpgwUrcxtQ", "pcc_phone_number_display_name": "Test contact center", "teams_app_id": "wgYRHE6ITJOZmV6DBvoyZw", "teams_voice_app_name": "Test Teams app" }, "operator": { "display_name": "user A", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w" }, "connect_to_operator": true, "allow_callers_check_voicemail": true, "voicemail_greeting": { "id": "b_fFF75hRgCtzG7Dw7wQgQ", "name": "Greeting voicemail" }, "voicemail_leaving_instruction": { "id": "LxC4hMD8TJeFpwRcB_QWkA", "name": "Voicemail greeting" }, "message_greeting": { "id": "di936zivT46YBCt3dr15GQ", "name": "Message greeting" }, "require_press_1_before_connecting": true, "overflow_play_callee_voicemail_greeting": true, "play_callee_voicemail_greeting": true }, "busy_routing": { "action": 1, "forward_to": { "display_name": "api_ta_test", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w", "phone_number": "+18889843519", "description": "forward to phone number +18889843519.", "voicemail_greeting": { "id": "b_fFF75hRgCtzG7Dw7wQgQ", "name": "Voicemail greeting" } }, "operator": { "display_name": "user A", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w" }, "connect_to_operator": true, "allow_callers_check_voicemail": true, "voicemail_greeting": { "id": "b_fFF75hRgCtzG7Dw7wQgQ", "name": "Greeting voicemail" }, "voicemail_leaving_instruction": { "id": "LxC4hMD8TJeFpwRcB_QWkA", "name": "Voicemail greeting" }, "message_greeting": { "id": "di936zivT46YBCt3dr15GQ", "name": "Message greeting" }, "require_press_1_before_connecting": true, "play_callee_voicemail_greeting": true, "busy_play_callee_voicemail_greeting": true }, "type": 1, "wrap_up_time": 30 }, "sub_setting_type": "call_forwarding" } ], "closed_hours": [ { "settings": { "call_forwarding_settings": [ { "description": "testDescription", "enable": false, "id": "sd8683_fwh39_F3hfsd", "phone_number": "+12058945583", "external_contact": { "name": "Johnson", "email": "example@example.com", "external_contact_id": "OJGi5xOFQPmrJbKg68-iWg", "phone_numbers": [ "+12058945656" ] } } ], "max_wait_time": 30, "require_press_1_before_connecting": true, "ring_mode": "simultaneous", "routing": { "action": 1, "forward_to": { "display_name": "api_ta_test", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w", "phone_number": "+18889843519", "description": "forward to phone number +18889843519.", "voicemail_greeting": { "id": "b_fFF75hRgCtzG7Dw7wQgQ", "name": "Voicemail greeting" }, "zcc_phone_number": "12055903036", "zcc_phone_number_display_name": "Display name - (205) 690-3036(American English)", "partner_contact_center_id": "0Qa7FFTfR0CgzpgwUrcxtQ", "pcc_phone_number_display_name": "Test contact center", "teams_app_id": "wgYRHE6ITJOZmV6DBvoyZw", "teams_voice_app_name": "Test Teams app" }, "operator": { "display_name": "user A", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w" }, "connect_to_operator": true, "allow_callers_check_voicemail": true, "voicemail_greeting": { "id": "b_fFF75hRgCtzG7Dw7wQgQ", "name": "Greeting voicemail" }, "voicemail_leaving_instruction": { "id": "LxC4hMD8TJeFpwRcB_QWkA", "name": "Voicemail greeting" }, "message_greeting": { "id": "di936zivT46YBCt3dr15GQ", "name": "Message greeting" }, "require_press_1_before_connecting": true, "overflow_play_callee_voicemail_greeting": true, "play_callee_voicemail_greeting": true }, "busy_routing": { "action": 1, "forward_to": { "display_name": "api_ta_test", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w", "phone_number": "+18889843519", "description": "forward to phone number +18889843519.", "voicemail_greeting": { "id": "b_fFF75hRgCtzG7Dw7wQgQ", "name": "Voicemail greeting" } }, "operator": { "display_name": "user A", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w" }, "connect_to_operator": true, "allow_callers_check_voicemail": true, "voicemail_greeting": { "id": "b_fFF75hRgCtzG7Dw7wQgQ", "name": "Greeting voicemail" }, "voicemail_leaving_instruction": { "id": "LxC4hMD8TJeFpwRcB_QWkA", "name": "Voicemail greeting" }, "message_greeting": { "id": "di936zivT46YBCt3dr15GQ", "name": "Message greeting" }, "require_press_1_before_connecting": true, "play_callee_voicemail_greeting": true, "busy_play_callee_voicemail_greeting": true } }, "sub_setting_type": "call_forwarding" } ], "holiday_hours": [ { "details": [ { "settings": { "allow_callers_check_voicemail": true, "call_forwarding_settings": [ { "description": "testDescription", "enable": false, "id": "dash32943QWfjiofejd", "phone_number": "+12058945583", "external_contact": { "name": "Johnson", "email": "example@example.com", "external_contact_id": "OJGi5xOFQPmrJbKg68-iWg", "phone_numbers": [ "+12058945656" ] } } ], "call_not_answer_action": 2, "connect_to_operator": false, "from": "2022-05-01T00:00:00Z", "max_wait_time": 60, "name": "Labor Day", "require_press_1_before_connecting": true, "ring_mode": "sequential", "routing": { "action": 1, "forward_to": { "display_name": "api_ta_test", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w", "phone_number": "+18889843519", "description": "forward to phone number +18889843519.", "voicemail_greeting": {} }, "operator": { "display_name": "user A", "extension_id": "jN9mb38lQTaMgxUq3Nd6ow", "extension_number": 101014, "extension_type": "user", "id": "DYHrdpjrS3uaOf7dPkkg8w" }, "connect_to_operator": true, "allow_callers_check_voicemail": true, "voicemail_greeting": { "id": "0", "name": "test" }, "require_press_1_before_connecting": true, "overflow_play_callee_voicemail_greeting": true, "play_callee_voicemail_greeting": true, "busy_play_callee_voicemail_greeting": true }, "to": "2022-05-05T00:00:00Z" }, "sub_setting_type": "call_forwarding" } ], "holiday_id": "ewhu3i9-f3f3-fiohed" } ] } ``` ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Extension does not exist: {0} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a call handling setting - **Method:** `POST` - **Path:** `/phone/extension/{extensionId}/call_handling/settings/{settingType}` - **Tags:** Call Handling Adds Zoom Phone call handling subsettings for your phone system. Call handling settings allow you to control how your system routes calls during business, closed, or holiday hours. For more information, see our [API guide](https://developers.zoom.us/docs/api/phone/) or Zoom support article [Customizing call handling settings](https://support.zoom.us/hc/en-us/articles/360059966372-Customizing-call-handling-settings). **Applicable to user, call queue, auto receptionist, or shared line group call handling at this time.** **Prerequisites:** - A Pro or a higher account with Zoom Phone enabled **[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:write:call_handling_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json **One of:** - **`settings`** `object` - **`description`** `string` — The external phone number's description. This field is only required for the \`call\_forwarding\` sub-setting. - **`holiday_id`** `string` — The holiday's ID. This field is only required for the \`call\_forwarding\` sub-setting. - **`phone_number`** `string` — The external phone number, in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164). This field is only required for the \`call\_forwarding\` sub-setting. - **`sub_setting_type`** `string`, possible values: `"call_forwarding"` — The type of sub-setting: \* \`call\_forwarding\` * **`settings`** `object` - **`from`** `string`, format: `date-time` — The holiday's start date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. This field is only required for the \`holiday\` sub-setting. - **`name`** `string` — The name of the holiday. This field is only required for the \`holiday\` sub-setting. - **`to`** `string`, format: `date-time` — The holiday's end date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. It's only required for the \`holiday\` sub-setting. * **`sub_setting_type`** `string`, possible values: `"holiday"` — The type of sub-setting: \* \`holiday\` **Example:** ```json { "settings": { "holiday_id": "qPvrfrrcrf843cdfvbDRDg", "description": "testDescription", "phone_number": "+12058945795" }, "sub_setting_type": "call_forwarding" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Codes\*\* \`201\` Created. ###### Content-Type: application/json **One of:** - **`call_forwarding_id`** `string` — The call forwarding's ID. The response only returns this value when you create a \`call\_forwarding\` sub-setting. * **`holiday_id`** `string` — The holiday's ID. The response only returns this value when you create a \`holiday\` sub-setting. **Example:** ```json { "call_forwarding_id": "qPvrfrrcrf843cdfvbDRDg" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
This operation is not supported.\
Request failed because the \*\*Call Forwarding to External Numbers\*\* feature is not enabled. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Extension does not exist: {extensionId}\
Holiday does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a call handling setting - **Method:** `DELETE` - **Path:** `/phone/extension/{extensionId}/call_handling/settings/{settingType}` - **Tags:** Call Handling Deletes a Zoom Phone's call handling settings. Call handling settings let you control how your system routes calls during business, closed, or holiday hours. For more information, read our [API guide](https://marketplace.zoom.us/docs/guides/zoom-phone/call-handling/) or Zoom support article [Customizing call handling settings](https://support.zoom.us/hc/en-us/articles/360059966372-Customizing-call-handling-settings). **Applicable to user, call queue, auto receptionist, or shared line group call handling at this time.** **Prerequisites:** - Pro or a higher account with Zoom Phone enabled **[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:delete:call_handling_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Codes\*\* \`204\` Call handling setting successfully deleted. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Call forwarding does not exist: {callForwardingId}.\
Holiday does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a call handling setting - **Method:** `PATCH` - **Path:** `/phone/extension/{extensionId}/call_handling/settings/{settingType}` - **Tags:** Call Handling Updates a Zoom Phone's call handling setting. Call handling settings allow you to control how your system routes calls during business, closed, or holiday hours. For more information, read our [Call Handling API guide](https://developers.zoom.us/docs/zoom-phone/call-handling/) or Zoom support article [Customizing call handling settings](https://support.zoom.us/hc/en-us/articles/360059966372-Customizing-call-handling-settings). **Applicable to user, call queue, auto receptionist, or shared line group call handling at this time.** **Prerequisites:** - Pro or a higher account with Zoom Phone enabled **[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:call_handling_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json **One of:** - **`settings`** `object` - **`call_forwarding_settings`** `array` — The call forwarding settings. It's only required for the \`call\_forwarding\` sub-setting. **Items:** - **`description`** `string` — The external phone number's description. - **`enable`** `boolean` — Whether to receive a call. - **`external_contact`** `object` - **`external_contact_id`** `string` — The external contact's ID. It updates the external contact's \`call\_forwarding\` sub-setting to where the call will be forwarded. - **`id`** `string` — The call forwarding's ID. - **`phone_number`** `string` — The external phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. - **`require_press_1_before_connecting`** `boolean` — When a call is forwarded to a personal phone number, whether the user must press \"1\" before the call connects. Enable this option to ensure missed calls do not reach to your personal voicemail. It's required for the \`call\_forwarding\` sub-setting. Press 1 is always enabled and is required for \`callQueue\` type extension calls. - **`sub_setting_type`** `string`, possible values: `"call_forwarding"` — The type of sub-setting: \* \`call\_forwarding\` * **`settings`** `object` - **`from`** `string`, format: `date-time` — The holiday's start date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. It's required for the \`holiday\` sub-setting. - **`holiday_id`** `string` — The holiday's ID. It's required for the \`holiday\` sub-setting. - **`name`** `string` — The name of the holiday. It's required for the \`holiday\` sub-setting. - **`to`** `string`, format: `date-time` — The holiday's end date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. It's required for the \`holiday\` sub-setting. * **`sub_setting_type`** `string`, possible values: `"holiday"` — The type of sub-setting: \* \`holiday\` - **`settings`** `object` - **`allow_members_to_reset`** `boolean` — This field allows queue members to set their own business hours. This field allows queue members' business hours to override the default hours of the call queue. Only required for \`Call Queue custom\_hours\` sub-setting. - **`custom_hours_settings`** `array` — The custom hours settings. It's only required for the \`custom\_hours\` sub-setting. **Items:** - **`from`** `string` — The custom hours start time \`HH:mm\` format. - **`to`** `string` — The custom hours end time in \`HH:mm\` format. - **`type`** `integer`, possible values: `0, 1, 2` — The type of custom hours: \* \`0\` \— Disabled. \* \`1\` \— 24 hours. \* \`2\` \— Customized hours. - **`weekday`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week: \* \`1\` \— Sunday \* \`2\` \— Monday \* \`3\` \— Tuesday \* \`4\` \— Wednesday \* \`5\` \— Thursday \* \`6\` \— Friday \* \`7\` \— Saturday - **`type`** `integer`, possible values: `1, 2` — The type of custom hours: \* \`1\` \— 24 hours, 7 days a week. \* \`2\` \— Custom hours. This is only required for the \`custom\_hours\` sub-setting. - **`sub_setting_type`** `string`, possible values: `"custom_hours"` — The type of sub-setting: \* \`custom\_hours\` * **`settings`** `object` - **`allow_callers_check_voicemail`** `boolean` — Whether to allow the callers to check voicemails. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`1\` (Forward to a voicemail). \* Secnario 2: The \`busy\_on\_another\_call\_action\` is set to \`1\` (Forward to a voicemail).(Only applicable to the \`User\`) Applicable to the extension as shown below: \* \`User\` \* \`Shared Line Group\` - **`allow_members_to_reset`** `boolean` — This field allows queue members to set their own business hours. This field allows queue members' business Hours to override the default hours of the call queue. Only required for \`Call Queue custom\_hours\` sub-setting. - **`audio_while_connecting_id`** `string` — The audio while connecting the prompt ID. This option can select the audio played for the inbound callers when they are waiting to be routed to the next available call queue member. Options: \* empty char - default \* \`ring\_tone\` - "Ring Tone" option \* \`0\` - disable This is only required for the \`Call Queue\` \`call\_handling\` sub-setting. - **`busy_description`** `string` — This field forwards to an external number description (optional). It sets when \`busy\_on\_another\_call\_action\` action is set to \`10\` - Forward to an external number. - **`busy_forward_to_extension_id`** `string` — The forwarding extension ID that's required only when busy\_on\_another\_call\_action setting is set to: 2 - Forward to the user. 4 - Forward to the common area. 6 - Forward to the auto receptionist. 7 - Forward to a call queue. 8 - Forward to a shared line group. or 9 - forward to an external contact. - **`busy_on_another_call_action`** `integer`, possible values: `1, 2, 4, 6, 7, 8, 9, 10, 12, 21, 22` — The action to take when the user is busy on another call: \* \`1\` \— Forward to a voicemail. \* \`2\` \— Forward to the user. \* \`4\` \— Forward to the common area. \* \`6\` \— Forward to the auto receptionist. \* \`7\` \— Forward to a call queue. \* \`8\` \— Forward to a shared line group. \* \`9\` \— Forward to an external contact. \* \`10\` - Forward to a phone number. \* \`12\` \— Play a message, then disconnect. \* \`21\` \— Call waiting. \* \`22\` \— Play a busy signal. Only required for the \`call\_handling\` sub-setting and only the \`User\` supports it. - **`busy_phone_number`** `string` — The extension's phone number or forward to an external number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. It sets when \`busy\_on\_another\_call\_action\` action is set to \`10\` - Forward to an external number. - **`busy_play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. It displays when \`busy\_on\_another\_call\_action\` action is set to \`2\` - Forward to the user, \`4\` - Forward to the common area, \`6\` - Forward to the auto receptionist, \`7\` - Forward to a call queue, \`8\` - Forward to a shared line group, \`9\` - Forward to an external contact, \`10\` - Forward to an external number. - **`busy_require_press_1_before_connecting`** `boolean` — When one is busy on another call, the receiver needs to press 1 before connecting the call for it to be forwarded to an external contact or a number. This option ensures that forwarded calls won't reach the voicemail box for the external contact or a number. - **`call_distribution`** `object` — This option distributes incoming calls. If \`Sequential\` or \`Rotating\` is selected, calls will ring for a specific time before trying the next available queue member. This is only required for the \`call\_handling\` sub-setting. - **`handle_multiple_calls`** `boolean` — The maximum number of calls that can be handled simultaneously is less than half of the total amount of available call queue members. Note that the first incoming call may not be answered first. Required except for \`simultaneous\` ring mode. - **`ring_duration`** `integer`, possible values: `10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — The ringing duration for each member: \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` Required except for \`simultaneous\` ring mode. - **`ring_mode`** `string`, possible values: `"simultaneous", "sequential", "rotating", "longest_idle"` — The call distribution ring mode: \* \`simultaneous\` \* \`sequential\` \* \`rotating\` \* \`longest\_idle\`. - **`skip_offline_device_phone_number`** `boolean` — 1. Devices with Zoom app or client not launched and mobile phone with screen locked will be skipped. 2. Phone numbers added to user's call handling settings will be skipped. Required except for \`simultaneous\` ring mode. - **`call_not_answer_action`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 19` — The action to take when a call is not answered: \* \`1\` \— Forward to a Voicemail. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`2\` \— Forward to the User. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`3\` \— Forward to the Zoom Room. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`4\` \— Forward to the Common Area. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`5\` \— Forward to the Cisco/Polycom Room. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`6\` \— Forward to the Auto Receptionist. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`7\` \— Forward to a Call Queue. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`8\` \— Forward to a Shared Line Group. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`9\` \— Forward to an External Contact. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`10\` - Forward to a Phone Number. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. \* \`11\` \— Disconnect. Applicable to \`User\`, \`Call Queue\`, or \`Shared Line Group\`. \* \`12\` \— Play a message, then disconnect. Applicable to \`User\`, \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\` \* \`14\` - Forward to an Interactive Voice Response (IVR). Applicable to \`Auto Receptionist\`. \* \`15\` \— Forward to a Partner Contact Center. Applicable to \`Auto Receptionist\`. \* \`18\` \— Forward to Microsoft Teams Resource Account. Required the license of Zoom Phone for Microsoft Teams. Applicable to \`Call queue\`, \`Auto Receptionist\`, or \`Shared Line group\`. \* \`19\` \— Forward to a Zoom Contact Center. Required Zoom Contact Center license. Applicable to \`Call Queue\`, \`Auto Receptionist\`, or \`Shared Line Group\`. This is only required for the \`call\_handling\` sub-setting. - **`connect_to_operator`** `boolean` — Whether to allow callers to reach an operator. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`1\` (Forward to a voicemail). \* Secnario 2: The \`busy\_on\_another\_call\_action\` is set to \`1\` (Forward to a voicemail). Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`description`** `string` — This field describes the phone number to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`10\` (Forward to a Phone Number). Applicable to the extension as shown below: \* \`User\` - **`forward_to_extension_id`** `string` — The forwarding extension ID: This field is only available in the following scenarios: \* Secnario 1: When \`call\_not\_answer\_action\` is set to \`1\` (Forward to voicemail) for unanswered calls, this field is used to set the specific extension to which voicemails are forwarded. This scenario applies to \`Auto Receptionist\` and \`Call Queue\`. \* Secnario 2: when \`call\_not\_answer\_action\` setting is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue), \`8\`(Forward to a Shared Line Group) or \`9\`(forward to an External Contact) for unanswered calls, this field specifies the extension to which the call will be forwarded. This scenario applies to \`User\`, \`Auto Receptionist\`, \`Call Queue\` and \`Shared Line Group\` - **`forward_to_partner_contact_center_id`** `string` — The Partner Contact Center Setting ID to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`15\` (Forward to a Partner Contact Center). Applicable to the extension as shown below: \* \`Auto Receptionist\` - **`forward_to_teams_id`** `string` — The Microsoft Teams Voice App ID to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`18\` (Forward to Microsoft Teams Resource Account). Applicable to the extension as shown below: \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`forward_to_zcc_phone_number`** `string` — The Zoom Contact Center phone number, in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format, to which the call is forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`19\` (Forward to a Zoom Contact Center). Applicable to the extension as shown below: \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`greeting_prompt_id`** `string` — The greeting audio prompt ID. Options: empty char - default and \`0\` - disable This is only required for the \`Call Queue\` or \`Auto Receptionist\` \`call\_handling\` sub-setting. - **`max_call_in_queue`** `integer` — The maximum number of calls in queue. Specify the maximum number of callers to place in the queue. When this number is exceeded, callers will be routed based on the overflow option. Up to 60. It's required for the \`Call Queue\` \`call\_handling\` sub-setting. - **`max_wait_time`** `integer`, possible values: `10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 120, 180, 240, 300, 600, 900, 1200, 1500, 1800` — The maximum wait time, in seconds, for \`simultaneous\` ring mode or the ring duration for each device for \`sequential\` ring mode: \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` Specify how long a caller will wait in the queue. Once the wait time is exceeded, the caller will be rerouted based on the overflow option for \`Call Queue\`: \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` \* \`120\` \* \`180\` \* \`240\` \* \`300\` \* \`600\` \* \`900\` \* \`1200\` \* \`1500\` \* \`1800\` This is only required for the \`call\_handling\` sub-setting. - **`message_greeting_id`** `string` — The message greeting prompt ID. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`12\` (Play a message, then disconnect). Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`music_on_hold_id`** `string` — The music on hold prompt ID. This field is an option to choose music for inbound callers when they're placed on hold by a call queue member. Options: empty char - default and \`0\` - disable Only required for the \`Call Queue\` \`call\_handling\` sub-setting. - **`operator_extension_id`** `string` — The extension ID of the operator to whom the call is being forwarded. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. \* Secnario 2: The \`busy\_on\_another\_call\_action\` is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`.(Only applicable to the \`User\`) Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`overflow_play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of the forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` setting is set to: \`2\`(Forward to the User), \`3\`(Forward to the Zoom Room), \`4\`(Forward to the Common Area), \`5\`(Forward to the Cisco/Polycom Room), \`6\`(Forward to the Auto Receptionist), \`7\`(Forward to a Call Queue) or \`8\`(Forward to a Shared Line Group). Applicable to the extension as shown below: \* \`User\` - **`phone_number`** `string` — The extension's phone number or forward to an external number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164) format. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`10\` (Forward to a Phone Number). Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`play_callee_voicemail_greeting`** `boolean` — Whether to play callee's voicemail greeting when the caller reaches the end of forwarding sequence. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`. \* Secnario 2: The \`busy\_on\_another\_call\_action\` is set to \`1\` (Forward to a voicemail) and the \`connect\_to\_operator\` is \`true\`.(Only applicable to the \`User\`) Applicable to the extension as shown below: \* \`User\` - **`receive_call`** `boolean` — This field receives calls while on a call. When enabled, call queue members can receive new incoming calls notification even on the call. It's required for the \`Call Queue call handling\` sub-setting. - **`ring_mode`** `string`, possible values: `"simultaneous", "sequential"` — The call handling ring mode: \* \`simultaneous\` \* \`sequential\`. For user business hours, \`ring\_mode\` needs to be set with \`max\_wait\_time\`. - **`un_answered_require_press_1_before_connecting`** `boolean` — When a call is unanswered, press 1 before connecting the call to forward to an external contact or a number. This option ensures that forwarded calls won't reach the voicemail box for the external contact or a number. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`9\`(Forward to an External Contact) or \`10\`(Forward to a Phone Number). Applicable to the extension as shown below: \* \`User\` - **`voicemail_greeting_id`** `string` — The voicemail greeting prompt ID. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`1\` (Forward to a voicemail). \* Secnario 2: The \`busy\_on\_another\_call\_action\` is set to \`1\` (Forward to a voicemail).(Only applicable to the \`User\`) Applicable to the extension as shown below: \* \`User\` \* \`Auto Receptionist\` \* \`Call Queue\` \* \`Shared Line Group\` - **`voicemail_leaving_instruction_id`** `string` — The voicemail leaving instruction prompt ID. This field is only available in the following scenarios: \* Secnario 1: The \`call\_not\_answer\_action\` is set to \`1\` (Forward to a voicemail), and either \`connect\_to\_operator\` or \`allow\_callers\_check\_voicemail\` is set to \`true\`. \* Secnario 2: The \`busy\_on\_another\_call\_action\` is set to \`1\` (Forward to a voicemail).(Only applicable to the \`User\`), and either \`connect\_to\_operator\` or \`allow\_callers\_check\_voicemail\` is set to \`true\`. Applicable to the extension as shown below: \* \`User\` \* \`Call Queue\` \* \`Shared Line Group\` - **`wrap_up_time`** `integer`, possible values: `10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 120, 180, 240, 300` — The wrap up time in seconds. Specify the duration before the next queue call is routed to a member in call queue: \* \`0\` \* \`10\` \* \`15\` \* \`20\` \* \`25\` \* \`30\` \* \`35\` \* \`40\` \* \`45\` \* \`50\` \* \`55\` \* \`60\` \* \`120\` \* \`180\` \* \`240\` \* \`300\` This is only required for the \`call\_handling\` sub-setting. * **`sub_setting_type`** `string`, possible values: `"call_handling"` — The type of sub-setting: \* \`call\_handling\` **Example:** ```json { "settings": { "call_forwarding_settings": [ { "description": "testDescription", "enable": true, "id": "qPvrfrrcrf843cdfvbDRDg", "phone_number": "+12058945527", "external_contact": { "external_contact_id": "OJGi5xOFQPmrJbKg68-iWg" } } ], "require_press_1_before_connecting": true }, "sub_setting_type": "call_forwarding" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Codes\*\* \`204\` Call handling settings successfully updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Since 'Allow callers to reach an operator' and 'Allow callers to check voicemail' are disabled, you can't update the voicemail leaving instruction. \
\*\*Error Code:\*\* \`400\` \
The forwarding of busy on another call and the forwarding of unanswered calls both are not 'Forward to voicemail/videomail', so you can't update the voicemail leaving instruction. \
\*\*Error Code:\*\* \`400\` \
Invalid customer hours from/to time for weekday: {weekday}. \
\*\*Error Code:\*\* \`400\` \
Invalid holiday from/to time. \
\*\*Error Code:\*\* \`400\` \
Failed to overflow to external contact since user overflow policy is restricted. \
\*\*Error Code:\*\* \`400\` \
Failed to overflow to external number since user overflow policy is restricted. \
\*\*Error Code:\*\* \`400\` \
Failed to overflow to internal extension without inbound Automatic Call Recording since user overflow policy is restricted. \
\*\*Error Code:\*\* \`400\` \
Failed to overflow to extension since user overflow policy is disabled. \
\*\*Error Code:\*\* \`400\` \
Extension's voicemail policy is disabled. \
\*\*Error Code:\*\* \`400\` \
You cannot assign yourself as the operator. \
\*\*Error Code:\*\* \`400\` \
The user business hours ring mode and max wait time need to be set together. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Call forwarding does not exist: {callForwardingId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call element - **Method:** `GET` - **Path:** `/phone/call_element/{callElementId}` - **Tags:** Call Logs Returns the call element for a given call element ID. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone_call_log:read`,`phone_call_log:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:call_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status code:\*\* \`200\` Call element returned. ###### Content-Type: application/json - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_element_id`** `string` — The ID of the call element. - **`call_history_uuid`** `string` — The call history ID of the call. - **`call_id`** `string` — The ID of the phone call. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The callee's extension number. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type: \* \`user\` \* \`call\_queue\` \* \`auto\_receptionist\` \* \`common\_area\` \* \`zoom\_room\` \* \`cisco\_room\` \* \`shared\_line\_group\` \* \`group\_call\_pickup\` \* \`external\_contact\`. - **`callee_name`** `string` — The callee's name. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zra_phone_number"` — The callee's number type. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The caller's extension number . - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type: \* \`user\` \* \`call\_queue\` \* \`auto\_receptionist\` \* \`common\_area\` \* \`zoom\_room\` \* \`cisco\_room\` \* \`shared\_line\_group\` \* \`group\_call\_pickup\` \* \`external\_contact\`. - **`caller_name`** `string` — The caller' name. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zra_phone_number"` — The caller's number type. - **`client_code`** `string` — The client code for the call. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`cost_center`** `string` — The name of the cost center of which the user belongs. - **`department`** `string` — The name of the user's department. - **`device_private_ip`** `string` — The private IP of which the user belongs. - **`device_public_ip`** `string` — The public IP of which the user belongs. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`event`** `string`, possible values: `"incoming", "transfer_from_zoom_contact_center", "shared_line_incoming", "outgoing", "call_me_on", "outgoing_to_zoom_contact_center", "warm_transfer", "forward", "ring_to_member", "overflow", "direct_transfer", "barge", "monitor", "whisper", "listen", "takeover", "conference_barge", "park", "timeout", "park_pick_up", "merge", "shared"` — An event within a call log. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`hold_time`** `integer` — The call hold time in seconds. - **`is_node`** `integer` — This indicates whether it is a node or not. - **`node`** `integer` — Within one segment, a sequential number to indicate the orders of the events that start from 0. - **`operator_ext_id`** `string` — The operator's extension ID. - **`operator_ext_number`** `string` — The operator's extension number. - **`operator_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The operator's extension type. - **`operator_name`** `string` — The operator's name. - **`press_key`** `string` — The key value associated with a press or input event. - **`recording_id`** `string` — The unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"ad-hoc", "automatic"` — The type of call recording. - **`result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The detailed results of an event for a call log. - **`result_reason`** `string`, possible values: `"answered_by_other", "pickup_by_other", "call_out_by_other"` — The cause or outcome of an event in a call log. - **`segment`** `integer` — A sequential number to indicate the orders of events that starts from 0. - **`site_id`** `string` — The name of the site ID of which the user belongs. - **`site_name`** `string` — The site name of which the user belongs. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. - **`voicemail_id`** `string` — The ID of the call voicemail. - **`waiting_time`** `integer` — The call wait time in seconds. **Example:** ```json { "call_element_id": "20211008-fe9c3900-5187-4254-9359-590afbc40bc9", "call_history_uuid": "20211008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_id": "7018317023722949162", "connect_type": "internal", "call_type": "general", "direction": "inbound", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "1", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_email": "test@abc.com", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "1", "client_code": "1234", "department": "web-api1", "cost_center": "cost-center1", "site_id": "BpCTBMRARBefUrprildVqw", "group_id": "California", "site_name": "site name", "start_time": "2021-10-08T16:12:04Z", "answer_time": "2021-10-08T16:12:04Z", "end_time": "2021-10-08T16:12:15Z", "event": "outgoing", "result": "answered", "result_reason": "answered_by_other", "device_private_ip": "", "device_public_ip": "", "operator_ext_number": "3456", "operator_ext_id": "NN9rA4fZSsScB2YiCqw7Ig", "operator_ext_type": "user", "operator_name": "operator name", "press_key": "3", "segment": 0, "node": 0, "is_node": 0, "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "automatic", "hold_time": 20, "waiting_time": 20, "voicemail_id": "6cd2da01bcaa47f58e3250a575c5f2bf", "caller_account_code": "111", "callee_account_code": "222" } ``` ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get account's call history - **Method:** `GET` - **Path:** `/phone/call_history` - **Tags:** Call Logs Returns an account's new edition of [call logs](https://support.zoom.us/hc/en-us/articles/360021114452-Viewing-Call-Logs). **Prerequisites** - A Business or Enterprise account - A Zoom Phone license - Account owner or a [role](https://support.zoom.us/hc/en-us/articles/115001078646-Role-Based-Access-Control) with Zoom Phone management **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_call_log:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_call_logs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Account's call logs returned. ###### Content-Type: application/json - **`call_history`** `array` — The call history. **Items:** - **`answer_time`** `string` — The call answer time in GMT date-time format. - **`call_history_uuid`** `string` — The call history ID of the call. Use this ID to retrieve the call history. - **`call_id`** `string` — The unique identifier of the phone call. One call id might contain multiple call log ID. - **`call_result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The final call result of the call logs. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The callee's extension number. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The callee's name. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The callee's number type. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The caller's extension number. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The caller's name. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The caller's number type. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of the call logs. - **`cost_center`** `string` — The name of the cost center where the user belongs. - **`department`** `string` — The name of the department where the user belongs. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`duration`** `integer` — The duration of the call in seconds. - **`end_time`** `string` — The call end time in GMT date-time format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`group_id`** `string` — The primary group where the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`international`** `boolean`, possible values: `true, false` — A flag to indicate the call is international or not. - **`recording_status`** `string`, possible values: `"recorded", "non_recorded"` — The recording status indicates whether the call has recording or not. Recorded means the call has at least one recording. Non\_recorded means the call does not have any recordings. - **`sbc_id`** `string` — The SBC ID that the call goes through. - **`sbc_name`** `string` — The SBC name that the call goes through. - **`sip_group_id`** `string` — The SIP group ID that the call goes through. - **`sip_group_name`** `string` — The SIP group name that the call goes through. - **`site_id`** `string` — The name of the site ID of which the user belongs. - **`site_name`** `string` — The name of the site name where the user belongs. - **`spam`** `string` — The spam type of the call. - **`start_time`** `string` — The call start time in GMT date-time format. - **`call_logs`** `array` — The call log. **Items:** - **`answer_time`** `string` — The call answer time in GMT date-time format. - **`call_id`** `string` — The unique identifier of the phone call. One call id might contain multiple call log ID. - **`call_result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The final call result of the call logs. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The callee's extension number. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The callee's name. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The callee's number type. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The caller's extension number. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The caller's name. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The caller's number type. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of the call logs. - **`cost_center`** `string` — The name of the cost center where the user belongs. - **`department`** `string` — The name of the department where the user belongs. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`duration`** `integer` — The duration of the call in seconds. - **`end_time`** `string` — The call end time in GMT date-time format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`group_id`** `string` — The primary group where the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`id`** `string` — The ID of the call log summary, get call path with this summary ID. - **`international`** `boolean`, possible values: `true, false` — A flag to indicate the call is international or not. - **`recording_status`** `string`, possible values: `"recorded", "non_recorded"` — The recording status indicates whether the call has recording or not. Recorded means the call has at least one recording. Non\_recorded means the call does not have any recordings. - **`sbc_id`** `string` — The SBC ID that the call goes through. - **`sbc_name`** `string` — The SBC name that the call goes through. - **`sip_group_id`** `string` — The SIP group ID that the call goes through. - **`sip_group_name`** `string` — The SIP group name that the call goes through. - **`site_id`** `string` — The name of the site ID of which the user belongs. - **`site_name`** `string` — The name of the site name where the user belongs. - **`spam`** `string` — The spam type of the call. - **`start_time`** `string` — The call start time in GMT date-time format. - **`from`** `string` — The start time and date of the log. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_count`** `integer` — The total number of pages. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`to`** `string` — The end time and date of the log. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "call_history": [ { "call_history_uuid": "20211008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_id": "7018317023722949162", "direction": "inbound", "international": false, "start_time": "2021-10-08T16:12:04Z", "answer_time": "2021-10-08T16:12:10Z", "end_time": "2021-10-08T16:12:15Z", "duration": 20, "connect_type": "internal", "sbc_id": "20", "sbc_name": "20", "sip_group_id": "20", "sip_group_name": "20", "call_type": "general", "call_result": "answered", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "US", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_name": "Callee name", "callee_email": "test@abc.com", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "US", "department": "web-api1", "cost_center": "cost-center1", "site_id": "BpCTBMRARBefUrprildVqw", "group_id": "California", "site_name": "site name", "spam": "Maybe Spam", "recording_status": "recorded", "caller_account_code": "111", "callee_account_code": "222" } ], "from": "2021-10-01", "to": "2021-10-12", "page_count": 2, "page_size": 30, "total_records": 54, "next_page_token": "AmhfoKtF2Ey4TaPg2iZsAcmetRLs2ZY0Sk2" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call history - **Method:** `GET` - **Path:** `/phone/call_history/{callHistoryUuid}` - **Tags:** Call Logs Returns information about a [call log](https://support.zoom.us/hc/en-us/articles/360021114452-Viewing-and-identifying-logs). **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_call_log:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:call_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 The details of the call history. ###### Content-Type: application/json - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_elements`** `array` — The call elements. **Items:** - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_element_id`** `string` — The ID of the call element. - **`call_id`** `string` — The ID of the phone call. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The extension number of the callee. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The name of the callee. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zra_phone_number"` — The callee's number type. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The extension number of the caller. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The name of the caller. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zra_phone_number"` — The caller's number type. - **`client_code`** `string` — The client code for the call. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`cost_center`** `string` — The name of the cost center of which the user belongs. - **`department`** `string` — The name of the department of which the user belongs. - **`device_private_ip`** `string` — The private IP of which the user belongs. - **`device_public_ip`** `string` — The public IP of which the user belongs - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`event`** `string`, possible values: `"incoming", "transfer_from_zoom_contact_center", "shared_line_incoming", "outgoing", "call_me_on", "outgoing_to_zoom_contact_center", "warm_transfer", "forward", "ring_to_member", "overflow", "direct_transfer", "barge", "monitor", "whisper", "listen", "takeover", "conference_barge", "park", "timeout", "park_pick_up", "merge", "shared"` — An event within a call log. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`hold_time`** `integer` — The call hold time in seconds. - **`is_node`** `integer` — This indicates whether it is a node or not. - **`node`** `integer` — Within one segment, a sequential number to indicate the orders of the events that starts from 0. - **`operator_ext_id`** `string` — The operator extension ID. - **`operator_ext_number`** `string` — The operator extension number. - **`operator_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The operator extension type. - **`operator_name`** `string` — The operator's name. - **`press_key`** `string` — The press key value for event press or input. - **`recording_id`** `string` — The unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"automatic", "ad-hoc"` — The type of call recording. - **`result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The detail result of an event for a call log. - **`result_reason`** `string`, possible values: `"answered_by_other", "pickup_by_other", "call_out_by_other"` — The reason of result of an event for a call log. - **`segment`** `integer` — A sequential number to indicate the orders of events that starts from 0. - **`site_id`** `string` — The name of the site ID of which the user belongs. - **`site_name`** `string` — The name of the site name of which the user belongs. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. - **`voicemail_id`** `string` — The ID of the call voicemail. - **`waiting_time`** `integer` — The call wait time in seconds. - **`call_history_uuid`** `string` — The call history ID of the call. - **`call_id`** `string` — The ID of the phone call. - **`call_path`** `array` — The call segment path. **Items:** - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_id`** `string` — The ID of the phone call. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The extension number of the callee. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The name of the callee. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zra_phone_number"` — The callee's number type. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The extension number of the caller. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The name of the caller. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zra_phone_number"` — The caller's number type. - **`client_code`** `string` — The client code for the call. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`cost_center`** `string` — The name of the cost center of which the user belongs. - **`department`** `string` — The name of the department of which the user belongs. - **`device_private_ip`** `string` — The private IP of which the user belongs. - **`device_public_ip`** `string` — The public IP of which the user belongs - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`event`** `string`, possible values: `"incoming", "transfer_from_zoom_contact_center", "shared_line_incoming", "outgoing", "call_me_on", "outgoing_to_zoom_contact_center", "warm_transfer", "forward", "ring_to_member", "overflow", "direct_transfer", "barge", "monitor", "whisper", "listen", "takeover", "conference_barge", "park", "timeout", "park_pick_up", "merge", "shared"` — An event within a call log. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`hold_time`** `integer` — The call hold time in seconds. - **`id`** `string` — The ID of the call log. - **`is_node`** `integer` - **`node`** `integer` — Within one segment, a sequential number to indicate the orders of the events that starts from 0. - **`operator_ext_id`** `string` — The operator extension ID. - **`operator_ext_number`** `string` — The operator extension number. - **`operator_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The operator extension type. - **`operator_name`** `string` — The operator's name. - **`press_key`** `string` — The press key value for event press or input. - **`recording_id`** `string` — The unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"automatic", "ad-hoc"` — The type of call recording. - **`result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The detail result of an event for a call log. - **`result_reason`** `string`, possible values: `"answered_by_other", "pickup_by_other", "call_out_by_other"` — The reason of result of an event for a call log. - **`segment`** `integer` — A sequential number to indicate the orders of events that starts from 0. - **`site_id`** `string` — The name of the site ID of which the user belongs. - **`site_name`** `string` — The name of the site name of which the user belongs. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. - **`voicemail_id`** `string` — The ID of the call voicemail. - **`waiting_time`** `integer` — The call wait time in seconds. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The extension number of the callee. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The name of the callee. - **`caller_acconut_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The extension number of the caller. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The name of the caller. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`cost_center`** `string` — The name of the cost center of which the user belongs. - **`department`** `string` — The name of the department of which the user belongs. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is an end-to-end encryption or not. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is a hide caller ID or not. - **`id`** `string` — The ID of the call log summary. - **`international`** `boolean`, possible values: `true, false` — A flag to indicate the call is international or not. - **`site_id`** `string` — The name of the site ID of which the user belongs. - **`site_name`** `string` — The name of the site name of which the user belongs. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. **Example:** ```json { "id": "20211008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_history_uuid": "20211008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_id": "7018317023722949162", "connect_type": "internal", "call_type": "general", "direction": "inbound", "international": false, "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_email": "test@abc.com", "caller_ext_type": "user", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_email": "test@abc.com", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_ext_type": "user", "department": "web-api1", "cost_center": "cost-center1", "site_id": "BpCTBMRARBefUrprildVqw", "group_id": "California", "site_name": "site name", "start_time": "2021-10-08T16:12:04Z", "answer_time": "2021-10-08T16:12:04Z", "end_time": "2021-10-08T16:12:15Z", "call_path": [ { "id": "48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_id": "7018317023722949162", "connect_type": "internal", "call_type": "general", "direction": "inbound", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "US", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_email": "test@abc.com", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "US", "client_code": "1234", "department": "web-api1", "cost_center": "cost-center1", "site_id": "BpCTBMRARBefUrprildVqw", "group_id": "California", "site_name": "site name", "start_time": "2021-10-08T16:12:04Z", "answer_time": "2021-10-08T16:12:04Z", "end_time": "2021-10-08T16:12:15Z", "event": "outgoing", "result": "answered", "result_reason": "answered_by_other", "device_private_ip": "", "device_public_ip": "", "operator_ext_number": "3456", "operator_ext_id": "NN9rA4fZSsScB2YiCqw7Ig", "operator_ext_type": "user", "operator_name": "operator name", "press_key": "3", "segment": 0, "node": 0, "is_node": 0, "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "automatic", "hold_time": 20, "waiting_time": 20, "voicemail_id": "6cd2da01bcaa47f58e3250a575c5f2bf" } ], "caller_acconut_code": "111", "callee_account_code": "222", "call_elements": [ { "call_element_id": "48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_id": "7018317023722949162", "connect_type": "internal", "call_type": "general", "direction": "inbound", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "US", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_email": "test@abc.com", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "US", "client_code": "1234", "department": "web-api1", "cost_center": "cost-center1", "site_id": "BpCTBMRARBefUrprildVqw", "group_id": "California", "site_name": "site name", "start_time": "2021-10-08T16:12:04Z", "answer_time": "2021-10-08T16:12:04Z", "end_time": "2021-10-08T16:12:15Z", "event": "outgoing", "result": "answered", "result_reason": "answered_by_other", "device_private_ip": "", "device_public_ip": "", "operator_ext_number": "3456", "operator_ext_id": "NN9rA4fZSsScB2YiCqw7Ig", "operator_ext_type": "user", "operator_name": "operator name", "press_key": "3", "segment": 0, "node": 0, "is_node": 0, "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "automatic", "hold_time": 20, "waiting_time": 20, "voicemail_id": "6cd2da01bcaa47f58e3250a575c5f2bf" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a client code to a call history - **Method:** `PATCH` - **Path:** `/phone/call_history/{callLogId}/client_code` - **Tags:** Call Logs Adds a client code to a [call log](https://support.zoom.us/hc/en-us/articles/360040999352-Assigning-client-codes-to-phone-calls). You can track call logs with a client code. **Prerequisites** - Business or Education account - Zoom Phone license **[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:call_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`client_code` (required)** `string` — The client code (3 to 16 digit number) to mark the call log. **Example:** ```json { "client_code": "The client code (3 to 16 digit number) to mark the call log." } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\*Successfully added the client code to the call log. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`301\` \
Invalid client code: {client\_code} \
\*\*Error Code:\*\* \`302\` \
Client code cannot be added to admin call log \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`300\` \
Call history not found: {callLogId} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call history detail ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/call_history_detail/{callHistoryId}` - **Tags:** Call Logs Returns the call history details for a given call log ID [call history](https://support.zoom.us/hc/en-us/articles/360021114452-Viewing-and-identifying-logs). **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone_call_log:read`,`phone_call_log:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:call_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status code:\*\* \`200\` Call history detail returned. ###### Content-Type: application/json - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_id`** `string` — The ID of the phone call. - **`call_path_id`** `string` — The call path ID of the call. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The callee's extension number. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type: \* \`user\` \* \`call\_queue\` \* \`auto\_receptionist\` \* \`common\_area\` \* \`zoom\_room\` \* \`cisco\_room\` \* \`shared\_line\_group\` \* \`group\_call\_pickup\` \* \`external\_contact\`. - **`callee_name`** `string` — The callee's name. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zra_phone_number"` — The callee's number type. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The caller's extension number . - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type: \* \`user\` \* \`call\_queue\` \* \`auto\_receptionist\` \* \`common\_area\` \* \`zoom\_room\` \* \`cisco\_room\` \* \`shared\_line\_group\` \* \`group\_call\_pickup\` \* \`external\_contact\`. - **`caller_name`** `string` — The caller' name. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zra_phone_number"` — The caller's number type. - **`client_code`** `string` — The client code for the call. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`cost_center`** `string` — The name of the cost center of which the user belongs. - **`department`** `string` — The name of the user's department. - **`device_private_ip`** `string` — The private IP of which the user belongs. - **`device_public_ip`** `string` — The public IP of which the user belongs. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`event`** `string`, possible values: `"incoming", "transfer_from_zoom_contact_center", "shared_line_incoming", "outgoing", "call_me_on", "outgoing_to_zoom_contact_center", "warm_transfer", "forward", "ring_to_member", "overflow", "direct_transfer", "barge", "monitor", "whisper", "listen", "takeover", "conference_barge", "park", "timeout", "park_pick_up", "merge", "shared"` — An event within a call log. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`hold_time`** `integer` — The call hold time in seconds. - **`id`** `string` — The ID of the call history. - **`is_node`** `integer` - **`node`** `integer` — Within one segment, a sequential number to indicate the orders of the events that start from 0. - **`operator_ext_id`** `string` — The operator's extension ID. - **`operator_ext_number`** `string` — The operator's extension number. - **`operator_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The operator's extension type. - **`operator_name`** `string` — The operator's name. - **`press_key`** `string` — The key value associated with a press or input event. - **`recording_id`** `string` — The unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"ad-hoc", "automatic"` — The type of call recording. - **`result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The detailed results of an event for a call log. - **`result_reason`** `string`, possible values: `"answered_by_other", "pickup_by_other", "call_out_by_other"` — The cause or outcome of an event in a call log. - **`segment`** `integer` — A sequential number to indicate the orders of events that starts from 0. - **`site_id`** `string` — The name of the site ID of which the user belongs. - **`site_name`** `string` — The site name of which the user belongs. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. - **`voicemail_id`** `string` — The ID of the call voicemail. - **`waiting_time`** `integer` — The call wait time in seconds. **Example:** ```json { "id": "20211008-fe9c3900-5187-4254-9359-590afbc40bc9", "call_path_id": "20211008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_id": "7018317023722949162", "connect_type": "internal", "call_type": "general", "direction": "inbound", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "1", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_email": "test@abc.com", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "1", "client_code": "1234", "department": "web-api1", "cost_center": "cost-center1", "site_id": "BpCTBMRARBefUrprildVqw", "group_id": "California", "site_name": "site name", "start_time": "2021-10-08T16:12:04Z", "answer_time": "2021-10-08T16:12:04Z", "end_time": "2021-10-08T16:12:15Z", "event": "outgoing", "result": "answered", "result_reason": "answered_by_other", "device_private_ip": "", "device_public_ip": "", "operator_ext_number": "3456", "operator_ext_id": "NN9rA4fZSsScB2YiCqw7Ig", "operator_ext_type": "user", "operator_name": "operator name", "press_key": "3", "segment": 0, "node": 0, "is_node": 0, "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "automatic", "hold_time": 20, "waiting_time": 20, "voicemail_id": "6cd2da01bcaa47f58e3250a575c5f2bf", "caller_account_code": "111", "callee_account_code": "222" } ``` ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`301\` \
Call history does not exist for call log Id: {callLogId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get account's call logs ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/call_logs` - **Tags:** Call Logs Returns an account's [call logs](https://support.zoom.us/hc/en-us/articles/360021114452-Viewing-Call-Logs). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license - Account owner or a [role](https://support.zoom.us/hc/en-us/articles/115001078646-Role-Based-Access-Control) with Zoom Phone management **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_call_log:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_call_logs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Account's call logs returned. ###### Content-Type: application/json - **`call_logs`** `array` — Call Log **Items:** - **`answer_start_time`** `string`, format: `date-time` — The GMT date and time at which the inbound call was answered. The value of this field is in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`call_end_time`** `string` — The call end time in GMT \`date-time\` format. - **`call_id`** `string` — The unique identifier of the phone call. - **`call_type`** `string`, possible values: `"voip", "pstn", "tollfree", "international", "contactCenter"` — The type of call: \* \`voip\` (Voice over IP) \* \`pstn\` (Public Switched Telephone Network) \* \`tollfree\` \* \`international\` \* \`contactCenter\` - **`callee_country_code`** `string` — The country calling code. - **`callee_country_iso_code`** `string` — The ISO alpha2 country code. - **`callee_did_number`** `string` — The callee's DID (direct inward dial) number in e164 format. - **`callee_name`** `string` — The contact name of the callee. - **`callee_number`** `string` — The number of the callee. - **`callee_number_source`** `string`, possible values: `"internal", "external", "byop"` — Ths field indicates where the phone number comes from: \* \`internal\` \— ZP native. \* \`external\` \— BYOC or Provider Exchange. \* \`byop\` \— Premise peering. Not available when \`callee\_number\_type = 1\`. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` \— Extension number. \* \`2\` \— Phone number. \* \`3\` \— Customized emergency number. - **`caller_billing_reference_id`** `string` — The billing reference ID (for peering phone numbers). - **`caller_country_code`** `string` — The country calling code. - **`caller_country_iso_code`** `string` — The ISO alpha2 country code. - **`caller_did_number`** `string` — The caller's DID (direct inward dial) number in e164 format. - **`caller_name`** `string` — The contact name of the caller. - **`caller_number`** `string` — The number of the caller. - **`caller_number_source`** `string`, possible values: `"internal", "external", "byop"` — This field indicates where the phone number comes from: \* \`internal\` \— ZP native. \* \`external\` \— BYOC or Provider Exchange. \* \`byop\` \— Premise peering. Not available when \`caller\_number\_type = 1\`. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` \— Extension number. \* \`2\` \— Phone number. - **`charge`** `string` — The billing charge for the call. - **`client_code`** `string` — Client code. - **`cost_center`** `string` — The cost center name to which a user belongs. - **`date_time`** `string` — Start time of the call - **`department`** `string` — Name of the user's department. - **`device_private_ip`** `string` — Display the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — Display the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`direction`** `string` — Direction of the call. \"inbound\" | \"outbound\" - **`duration`** `integer` — Duration of the billing call in seconds. - **`hold_time`** `integer` — Hold time during a call in seconds. - **`id`** `string` — Call Log ID - **`owner`** `object` - **`extension_number`** `integer`, format: `int64` — The owner's extension number. - **`id`** `string` — The owner ID. - **`name`** `string` — The owner name. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`commonArea\` \*\`sharedLineGroup\` - **`path`** `string` — Path of the call. - **`rate`** `string` — Billing rate for the call. - **`recording_id`** `string` — Unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"OnDemand", "Automatic"` — Type of call recording: \`1\` OnDemand \`2\` Automatic - **`result`** `string` — Result of the call: \`Missed\` | \`Voicemail\` | \`Call connected\` | \`Rejected\` | \`Blocked\`| \`Busy\`| \`Wrong Number\`| \`No Answer\`| \`International Disabled\`| \`Internal Error\`| \`Call failed\` | \`Restricted Number\`| \`Call Cancel\` | \`Message\`| \`Answered by Other Member\` | \`Call Cancelled\` | \`Park\` | \`Parked\` | \`Blocked by non-GAL\` | \`Blocked by info-Barriers\` | \`Recording Failure\`| \`Recorded\`| \`Auto Recorded\`. - **`site`** `object` - **`id`** `string` — Target \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) in which the phone number was assigned. Sites allow you to organize the phone users in your organization. For example, you sites could be created based on different office locations. - **`name`** `string` — Name of the site where the phone number is assigned. - **`user_id`** `string` — User ID of the call log owner. - **`waiting_time`** `integer` — Duration that a \*\*call queue member\*\* takes to answer a call from the time it started ringing. The value of the duration is in seconds. - **`from`** `string` — Start time and date of the log. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_count`** `integer` — Total number of pages - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`to`** `string` — End time and date of the log - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "call_logs": [ { "answer_start_time": "2021-10-12T16:00:08Z", "call_end_time": "2021-10-08T16:12:04Z", "call_id": "7018210229361148737", "call_type": "voip", "callee_country_code": "1", "callee_country_iso_code": "US", "callee_did_number": "+12055432724", "callee_name": "Callee name", "callee_number": "1001", "callee_number_type": 1, "callee_number_source": "internal", "caller_country_code": "1", "caller_country_iso_code": "US", "caller_did_number": "+12055432724", "caller_name": "Caller name", "caller_number": "+12059300920", "caller_number_type": 1, "caller_number_source": "internal", "caller_billing_reference_id": "ZoomTelecom123456", "charge": "$0.0255", "client_code": "123", "date_time": "2021-10-08T16:23:34Z", "device_private_ip": "12", "device_public_ip": "23", "direction": "inbound", "duration": 25, "id": "48c1dfd4-91ce-4df5-8495-7c9e33d10869", "owner": { "extension_number": 1000001019, "id": "N3hAhug-QVyFPYZJrHpRaQ", "name": "123@test.com", "type": "user" }, "path": "pstn", "rate": "0.0255", "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "OnDemand", "result": "Call connected", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "user_id": "IqoQmDRqS-aIoXqV_FZ88w", "hold_time": 5, "waiting_time": 5, "department": "web-api1", "cost_center": "cost-center1" } ], "from": "2021-10-01", "next_page_token": "AmhfoKtF2Ey4TaPg2iZsAcmetRLs2ZY0Sk2", "page_count": 2, "page_size": 30, "to": "2021-10-12", "total_records": 54 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`3001\` \
Error retrieving call logs. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call log details ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/call_logs/{callLogId}` - **Tags:** Call Logs Returns information about a [call log](https://support.zoom.us/hc/en-us/articles/360021114452-Viewing-and-identifying-logs). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_call_log:read:admin`,`phone:read`,`phone_call_log:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:call_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 The details of the call log. ###### Content-Type: application/json - **`call_id`** `string` — The unique identifier of the phone call. - **`call_type`** `string`, possible values: `"voip", "pstn", "tollfree", "international", "contactCenter"` — The type of call: \* \`voip\` (Voice over IP) \* \`pstn\` (Public Switched Telephone Network) \* \`tollfree\` \* \`international\` \* \`contactCenter\` - **`callee_country_code`** `string` — The country calling code. - **`callee_country_iso_code`** `string` — The ISO alpha2 country code. - **`callee_deleted_time`** `string` — The datetime the extension was deleted. It exists only when \`extension\_status\` is \`deleted\`. - **`callee_did_number`** `string` — The callee's DID (direct inward dial) number in e164 format. - **`callee_name`** `string` — The contact name of callee. - **`callee_number`** `string` — The number of callee. - **`callee_number_source`** `string`, possible values: `"internal", "external", "byop"` — This field indicates where the phone number comes from: \* \`internal\` \— ZP native. \* \`external\` \— BYOC or Provider Exchange. \* \`byop\` \— Premise peering. Not available when \`callee\_number\_type = 1\`. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` \— Extension number. \* \`2\` \— Phone number. \* \`3\` \— Customized emergency number. - **`callee_status`** `string`, possible values: `"inactive", "deleted"` — This field indicates the status of extension. \* \`inactive\` \* \`deleted\` - **`caller_billing_reference_id`** `string` — The billing reference ID (for peering phone numbers). - **`caller_country_code`** `string` — The country calling code. - **`caller_country_iso_code`** `string` — The ISO alpha2 country code. - **`caller_deleted_time`** `string` — The datetime the extension was deleted. Exists only when extension\_status is \`deleted\`. - **`caller_did_number`** `string` — The caller's DID (direct inward dial) number in e164 format. - **`caller_name`** `string` — The contact name of caller. - **`caller_number`** `string` — The number of the caller. - **`caller_number_source`** `string`, possible values: `"internal", "external", "byop"` — This field Iindicates where the phone number comes from: \* \`internal\` \— ZP native. \* \`external\` \— BYOC or Provider Exchange. \* \`byop\` \— Premise peering. Not available when \`caller\_number\_type = 1\`. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` \— Extension number. \* \`2\` \— Phone number. - **`caller_status`** `string`, possible values: `"inactive", "deleted"` — This field indicates the status of extension. \* \`inactive\` \* \`deleted\` - **`cost_center`** `string` — The cost center name to which a user belongs. - **`date_time`** `string` — The start time of the call. - **`department`** `string` — The name of the user's department. - **`device_private_ip`** `string` — This field displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This field displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call: \`inbound\` | \`outbound\` - **`duration`** `integer` — The duration of the call in seconds. - **`has_recording`** `boolean` — Whether the call has a recording. See \[announcement]\(https\://marketplace.zoom.us/docs/guides/stay-up-to-date/announcements#deprecation-of-the-has\_voicemail-and-has\_recording-responses-in-phone-api) from July, 2021. - **`has_voicemail`** `boolean` — Whether the call has a voicemail. See \[announcement]\(https\://marketplace.zoom.us/docs/guides/stay-up-to-date/announcements#deprecation-of-the-has\_voicemail-and-has\_recording-responses-in-phone-api) from July, 2021. - **`id`** `string` — The call log ID. - **`log_details`** `array` — The call segment details. **Items:** - **`date_time`** `string` — The start time of the call. - **`device_private_ip`** `string` — This field displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This field displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`duration`** `integer` — The duration of the call in seconds. - **`forward_to`** `object` — The information about the call's forwarding. - **`extension_deleted_time`** `string` — The datetime the extension was deleted. Exists only when extension\_status is \`deleted\`. - **`extension_number`** `string` — The call forward's extension number. - **`extension_status`** `string`, possible values: `"inactive", "deleted"` — This field indicates the status of extension. \* \`inactive\` \* \`deleted\` - **`id`** `string` — The call forward's unique ID. - **`name`** `string` — The call forward's name. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The call forwarding recipient type: \* \`user\` \* \`callQueue\` \* \`autoReceptionist\` \* \`sharedLineGroup\` - **`hold_time`** `integer` — The hold time during a call in seconds. - **`id`** `string` — The call log ID. - **`path`** `string` — The path of the call. - **`result`** `string` — The result of the call: \`Missed\` | \`Voicemail\`| \`Call connected\`|\`Rejected\`| \`Blocked\`| \`Busy\`|\`Wrong Number\`| \`No Answer\`| \`International Disabled\`|\`Internal Error\`| \`Call failed\`| \`Restricted Number\`|\`Call Cancel\`| \`Message\`| \`Answered by Other Member\`|\`Call Cancelled\`| \`Park\`| \`Parked\`| \`Blocked by non-GAL\`| \`Blocked by info-Barriers\`|\`Recording Failure\`| \`Recorded\`| \`Auto Recorded\`. - **`site`** `object` - **`id`** `string` — The target \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) where the phone number was assigned. Sites allow you to organize the phone users in your organization. For example, you can create sites based on different office locations. - **`name`** `string` — The name of the site where the phone number is assigned. - **`path`** `string` — The path of the call. - **`result`** `string` — The result of the call: \`Missed\` | \`Voicemail\` | \`Call connected\` | \`Rejected\` | \`Blocked\`| \`Busy\`| \`Wrong Number\`| \`No Answer\`| \`International Disabled\`| \`Internal Error\`| \`Call failed\` | \`Restricted Number\`| \`Call Cancel\` | \`Message\`| \`Answered by Other Member\` | \`Call Cancelled\` | \`Park\` | \`Parked\` | \`Blocked by non-GAL\` | \`Blocked by info-Barriers\` | \`Recording Failure\`| \`Recorded\`| \`Auto Recorded\`. **Example:** ```json { "call_id": "7018317023722949162", "call_type": "voip", "callee_country_code": "1", "callee_country_iso_code": "US", "callee_did_number": "+12055432724", "callee_name": "Callee name", "callee_number": "1018", "callee_number_type": 1, "callee_number_source": "internal", "callee_status": "deleted", "callee_deleted_time": "2022-10-14T22:10:54Z", "caller_country_code": "1", "caller_country_iso_code": "US", "caller_did_number": "+12055432724", "caller_name": "Caller name", "caller_number": "+16622001852", "caller_number_type": 1, "caller_number_source": "internal", "caller_billing_reference_id": "ZoomTelecom123456", "caller_status": "deleted", "caller_deleted_time": "2022-10-14T22:10:54Z", "date_time": "2021-10-12T22:54:31Z", "device_private_ip": "12", "device_public_ip": "23", "direction": "inbound", "duration": 20, "id": "a55d94f7-27ea-4dbb-ab25-028f2c8d55bd", "log_details": [ { "date_time": "2021-10-12T22:54:31Z", "hold_time": 5, "device_private_ip": "12", "device_public_ip": "23", "duration": 20, "forward_to": { "extension_number": "1002", "id": "1234abcd", "name": "name", "type": "user", "extension_status": "deleted", "extension_deleted_time": "2022-10-14T22:10:54Z" }, "id": "a55d94f7-27ea-4dbb-ab25-028f2c8d55bd", "path": "callQueue", "result": "Call connected", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" } } ], "path": "callQueue", "result": "Call connected", "department": "web-api1", "cost_center": "cost-center1" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a client code to a call log ⚠️ Deprecated - **Method:** `PUT` - **Path:** `/phone/call_logs/{callLogId}/client_code` - **Tags:** Call Logs Adds a client code to a [call log](https://support.zoom.us/hc/en-us/articles/360040999352-Assigning-client-codes-to-phone-calls). You can track call logs with a client code. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:call_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`client_code` (required)** `string` — The client code (3 to 16 digit number) to mark the call log. **Example:** ```json { "client_code": "123" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully added the client code to the call log. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Validation Failed. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get User AI Call Summary Detail - **Method:** `GET` - **Path:** `/phone/user/{userId}/ai_call_summary/{aiCallSummaryId}` - **Tags:** Call Logs Returns AI call summary details. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:ai_call_summary`,`phone:read:ai_call_summary:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status code:\*\* \`200\`User AI call summary returned. ###### Content-Type: application/json - **`account_id`** `string` — The ID of the account. - **`ai_call_summary_id`** `string` — The ID of the AI call summary. - **`call_id`** `string` — The ID of the phone call. - **`call_summary`** `string` — The recap of the call summary. - **`call_summary_rate`** `string`, possible values: `"thumb_up", "thumb_down"` — The call summary rate. - **`created_time`** `string` — The created time in GMT \`date-time\` format. - **`detailed_summary`** `string` — The detailed version of the call summary. - **`edited`** `boolean` — The flag indicates if the call summary is modified. - **`modified_time`** `string` — The modified time in GMT \`date-time\` format. - **`next_steps`** `string` — The next step in the call summary. - **`transcript_language`** `string` — The transcription language ID. - **`user_id`** `string` — The owner's user ID. **Example:** ```json { "ai_call_summary_id": "HfBQmSIARZi5zeDMmofwTA", "account_id": "A88lsb7WQ46FwTeNe8jsMw", "call_id": "7018317023722949162", "user_id": "x2ci3VDeQEqJsuHkn5oRzg", "call_summary_rate": "thumb_up", "transcript_language": "en", "call_summary": "Tom discussed his personal beliefs and values, including his support for certain political figures and his advocacy for various social causes.", "next_steps": "Tom will provide PPT next Tuesday.", "detailed_summary": "Tom discussed ...", "created_time": "2023-10-08T16:12:04Z", "modified_time": "2023-10-08T16:12:04Z", "edited": true } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get user's call history - **Method:** `GET` - **Path:** `/phone/users/{userId}/call_history` - **Tags:** Call Logs Returns a user's [Zoom phone](https://support.zoom.us/hc/en-us/articles/360001297663-Quickstart-Guide-for-Zoom-Phone-Administrators) call history. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_call_log:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_call_logs:admin`,`phone:read:list_call_logs` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` User's call history returned. ###### Content-Type: application/json - **`call_elements`** `array` — The call elements. **Items:** - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_element_id`** `string` — The ID of the call element. - **`call_history_uuid`** `string` — The ID of the call history. - **`call_id`** `string` — The ID of the phone call. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_cost_center`** `string` — The callee's cost center. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_department`** `string` — The callee's department. - **`callee_device_private_ip`** `string` — The callee's private IP. - **`callee_device_public_ip`** `string` — The callee's public IP. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_employee_id`** `string` — Ther callee's employee id - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The extension number of the callee. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The name of the callee. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The callee's number type. - **`callee_site_id`** `string` — The callee's site ID. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_cost_center`** `string` — The caller's cost center. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_department`** `string` — The caller's department. - **`caller_device_private_ip`** `string` — The caller's private IP. - **`caller_device_public_ip`** `string` — The caller's public IP. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_employee_id`** `string` — Ther caller's employee ID. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The extension number of the caller. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The name of the caller. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The caller's number type. - **`caller_site_id`** `string` — The caller's site ID. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`event`** `string`, possible values: `"incoming", "transfer_from_zoom_contact_center", "shared_line_incoming", "outgoing", "call_me_on", "outgoing_to_zoom_contact_center", "warm_transfer", "forward", "ring_to_member", "overflow", "direct_transfer", "barge", "monitor", "whisper", "listen", "takeover", "conference_barge", "park", "timeout", "park_pick_up", "merge", "shared"` — An event within a call log. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`hold_time`** `integer` — The call hold time in seconds. - **`operator_ext_id`** `string` — The operator extension ID. - **`operator_ext_number`** `string` — The operator extension number. - **`operator_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The operator extension type. - **`operator_name`** `string` — The operator's name. - **`recording_id`** `string` — The unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"ad-hoc", "automatic"` — The type of call recording. - **`result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The detail result of an event for a call log. - **`result_reason`** `string`, possible values: `"answered_by_other", "pickup_by_other", "call_out_by_other"` — The reason of result of an event for a call log. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. - **`talk_time`** `integer` — The call talk time in seconds. - **`voicemail_id`** `string` — The ID of the call voicemail. - **`wait_time`** `integer` — The call wait time in seconds. - **`call_logs`** `array` — The call history. **Items:** - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_id`** `string` — The ID of the phone call. - **`call_path_id`** `string` — The call path ID of the call. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_cost_center`** `string` — The callee's cost center. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_department`** `string` — The callee's department. - **`callee_device_private_ip`** `string` — The callee's private IP. - **`callee_device_public_ip`** `string` — The callee's public IP. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_employee_id`** `string` — Ther callee's employee id - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The extension number of the callee. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The name of the callee. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The callee's number type. - **`callee_site_id`** `string` — The callee's site ID. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_cost_center`** `string` — The caller's cost center. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_department`** `string` — The caller's department. - **`caller_device_private_ip`** `string` — The caller's private IP. - **`caller_device_public_ip`** `string` — The caller's public IP. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_employee_id`** `string` — Ther caller's employee ID. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The extension number of the caller. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The name of the caller. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The caller's number type. - **`caller_site_id`** `string` — The caller's site ID. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`event`** `string`, possible values: `"incoming", "transfer_from_zoom_contact_center", "shared_line_incoming", "outgoing", "call_me_on", "outgoing_to_zoom_contact_center", "warm_transfer", "forward", "ring_to_member", "overflow", "direct_transfer", "barge", "monitor", "whisper", "listen", "takeover", "conference_barge", "park", "timeout", "park_pick_up", "merge", "shared"` — An event within a call log. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`hold_time`** `integer` — The call hold time in seconds. - **`id`** `string` — The ID of the call history. - **`operator_ext_id`** `string` — The operator extension ID. - **`operator_ext_number`** `string` — The operator extension number. - **`operator_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The operator extension type. - **`operator_name`** `string` — The operator's name. - **`recording_id`** `string` — The unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"ad-hoc", "automatic"` — The type of call recording. - **`result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The detail result of an event for a call log. - **`result_reason`** `string`, possible values: `"answered_by_other", "pickup_by_other", "call_out_by_other"` — The reason of result of an event for a call log. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. - **`talk_time`** `integer` — The call talk time in seconds. - **`voicemail_id`** `string` — The ID of the call voicemail. - **`wait_time`** `integer` — The call wait time in seconds. - **`from`** `string` — The start time and date of the log. - **`next_page_token`** `string` — 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. - **`page_count`** `integer` — The total number of pages - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`to`** `string` — The end time and date of the log - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "call_logs": [ { "id": "20231008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_path_id": "20231008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_id": "7018317023722949162", "group_id": "_sj190JDFasa19321_adA7", "connect_type": "internal", "call_type": "general", "direction": "inbound", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_employee_id": "102911", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_private_ip": "10.0.0.1", "caller_device_public_ip": "135.0.0.1", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "1", "caller_site_id": "BpCTBMRARBefUrprildVqw", "caller_department": "web-api1", "caller_cost_center": "cost-center1", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_email": "test@abc.com", "callee_employee_id": "102912", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_private_ip": "10.0.0.2", "callee_device_public_ip": "135.0.0.2", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "1", "callee_site_id": "BpCTBMRARBefUrprildVqw", "callee_department": "web-api1", "callee_cost_center": "cost-center1", "start_time": "2023-10-08T16:12:04Z", "answer_time": "2023-10-08T16:12:04Z", "end_time": "2023-10-08T16:12:15Z", "event": "outgoing", "result": "answered", "result_reason": "answered_by_other", "operator_ext_number": "3456", "operator_ext_id": "NN9rA4fZSsScB2YiCqw7Ig", "operator_ext_type": "user", "operator_name": "operator name", "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "automatic", "voicemail_id": "6cd2da01bcaa47f58e3250a575c5f2bf", "talk_time": 31, "hold_time": 20, "wait_time": 20, "caller_account_code": "111", "callee_account_code": "222" } ], "call_elements": [ { "call_element_id": "20231008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_history_uuid": "20231008-48c1dfd4-91ce-4df5-8495-7c9e33d10869", "call_id": "7018317023722949162", "group_id": "_sj190JDFasa19321_adA7", "connect_type": "internal", "call_type": "general", "direction": "inbound", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_employee_id": "102911", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_private_ip": "10.0.0.1", "caller_device_public_ip": "135.0.0.1", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "1", "caller_site_id": "BpCTBMRARBefUrprildVqw", "caller_department": "web-api1", "caller_cost_center": "cost-center1", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_email": "test@abc.com", "callee_employee_id": "102912", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_private_ip": "10.0.0.2", "callee_device_public_ip": "135.0.0.2", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "1", "callee_site_id": "BpCTBMRARBefUrprildVqw", "callee_department": "web-api1", "callee_cost_center": "cost-center1", "start_time": "2023-10-08T16:12:04Z", "answer_time": "2023-10-08T16:12:04Z", "end_time": "2023-10-08T16:12:15Z", "event": "outgoing", "result": "answered", "result_reason": "answered_by_other", "operator_ext_number": "3456", "operator_ext_id": "NN9rA4fZSsScB2YiCqw7Ig", "operator_ext_type": "user", "operator_name": "operator name", "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "automatic", "voicemail_id": "6cd2da01bcaa47f58e3250a575c5f2bf", "talk_time": 31, "hold_time": 20, "wait_time": 20, "caller_account_code": "111", "callee_account_code": "222" } ], "from": "2023-10-01", "to": "2023-10-12", "next_page_token": "AmhfoKtF2Ey4TaPg2iZsAcmetRLs2ZY0Sk2", "page_count": 2, "page_size": 30, "total_records": 54 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`301\` \
Invalid request param: {paramName}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`300\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Sync user's call history - **Method:** `GET` - **Path:** `/phone/users/{userId}/call_history/sync` - **Tags:** Call Logs Syncs a user's [Zoom phone](https://support.zoom.us/hc/en-us/articles/360001297663-Quickstart-Guide-for-Zoom-Phone-Administrators) call history. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_call_logs`,`phone:read:list_call_logs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status code:\*\* \`200\`User call logs returned. ###### Content-Type: application/json - **`call_elements`** `array` — The sync user call elements. **Items:** - **`ai_call_summary_id`** `string` — The ai call summary ID. - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_element_id`** `string` — The ID of the call element. - **`call_history_uuid`** `string` — The call history ID of the call. - **`call_id`** `string` — The ID of the phone call. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_cost_center`** `string` — The callee's cost center. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_department`** `string` — The callee's department. - **`callee_device_private_ip`** `string` — The callee's private IP. - **`callee_device_public_ip`** `string` — The callee's public IP. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_employee_id`** `string` — Ther callee's employee ID. - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The extension number of the callee. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The name of the callee. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The callee's number type. - **`callee_site_id`** `string` — The callee's site ID. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_cost_center`** `string` — The caller's cost center. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_department`** `string` — The caller's department. - **`caller_device_private_ip`** `string` — The caller's private IP. - **`caller_device_public_ip`** `string` — The caller's public IP. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_employee_id`** `string` — Ther caller's employee ID. - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The extension number of the caller. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The name of the caller. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The caller's number type. - **`caller_site_id`** `string` — The caller's site ID. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`event`** `string`, possible values: `"incoming", "transfer_from_zoom_contact_center", "shared_line_incoming", "outgoing", "call_me_on", "outgoing_to_zoom_contact_center", "warm_transfer", "forward", "ring_to_member", "overflow", "direct_transfer", "barge", "monitor", "whisper", "listen", "takeover", "conference_barge", "park", "timeout", "park_pick_up", "merge", "shared"` — An event within a call log. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`hold_time`** `integer` — The call hold time in seconds. - **`operator_ext_id`** `string` — The operator extension ID. - **`operator_ext_number`** `string` — The operator extension number. - **`operator_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The operator extension type. - **`operator_name`** `string` — The operator's name. - **`recording_id`** `string` — The unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"ad-hoc", "automatic"` — The type of call recording. - **`result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The detail result of an event for a call log. - **`result_reason`** `string`, possible values: `"answered_by_other", "pickup_by_other", "call_out_by_other"` — The reason of result of an event for a call log. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. - **`talk_time`** `integer` — The call talk time in seconds. - **`voicemail_id`** `string` — The ID of the call voicemail. - **`wait_time`** `integer` — The call wait time in seconds. - **`call_logs`** `array` **Items:** - **`ai_call_summary_id`** `string` — The ai call summary ID. - **`answer_time`** `string` — The call answer time in GMT \`date-time\` format. - **`call_id`** `string` — The ID of the phone call. - **`call_path_id`** `string` — The call path ID of the call. - **`call_type`** `string`, possible values: `"general", "emergency"` — The type of call. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_cost_center`** `string` — The callee's cost center. - **`callee_country_code`** `string` — The callee's country code. - **`callee_country_iso_code`** `string` — The callee's country ISO code. - **`callee_department`** `string` — The callee's department. - **`callee_device_private_ip`** `string` — The callee's private IP. - **`callee_device_public_ip`** `string` — The callee's public IP. - **`callee_device_type`** `string` — The callee's device type. - **`callee_did_number`** `string` — The callee's DID number in e164 format. - **`callee_email`** `string` — The callee's email. - **`callee_employee_id`** `string` — Ther callee's employee id - **`callee_ext_id`** `string` — The callee's extension ID. - **`callee_ext_number`** `string` — The extension number of the callee. - **`callee_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The callee's extension type. - **`callee_name`** `string` — The name of the callee. - **`callee_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The callee's number type. - **`callee_site_id`** `string` — The callee's site ID. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_cost_center`** `string` — The caller's cost center. - **`caller_country_code`** `string` — The caller's country code. - **`caller_country_iso_code`** `string` — The caller's country ISO code. - **`caller_department`** `string` — The caller's department. - **`caller_device_private_ip`** `string` — The caller's private IP. - **`caller_device_public_ip`** `string` — The caller's public IP. - **`caller_device_type`** `string` — The caller's device type. - **`caller_did_number`** `string` — The caller's DID number in e164 format. - **`caller_email`** `string` — The caller's email. - **`caller_employee_id`** `string` — Ther caller's employee id - **`caller_ext_id`** `string` — The caller's extension ID. - **`caller_ext_number`** `string` — The extension number of the caller. - **`caller_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The caller's extension type. - **`caller_name`** `string` — The name of the caller. - **`caller_number_type`** `string`, possible values: `"zoom_pstn", "zoom_toll_free_number", "external_pstn", "external_contact", "byoc", "byop", "3rd_party_contact_center", "zoom_service_number", "external_service_number", "zoom_contact_center", "meeting_phone_number", "meeting_id", "anonymous_number", "zoom_revenue_accelerator"` — The caller's number type. - **`caller_site_id`** `string` — The caller's site ID. - **`connect_type`** `string`, possible values: `"internal", "external"` — The connect type of call. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`end_to_end`** `boolean` — A flag to indicate the call is end to End-to-End Encryption or not. - **`event`** `string`, possible values: `"incoming", "transfer_from_zoom_contact_center", "shared_line_incoming", "outgoing", "call_me_on", "outgoing_to_zoom_contact_center", "warm_transfer", "forward", "ring_to_member", "overflow", "direct_transfer", "barge", "monitor", "whisper", "listen", "takeover", "conference_barge", "park", "timeout", "park_pick_up", "merge", "shared"` — An event within a call log. - **`group_id`** `string` — The primary group of which the user belongs. - **`hide_caller_id`** `boolean` — A flag to indicate the call is hide caller ID or not. - **`hold_time`** `integer` — The call hold time in seconds. - **`id`** `string` — The ID of the call history. - **`operator_ext_id`** `string` — The operator extension ID. - **`operator_ext_number`** `string` — The operator extension number. - **`operator_ext_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "zoom_room", "cisco_room", "shared_line_group", "group_call_pickup", "external_contact"` — The operator extension type. - **`operator_name`** `string` — The operator's name. - **`recording_id`** `string` — The unique identifier of the call recording. - **`recording_type`** `string`, possible values: `"ad-hoc", "automatic"` — The type of call recording. - **`result`** `string`, possible values: `"answered", "accepted", "picked_up", "connected", "succeeded", "voicemail", "hang_up", "canceled", "call_failed", "unconnected", "rejected", "busy", "ring_timeout", "overflowed", "no_answer", "invalid_key", "invalid_operation", "abandoned", "system_blocked", "service_unavailable"` — The detail result of an event for a call log. - **`result_reason`** `string`, possible values: `"answered_by_other", "pickup_by_other", "call_out_by_other"` — The reason of result of an event for a call log. - **`start_time`** `string` — The call start time in GMT \`date-time\` format. - **`talk_time`** `integer` — The call talk time in seconds. - **`voicemail_id`** `string` — The ID of the call voicemail. - **`wait_time`** `integer` — The call wait time in seconds. - **`sync_token`** `string` — The time range for returned records. Used for locating where the next retrieval will begin. **Example:** ```json { "call_logs": [ { "id": "20231008-321adfd4-91ce-4d15-84a5-7c9e33d10c32", "call_path_id": "20231008-c12adfdf-93ce-fda5-8ca1-7c5e31d1021c", "call_id": "7018317023722949162", "group_id": "_sj190JDFasa19321_adA7", "connect_type": "internal", "call_type": "general", "direction": "inbound", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_employee_id": "102911", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_private_ip": "10.0.0.1", "caller_device_public_ip": "135.0.0.1", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "1", "caller_site_id": "BpCTBMRARBefUrprildVqw", "caller_department": "web-api1", "caller_cost_center": "cost-center1", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_email": "test@abc.com", "callee_employee_id": "102912", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_private_ip": "10.0.0.2", "callee_device_public_ip": "135.0.0.2", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "1", "callee_site_id": "BpCTBMRARBefUrprildVqw", "callee_department": "web-api1", "callee_cost_center": "cost-center1", "start_time": "2023-10-08T16:12:04Z", "answer_time": "2023-10-08T16:12:04Z", "end_time": "2023-10-08T16:12:15Z", "event": "outgoing", "result": "answered", "result_reason": "answered_by_other", "operator_ext_number": "3456", "operator_ext_id": "NN9rA4fZSsScB2YiCqw7Ig", "operator_ext_type": "user", "operator_name": "operator name", "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "automatic", "voicemail_id": "6cd2da01bcaa47f58e3250a575c5f2bf", "talk_time": 31, "hold_time": 20, "wait_time": 20, "ai_call_summary_id": "rBA9KJdyTVqGdTLpysHBsg", "caller_account_code": "111", "callee_account_code": "222" } ], "call_elements": [ { "call_element_id": "20231008-321adfd4-91ce-4d15-84a5-7c9e33d10c32", "call_history_uuid": "20231008-c12adfdf-93ce-fda5-8ca1-7c5e31d1021c", "call_id": "7018317023722949162", "group_id": "_sj190JDFasa19321_adA7", "connect_type": "internal", "call_type": "general", "direction": "inbound", "hide_caller_id": true, "end_to_end": false, "caller_ext_id": "ATu63--9TjudZetpf4UuQg", "caller_name": "Caller name", "caller_email": "test@abc.com", "caller_employee_id": "102911", "caller_did_number": "+12059300920", "caller_ext_number": "101229", "caller_ext_type": "user", "caller_number_type": "external_pstn", "caller_device_private_ip": "10.0.0.1", "caller_device_public_ip": "135.0.0.1", "caller_device_type": "MAC_Client(6.0.2.33403)", "caller_country_iso_code": "US", "caller_country_code": "1", "caller_site_id": "BpCTBMRARBefUrprildVqw", "caller_department": "web-api1", "caller_cost_center": "cost-center1", "callee_ext_id": "ATu63--9TjudZetpf4UuQg", "callee_name": "Callee name", "callee_did_number": "+12059300920", "callee_ext_number": "101229", "callee_email": "test@abc.com", "callee_employee_id": "102912", "callee_ext_type": "user", "callee_number_type": "external_pstn", "callee_device_private_ip": "10.0.0.2", "callee_device_public_ip": "135.0.0.2", "callee_device_type": "MAC_Client(6.0.2.33403)", "callee_country_iso_code": "US", "callee_country_code": "1", "callee_site_id": "BpCTBMRARBefUrprildVqw", "callee_department": "web-api1", "callee_cost_center": "cost-center1", "start_time": "2023-10-08T16:12:04Z", "answer_time": "2023-10-08T16:12:04Z", "end_time": "2023-10-08T16:12:15Z", "event": "outgoing", "result": "answered", "result_reason": "answered_by_other", "operator_ext_number": "3456", "operator_ext_id": "NN9rA4fZSsScB2YiCqw7Ig", "operator_ext_type": "user", "operator_name": "operator name", "recording_id": "c71b360f6e774e3aa101453117b7e1a7", "recording_type": "automatic", "voicemail_id": "6cd2da01bcaa47f58e3250a575c5f2bf", "talk_time": 31, "hold_time": 20, "wait_time": 20, "ai_call_summary_id": "rBA9KJdyTVqGdTLpysHBsg", "caller_account_code": "111", "callee_account_code": "222" } ], "sync_token": "SDVjM3NHRlNyMF8xNjQwODI3NTkyMzkwXzE2NDgwMTUzNTk0MzI=" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`301\` \
Invalid request param: {paramName}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`300\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a user's call history - **Method:** `DELETE` - **Path:** `/phone/users/{userId}/call_history/{callLogId}` - **Tags:** Call Logs Deletes a user's [call history](https://support.zoom.us/hc/en-us/articles/360021114452-Viewing-and-identifying-logs). For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - Belong to a Business or Enterprise account - Have a Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin`,`phone_call_log:write`,`phone_call_log:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:call_log`,`phone:delete:call_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 Call history has been deleted successfully ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`300\` \
User does not exist: {userId}. \
\*\*Error Code:\*\* \`301\` \
Call history not found: {callLogId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get user's call logs ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/users/{userId}/call_logs` - **Tags:** Call Logs Returns a user's [Zoom phone](https://support.zoom.us/hc/en-us/articles/360001297663-Quickstart-Guide-for-Zoom-Phone-Administrators) call logs. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`,`phone_call_log:read`,`phone_call_log:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_call_logs`,`phone:read:list_call_logs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status code:\*\* \`200\` User's call logs returned. ###### Content-Type: application/json - **`call_logs`** `array` — The call Log **Items:** - **`accepted_by`** `object` — This field indicates who accepted the call. - **`extension_number`** `string` - **`location`** `string` - **`name`** `string` - **`number_type`** `integer` — The phone number types: \`1\` - Extension \`2\`- E164 number \`3\` - Custom number. - **`phone_number`** `string` - **`answer_start_time`** `string` — The call's answer time, in GMT \`date-time\` format. The API only displays this response if the \`direction\` value is \`inbound\`. - **`call_end_time`** `string` — The call end time, in GMT \`date-time\` format. - **`call_id`** `string` — The unique identifier of the phone call. - **`callee_country_code`** `string` — The country calling code. - **`callee_country_iso_code`** `string` — The ISO alpha2 country code. - **`callee_did_number`** `string` — The callee's DID (direct inward dial) number in e164 format. - **`callee_name`** `string` — The contact name of callee - **`callee_number`** `string` — The number of the callee - **`callee_number_source`** `string`, possible values: `"internal", "external", "byop"` — This field indicates where the phone number comes from: \* \`internal\` \— ZP native. \* \`external\` \— BYOC or Provider Exchange. \* \`byop\` \— Premise peering. Not available when \`callee\_number\_type = 1\`. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` \— Extension number. \* \`2\` \— Phone number. \* \`3\` \— Customized emergency number. - **`caller_billing_reference_id`** `string` — The billing reference ID (for peering phone numbers). - **`caller_country_code`** `string` — The country calling code. - **`caller_country_iso_code`** `string` — The ISO alpha2 country code. - **`caller_did_number`** `string` — The caller's DID (direct inward dial) number in e164 format. - **`caller_name`** `string` — The contact name of the caller - **`caller_number`** `string` — The number of the caller - **`caller_number_source`** `string`, possible values: `"internal", "external", "byop"` — This field indicates where the phone number comes from: \* \`internal\` \— ZP native. \* \`external\` \— BYOC or Provider Exchange. \* \`byop\` \— Premise peering. Not available when \`caller\_number\_type = 1\`. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` \— Extension number. \* \`2\` \— Phone number. - **`charge`** `string` — The billing charge for the call. - **`client_code`** `string` — The client code. - **`cost_center`** `string` — The cost center name to which a user belongs. - **`date_time`** `string` — The start time of the call - **`department`** `string` — The name of the user's department. - **`direction`** `string` — The direction of the call. \"inbound\" | \"outbound\" - **`duration`** `integer` — The duration of the call in seconds. - **`forwarded_by`** `object` — This field indicates where the call was forwarded from. - **`extension_number`** `string` - **`extension_type`** `string`, possible values: `"user", "callQueue", "commonAreaPhone", "autoReceptionist", "sharedLineGroup"` - **`location`** `string` - **`name`** `string` - **`number_type`** `integer` — The phone number types: \`1\` - Extension \`2\`- E164 number \`3\` - Custom number. - **`phone_number`** `string` - **`forwarded_to`** `object` — The field indicates who the call was forwarded to. - **`extension_number`** `string` - **`location`** `string` - **`name`** `string` - **`number_type`** `integer` — The phone number types: \`1\` - Extension \`2\`- E164 number \`3\` - Custom number. - **`phone_number`** `string` - **`has_recording`** `boolean` — Whether the call has a recording. See \[announcement]\(https\://marketplace.zoom.us/docs/guides/stay-up-to-date/announcements#deprecation-of-the-has\_voicemail-and-has\_recording-responses-in-phone-api) from July, 2021 - **`has_voicemail`** `boolean` — Whether the call has a voicemail. See \[announcement]\(https\://marketplace.zoom.us/docs/guides/stay-up-to-date/announcements#deprecation-of-the-has\_voicemail-and-has\_recording-responses-in-phone-api) from July, 2021. - **`hold_time`** `integer` — The hold time during a call in seconds. - **`id`** `string` — The call Log ID - **`outgoing_by`** `object` - **`extension_number`** `string` - **`location`** `string` - **`name`** `string` - **`number_type`** `integer` — The phone number types: \`1\` - Extension \`2\`- E164 number \`3\` - Custom number. - **`phone_number`** `string` - **`path`** `string` — The path of the call log. - **`rate`** `string` — The billing rate for the call. - **`recording_type`** `string`, possible values: `"OnDemand", "Automatic"` — The recording type. \* \`On-demand\` recording. \* \`Automatic\` recording. - **`result`** `string` — The result of the call: \`Missed\` | \`Voicemail\` | \`Call connected\` | \`Rejected\` | \`Blocked\`| \`Busy\`| \`Wrong Number\`| \`No Answer\`| \`International Disabled\`| \`Internal Error\`| \`Call failed\` | \`Restricted Number\`| \`Call Cancel\` | \`Message\`| \`Answered by Other Member\` | \`Call Cancelled\` | \`Park\` | \`Parked\` | \`Blocked by non-GAL\` | \`Blocked by info-Barriers\` | \`Recording Failure\`| \`Recorded\`| \`Auto Recorded\`. - **`site`** `object` - **`id`** `string` — The target \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) in which the phone number was assigned. Sites allow you to organize the phone users in your organization. For example, you sites could be created based on different office locations. - **`name`** `string` — The name of the site where the phone number is assigned. - **`user_id`** `string` — The user ID or user email. - **`waiting_time`** `integer` — The time (in seconds) spent waiting for the call to be connected. - **`from`** `string` — The start time and date of the log - **`next_page_token`** `string` — 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. - **`page_count`** `integer` — The total number of pages - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`to`** `string` — The end time and date of the log - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "call_logs": [ { "accepted_by": { "extension_number": "1009", "location": "Pontotoc MS", "name": "Display name", "number_type": 1, "phone_number": "+12055432724" }, "answer_start_time": "2021-10-09T16:52:05Z", "call_end_time": "2021-10-09T17:20:53Z", "call_id": "7017184835983901126", "callee_country_code": "1", "callee_country_iso_code": "US", "callee_did_number": "+12055432724", "callee_name": "Callee name", "callee_number": "1018", "callee_number_type": 1, "callee_number_source": "internal", "caller_country_code": "1", "caller_country_iso_code": "US", "caller_did_number": "+12055432724", "caller_name": "Caller name", "caller_number": "+12059300920", "caller_number_type": 1, "caller_number_source": "internal", "caller_billing_reference_id": "ZoomTelecom123456", "charge": "$0.0255", "client_code": "123", "date_time": "2022-01-24T23:58:10Z", "direction": "inbound", "duration": 20, "forwarded_by": { "extension_number": "1009", "extension_type": "user", "location": "Glendale CA", "name": "The display name", "number_type": 1, "phone_number": "+12055432724" }, "forwarded_to": { "extension_number": "1009", "location": "Glendale CA", "name": "Display name", "number_type": 1, "phone_number": "+12055432724" }, "id": "48c1dfd4-91ce-4df5-8495-7c9e33d10869", "outgoing_by": { "extension_number": "1009", "location": "Glendale CA", "name": "Display name", "number_type": 1, "phone_number": "+12055432724" }, "path": "pstn", "rate": "$0.0255", "recording_type": "On-demand", "result": "Call connected", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "user_id": "DnEopNmXQEGU2uvvzjgojw", "hold_time": 5, "waiting_time": 10, "department": "web-api1", "cost_center": "cost-center1" } ], "from": "2021-10-01", "next_page_token": "AmhfoKtF2Ey4TaPg2iZsAcmetRLs2ZY0Sk2", "page_count": 2, "page_size": 30, "to": "2021-10-12", "total_records": 54 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`3001\` \
Error retrieving call logs. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Sync user's call logs ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/users/{userId}/call_logs/sync` - **Tags:** Call Logs Syncs a user's [Zoom phone](https://support.zoom.us/hc/en-us/articles/360001297663-Quickstart-Guide-for-Zoom-Phone-Administrators) call logs. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_call_logs`,`phone:read:list_call_logs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status code:\*\* \`200\` User call logs returned. ###### Content-Type: application/json - **`call_logs`** `array` — The call log. **Items:** - **`accepted_by`** `object` — This field indicates who accepted the call. - **`extension_number`** `string` - **`location`** `string` - **`name`** `string` - **`number_type`** `integer` — The phone number types: \`1\` - Extension \`2\`- E164 number \`3\` - Custom number. - **`phone_number`** `string` - **`answer_start_time`** `string` — The time the call was answered in GMT \`date-time\` format. The API only displays this response if the \`direction\` value is \`inbound\`. - **`call_end_time`** `string` — The call end time in GMT \`date-time\` format. - **`call_id`** `string` — THe unique identifier of the phone call. - **`callee_country_code`** `string` — The country calling code. - **`callee_country_iso_code`** `string` — The ISO alpha2 country code. - **`callee_did_number`** `string` — The callee's DID (direct inward dial) number in e164 format. - **`callee_name`** `string` — The contact name of the callee. - **`callee_number`** `string` — The number associated with the callee. It can be an e164 number or an extension. - **`callee_number_source`** `string`, possible values: `"internal", "external", "byop"` — This field indicates where the phone number comes from: \* \`internal\` \— ZP native. \* \`external\` \— BYOC or Provider Exchange. \* \`byop\` \— Premise peering. Not available when \`callee\_number\_type = 1\`. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee number type: \* \`1\` \— Extension number. \* \`2\` \— Phone number. \* \`3\` \— Customized emergency number. - **`callee_user_id`** `string` — The callee's user id. - **`caller_billing_reference_id`** `string` — The billing reference ID (for peering phone numbers). - **`caller_country_code`** `string` — The country calling code. - **`caller_country_iso_code`** `string` — ISO alpha2 country code. - **`caller_did_number`** `string` — The caller's DID (direct inward dial) number in e164 format. - **`caller_name`** `string` — The contact name of the caller. - **`caller_number`** `string` — The number associated with the caller. It can be an e164 number or an extension. - **`caller_number_source`** `string`, possible values: `"internal", "external", "byop"` — This field indicates where the phone number comes from: \* \`internal\` \— ZP native. \* \`external\` \— BYOC or Provider Exchange. \* \`byop\` \— Premise peering. Not available when \`caller\_number\_type = 1\`. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller number type: \* \`1\` \— Extension number. \* \`2\` \— Phone number. - **`caller_user_id`** `string` — The caller's user ID. - **`charge`** `string` — The billing charge for the call. - **`client_code`** `string` — The client code. - **`date_time`** `string` — The start time of the call. - **`direction`** `string` — The direction of the call: \`inbound\`or \`outbound\`. - **`duration`** `integer` — The duration of the call in seconds. - **`forwarded_by`** `object` — This field indicates where the call was forwarded from. - **`extension_number`** `string` - **`extension_type`** `string`, possible values: `"user", "callQueue", "commonAreaPhone", "autoReceptionist", "sharedLineGroup"` - **`location`** `string` - **`name`** `string` - **`number_type`** `integer` — The phone number types: \`1\` - Extension \`2\`- E164 number \`3\` - Custom number. - **`phone_number`** `string` - **`forwarded_to`** `object` — This field indicates who the call was forwarded to. - **`extension_number`** `string` - **`location`** `string` - **`name`** `string` - **`number_type`** `integer` — The phone number types: \`1\` - Extension \`2\`- E164 number \`3\` - Custom number. - **`phone_number`** `string` - **`has_recording`** `boolean` — Whether the call has a recording. See \[announcement]\(https\://marketplace.zoom.us/docs/guides/stay-up-to-date/announcements#deprecation-of-the-has\_voicemail-and-has\_recording-responses-in-phone-api) from July, 2021. - **`has_voicemail`** `boolean` — Whether the call has a voicemail. See \[announcement]\(https\://marketplace.zoom.us/docs/guides/stay-up-to-date/announcements#deprecation-of-the-has\_voicemail-and-has\_recording-responses-in-phone-api) from July, 2021. - **`hold_time`** `integer` — The hold time during a call in seconds. - **`id`** `string` — The call log ID. - **`outgoing_by`** `object` - **`extension_number`** `string` - **`location`** `string` - **`name`** `string` - **`number_type`** `integer` — The phone number types: \`1\` - Extension \`2\`- E164 number \`3\` - Custom number. - **`phone_number`** `string` - **`path`** `string` — The path of the call log. - **`rate`** `string` — The billing rate for the call. - **`recording_type`** `string`, possible values: `"OnDemand", "Automatic"` — The recording type. \* \`On-demand\` recording. \* \`Automatic\` recording. - **`result`** `string` — The result of the call: \`Missed\` | \`Voicemail\` | \`Call connected\` | \`Rejected\` | \`Blocked\`| \`Busy\`| \`Wrong Number\`| \`No Answer\`| \`International Disabled\`| \`Internal Error\`| \`Call failed\` | \`Restricted Number\`| \`Call Cancel\` | \`Message\`| \`Answered by Other Member\` | \`Call Cancelled\` | \`Park\` | \`Parked\` | \`Blocked by non-GAL\` | \`Blocked by info-Barriers\` | \`Recording Failure\`| \`Recorded\`| \`Auto Recorded\`. - **`site`** `object` - **`id`** `string` — The target \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) in which the phone number was assigned. Sites allow you to organize the phone users in your organization. For example, your sites can be created based on different office locations. - **`name`** `string` — The name of the site where the phone number is assigned. - **`user_id`** `string` — The user ID or email. - **`waiting_time`** `integer` — The time (in seconds) spent waiting for the call to be connected. - **`sync_token`** `string` — The time range for returned records. Used for locating where the next retrieval will begin. **Example:** ```json { "call_logs": [ { "accepted_by": { "extension_number": "1009", "location": "Glendale CA", "name": "Display name", "number_type": 1, "phone_number": "+12055432724" }, "answer_start_time": "2021-10-08T16:10:04Z", "call_end_time": "2021-10-08T16:12:04Z", "call_id": "7006926284340112376", "callee_user_id": "IqoQmDRqS-aIoXqV_FZ88w", "callee_country_code": "1", "callee_country_iso_code": "US", "callee_did_number": "+12135551234", "callee_name": "Jan Dev", "callee_number": "101", "callee_number_type": 1, "callee_number_source": "internal", "caller_user_id": "IqoQmDRqS-aIoXqV_FZ88w", "caller_country_code": "1", "caller_country_iso_code": "US", "caller_did_number": "+18108001001", "caller_name": "Zoom", "caller_number": "+12095552345", "caller_number_type": 1, "caller_number_source": "internal", "caller_billing_reference_id": "ZoomTelecom123456", "charge": "$0.0255", "client_code": "123", "date_time": "2022-01-24T23:58:10Z", "direction": "inbound", "duration": 7, "forwarded_by": { "extension_number": "1009", "extension_type": "callQueue", "location": "Glendale CA", "name": "The display name", "number_type": 1, "phone_number": "+12055432724" }, "forwarded_to": { "extension_number": "1009", "location": "Glendale CA", "name": "Display name", "number_type": 1, "phone_number": "+12055432724" }, "id": "11f2bacb-37d8-4ae4-8d88-be657421266f", "outgoing_by": { "extension_number": "1009", "location": "Glendale CA", "name": "Display name", "number_type": 1, "phone_number": "+12055432724" }, "path": "callQueue", "rate": "$0.0255", "recording_type": "Automatic", "result": "Call connected", "site": { "id": "GNO-CItXQaLhqH3qfPD1kg", "name": "Main Site" }, "user_id": "IqoQmDRqS-aIoXqV_FZ88w", "hold_time": 5, "waiting_time": 47 } ], "sync_token": "SDVjM3NHRlNyMF8xNjQwODI3NTkyMzkwXzE2NDgwMTUzNTk0MzI=" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`300\` \
The sync token is invalid or expired. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a user's call log ⚠️ Deprecated - **Method:** `DELETE` - **Path:** `/phone/users/{userId}/call_logs/{callLogId}` - **Tags:** Call Logs Deletes a user's [call log](https://support.zoom.us/hc/en-us/articles/360021114452-Viewing-and-identifying-logs). For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites:** - User must belong to a Business or Enterprise account - User must have a Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin`,`phone_call_log:write`,`phone_call_log:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:call_log`,`phone:delete:call_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Log deleted. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
\*\*Error Code:\*\* \`124\` \
Invalid access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Call log information was not found for the following callLogId: {0}. \
\*\*Error Code:\*\* \`2001\` \
The account (accountId: {0}) does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List call queue analytics - **Method:** `GET` - **Path:** `/phone/call_queue_analytics` - **Tags:** Call Queues Returns the call queue analytics overview. **[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:list_call_queues:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\*Call Queues analytics listed successfully. ###### Content-Type: application/json - **`call_queues`** `array` — A list with call queue historical analytics data. **Items:** - **`abandoned_calls`** `integer` — The number of abandoned calls. - **`avg_handle_time`** `integer` — The average handle time for call in seconds. - **`avg_in_queue_wait_time`** `integer` — The average call wait time in seconds. - **`avg_wrap_up_time`** `integer` — The average wrap up time for calls in seconds. - **`call_queue_ext_id`** `string` — The extension of the call queue. - **`call_queue_id`** `string` — The unique identifier of the call queue. - **`call_queue_name`** `string` — The name of the call queue. - **`completed_calls`** `integer` — The number of completed calls. - **`inbound_calls`** `integer` — The number of inbound calls. - **`max_in_queue_wait_time`** `integer` — The max call wait time in seconds. - **`outbound_calls`** `integer` — The number of outbound calls. - **`outbound_connected_calls`** `integer` — The number of connected outbound calls. - **`outbound_unconnected_calls`** `integer` — The number of unconnected outbound calls. - **`overflowed_calls`** `integer` — The number of overflowed calls. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) where the call queue is assigned. - **`site_name`** `string` — The name of the site for the CQ. - **`from`** `string` — The start time and date of the log. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`to`** `string` — The end time and date of the log. **Example:** ```json { "call_queues": [ { "call_queue_id": "3PNsZB50TNev4pgBjtKeDw", "call_queue_name": "test call queue", "call_queue_ext_id": "8f71O6rWT8KFUGQmJIFAdQ", "inbound_calls": 500, "completed_calls": 450, "abandoned_calls": 40, "overflowed_calls": 10, "avg_handle_time": 180, "avg_wrap_up_time": 60, "avg_in_queue_wait_time": 30, "max_in_queue_wait_time": 120, "outbound_calls": 300, "outbound_connected_calls": 450, "outbound_unconnected_calls": 30, "site_name": "SJ Site", "site_id": "lA68sMSVQ6GAUcGg_GH0nQ" } ], "from": "2021-10-01", "to": "2021-10-12", "page_size": 30, "next_page_token": "AmhfoKtF2Ey4TaPg2iZsAcmetRLs2ZY0Sk2" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List call queues - **Method:** `GET` - **Path:** `/phone/call_queues` - **Tags:** Call Queues Call queues allow you to route incoming calls to a group of users. For instance, you can use call queues to route calls to various departments in your organization such as sales, engineering, billing, customer service etc. Use this API to list Call queues. **Prerequisites:** - Pro, Business, or Education account - Account owner or admin permissions - Zoom Phone license **[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:list_call_queues:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Call Queues listed successfully. ###### Content-Type: application/json - **`call_queues`** `array` **Items:** - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the queue. - **`id`** `string` — Unique identifier of the call queue. - **`name`** `string` — Name of the Call Queue. - **`phone_numbers`** `array` — Phone number(s) assigned to the call queue. **Items:** - **`id`** `string` — Unique identifier of the assigned phone number. - **`number`** `string` — The phone number. - **`source`** `string`, possible values: `"internal", "external"` — Source - **`site`** `object` - **`id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) where the Call Queue is assigned. - **`name`** `string` — Name of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`status`** `string`, possible values: `"active", "inactive"` — Status of the Call Queue. \`active\`: Call queue is enabled and active. \`inactive\`: Call queue is inactive. Inactive call queues cannot be called but will retain its settings and appear in the \[Call Queues]\(https\://zoom.us/pbx/page/telephone/groups#/groups) page. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned from a single API call. - **`total_records`** `integer` — The total number of records found for this query. **Example:** ```json { "call_queues": [ { "extension_id": "DgKe5UPTTlODBvcgmRIlPw", "extension_number": 26000026001, "id": "3PNsZB50TNev4pgBjtKeDw", "name": "ApiTA_2020_12_21_19_54_05_476", "phone_numbers": [ { "id": "KsxwNLEhQ0SJ4U4Bor4ShA", "number": "+12058945717", "source": "internal" } ], "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "status": "active" } ], "next_page_token": "OvrVMfenVmKgsH0SqfWQ2jgUsHFGXeanCB2", "page_size": 30, "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create a call queue - **Method:** `POST` - **Path:** `/phone/call_queues` - **Tags:** Call Queues [Creates a call queue](https://support.zoom.us/hc/en-us/articles/360021524831-Managing-Call-Queues#h_e81faeeb-9184-429a-aaea-df49ff5ff413). Call queues allow you to route incoming calls to a group of users. For instance, you can use call queues to route calls to various departments in your organization such as sales, engineering, billing, customer service, and so on. You can add phone users or common areas to call queues. **Prerequisites:** - Pro, Business, or Education account - Account owner or admin permissions - Zoom Phone license **[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:write:call_queue:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`name` (required)** `string` — The name of the call queue. - **`site_id` (required)** `string` — The unique identifier of the site. It's required only if \[multiple sites]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) have been enabled. This can be retrieved from the \[List Phone Sites]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#operation/listPhoneSites) API. - **`cost_center`** `string` — The cost center name. - **`department`** `string` — The department name. - **`description`** `string` — The description for the call queue. - **`extension_number`** `integer`, format: `int64` — The phone extension number for the site. If a site code has been \[assigned]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h\_79ca9c8f-c97b-4486-aa59-d0d9d31a525b) to the site, provide the short extension number instead of the original extension number. - **`members`** `object` — A list of one or more phone users to be included in the call queue. It provides either users or common area(s), or at least one user in the users object. - **`common_area_ids`** `array` — \*\*Optional\*\* The unique identifier of the \[common area]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods/#operation/listCommonAreas). This can be retrieved from the \[List Common Areas]\(https\://developers.zoom.us/docs/api/rest/reference/phone/methods/#operation/listCommonAreas) API. **Items:** `string` - **`users`** `array` — The object of the user. It provides either the 'id' (userId) field or the 'email address' of the user. **Items:** - **`email`** `string`, format: `email` — The email address of the user. It can be retrieved from the \[List users]\(https\://marketplace.zoom.us/docs/api-reference/zoom-api/methods#operation/users) API. - **`id`** `string` — The user ID. It can be retrieved from the \[List users]\(https\://marketplace.zoom.us/docs/api-reference/zoom-api/methods#operation/users) API. **Example:** ```json { "cost_center": "testCostCenter", "department": "testDepartment", "description": "testDescription", "extension_number": 10, "members": { "common_area_ids": [ "1pegM6NlSfCEP_jBCfX94A" ], "users": [ { "email": "2021050800001@testapi.com", "id": "dksc_wq67sach2_3jxs" } ] }, "name": "callhandling0001_Not_Delete", "site_id": "lA68sMSVQ6GAUcGg_GH0nQ" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Call queue created successfully. ###### Content-Type: application/json - **`extension_number`** `integer`, format: `int64` — The extension number assigned for the call queue. - **`id`** `string` — The unique identifier of the call queue. - **`name`** `string` — The name of the call queue. - **`status`** `string` — The status of the call queue. \`active\`: Call queue is enabled and active. \`inactive\`: Call queue is inactive. Inactive call queues cannot be called but will retain its settings and appear in the \[Call Queues]\(https\://zoom.us/pbx/page/telephone/groups#/groups) page. **Example:** ```json { "extension_number": 26000026010, "id": "IU8_1qAGS1Gf-3e56B_1Lw", "name": "callhandling0001_Not_Delete", "status": "active" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Multiple Site is disabled. Site does not exist. {extensionNumber} is out of range Exceeded the maximum number to add members per time \
\*\*Error Code:\*\* \`400\` \
Invalid short number length. Extension number {extensionNumber} is already used. \
\*\*Error Code:\*\* \`412\` \
The maximum number of Call Queue members is up to {maxSize}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User not found: {userId} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call queue details - **Method:** `GET` - **Path:** `/phone/call_queues/{callQueueId}` - **Tags:** Call Queues Routes incoming calls to a group of users and returns information on a specific call queue. For instance, you can use call queues to route calls to various departments in your organization such as sales, engineering, billing, customer service, and so on. **Prerequisites:** - Pro, Business, or Education account - Account owner or admin permissions - Zoom Phone license **[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:call_queue:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Call Queue details retrieved successfully. ###### Content-Type: application/json - **`audio_prompt_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The language for all default audio prompts for the Call Queue. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`cost_center`** `string` — The name of the cost center. - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` — English (US) \* \`en-GB\` — English (UK) \* \`es-US\` — Spanish (US) \* \`fr-CA\` — French (Canada) \* \`da-DK\` — Danish (Denmark) \* \`de-DE\` — German (Germany) \* \`es-ES\` — Spanish (Spain) \* \`fr-FR\` — French (France) \* \`it-IT\` — Italian (Italy) \* \`nl-NL\` — Dutch (Netherlands) \* \`pt-PT\` — Portuguese (Portugal) \* \`ja\` — Japanese \* \`ko-KR\` — Korean (Korea) \* \`pt-BR\` — Portuguese (Brazil) \* \`zh-CN\` — Chinese (PRC) - **`department`** `string` — The name of the department. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the call queue. - **`id`** `string` — The unique identifier of the call queue. - **`members`** `object` - **`common_areas`** `array` **Items:** - **`extension_id`** `string` — The extension ID of common area. - **`id`** `string` — The unique identifier of the common area. - **`name`** `string` — The name of the common area. - **`users`** `array` **Items:** - **`extension_id`** `string` — The extension ID of the user. - **`id`** `string` — The unique identifier of the user. - **`level`** `string`, possible values: `"manager", "user"` — The level of the user. The value can be one of the following: \`manager\`: A call queue manager has the privilege to change call queue settings, policy settings and manage recordings and voicemail inbox. There can only be one manager for each call queue. \`user\`: Regular user without the privileges of a manager. - **`name`** `string` — The name of the user. - **`receive_call`** `boolean` — Whether the user can receive calls or not. - **`name`** `string` — The name of the call queue. - **`own_storage_name`** `string` — The name of your own storage. Use your own storage provided by Oracle Cloud Infrastructure (OCI) to store Zoom Phone recordings, voicemails, and voicemail transcripts, and custom greeting prompts. - **`phone_numbers`** `array` **Items:** - **`id`** `string` — The unique identifier of the number. - **`number`** `string` — The phone number. - **`source`** `string`, possible values: `"internal", "external"` — The source. - **`policy`** `object` — The call queue policy list. - **`voicemail_access_members`** `array` — The shared voicemail access member list. **Items:** **All of:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or the unique identifier of the common area, depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of a member in the shared voicemail access member list. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the member has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the member has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the member has the permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The shared voicemail ID. - **`recording_storage_location`** `string`, possible values: `"US", "AU", "CA", "DE", "IN", "JP", "SG", "BR", "CN", "MX"` — Where recording will be stored. Recording includes Phone recordings, voicemail, voicemail transcripts, and custom greeting prompts. \* \`US\` : United States \* \`AU\` : Australia \* \`CA\` : Canada \* \`DE\` : Germany \* \`IN\` : India \* \`JP\` : Japan \* \`SG\` : Singapore \* \`BR\` : Brazil \* \`CN\` : China \* \`MX\` : Mexico \Note:\ \* If the setting is locked at the Account level, it can't be updated. - **`site`** `object` - **`id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) where the call queue is assigned. - **`name`** `string` — The name of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`status`** `string`, possible values: `"active", "inactive"` — The status of the call queue. - **`timezone`** `string` — \[Timezone]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones) of the Call Queue. **Example:** ```json { "cost_center": "testCostCenter", "department": "testDepartment", "extension_id": "DgKe5UPTTlODBvcgmRIlPw", "extension_number": 26000026001, "id": "3PNsZB50TNev4pgBjtKeDw", "members": { "users": [ { "id": "yNCY-HBHQ36rkXEXYTwu2g", "level": "user", "name": "APITA AUTO", "receive_call": true, "extension_id": "oeDyBe8zT2SzOZW6gQJXUA" } ], "common_areas": [ { "id": "HIlHzOEzS8ymQPFBZ-39AQ", "name": "Common Area", "extension_id": "HIlHzOEzS8ymQPFBZ-39AQ" } ] }, "name": "ApiTA_2020_12_21_19_54_05_476", "phone_numbers": [ { "id": "KsxwNLEhQ0SJ4U4Bor4ShA", "number": "+12058945717", "source": "internal" } ], "site": { "id": "lA68sMSVQ6GAUcGg_GH0nQ", "name": "ApiTA_Site_2020_07_12_00_42_50_109" }, "status": "active", "policy": { "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_download": false, "allow_delete": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ] }, "timezone": "Pacific/Midway", "audio_prompt_language": "en-US", "default_transcription_language": "en-US", "recording_storage_location": "US", "own_storage_name": "us-oracle-storage" } ``` ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13000\` \
The Call Queue does not exist, callQueueId:{callQueueId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a call queue - **Method:** `DELETE` - **Path:** `/phone/call_queues/{callQueueId}` - **Tags:** Call Queues Call queues allow you to route incoming calls to a group of users. For instance, you can use call queues to route calls to various departments in your organization such as sales, engineering, billing, customer service etc. Use this API to delete a Call Queue. **Prerequisites:** - Pro, Business, or Education account - Account owner or admin permissions - Zoom Phone license **[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:delete:call_queue:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Call Queue deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The group does not exist, groupId:{callQueueId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update call queue details - **Method:** `PATCH` - **Path:** `/phone/call_queues/{callQueueId}` - **Tags:** Call Queues Updates information of a specific call queue. Call queues allow you to route incoming calls to a group of users. For instance, you can use call queues to route calls to various departments in your organization such as sales, engineering, billing, customer service, and so on. **Prerequisites:** - Pro, Business, or Education account - Account owner or admin permissions - Zoom Phone license **[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:call_queue:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`audio_prompt_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The language for all default audio prompts for the Call Queue. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`cost_center`** `string` — The cost center name. - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` — English (US) \* \`en-GB\` — English (UK) \* \`es-US\` — Spanish (US) \* \`fr-CA\` — French (Canada) \* \`da-DK\` — Danish (Denmark) \* \`de-DE\` — German (Germany) \* \`es-ES\` — Spanish (Spain) \* \`fr-FR\` — French (France) \* \`it-IT\` — Italian (Italy) \* \`nl-NL\` — Dutch (Netherlands) \* \`pt-PT\` — Portuguese (Portugal) \* \`ja\` — Japanese \* \`ko-KR\` — Korean (Korea) \* \`pt-BR\` — Portuguese (Brazil) \* \`zh-CN\` — Chinese (PRC) - **`department`** `string` — The department name. - **`description`** `string` — The description for the call queue. - **`extension_number`** `integer`, format: `int64` — The phone extension number for the site. If a site code has been \[assigned]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h\_79ca9c8f-c97b-4486-aa59-d0d9d31a525b) to the site, provide the short extension number instead of the original extension number. - **`name`** `string` — The name of the call queue. - **`recording_storage_location`** `string`, possible values: `"US", "AU", "CA", "DE", "IN", "JP", "SG", "BR", "CN", "MX"` — Where the recording will be stored. Recording includes phone recordings, voicemails, voicemail transcripts, and custom greeting prompts. \* \`US\` : United States \* \`AU\` : Australia \* \`CA\` : Canada \* \`DE\` : Germany \* \`IN\` : India \* \`JP\` : Japan \* \`SG\` : Singapore \* \`BR\` : Brazil \* \`CN\` : China \* \`MX\` : Mexico \Note:\ \* If the setting is locked at the Account Level, it can't be updated. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) where the call queue is assigned. - **`status`** `string`, possible values: `"active", "inactive"` — The status of the call queue. Allowed values: \`active\` \`inactive\` - **`timezone`** `string` — The \[timezone]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones) of the call queue. **Example:** ```json { "cost_center": "Cost center", "department": "Department", "description": "Description", "extension_number": 10, "name": "Call Queue", "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "status": "active", "timezone": "Pacific/Midway", "audio_prompt_language": "en-US", "default_transcription_language": "en-US", "recording_storage_location": "US" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Call Queue details updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. The group does not exist, groupId:{groupId} Timezone not found in the system. \
\*\*Error Code:\*\* \`400\` \
Unable to update this call queue as it is used for internal safety response team. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List call queue members - **Method:** `GET` - **Path:** `/phone/call_queues/{callQueueId}/members` - **Tags:** Call Queues Returns a list of call queue members. **Prerequisites:** - Pro, Business, or Education account - Account owner or admin permissions - Zoom Phone license **[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:list_call_queue_members:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Call Queue members listed successfully. ###### Content-Type: application/json - **`call_queue_members`** `array` **Items:** - **`extension_id`** `string` — The extension ID of the user or common area. - **`id`** `string` — The member ID. - **`level`** `string`, possible values: `"commonArea", "user"` — The level of the member. - **`name`** `string` — The name of the user or common area. - **`receive_call`** `boolean` — Whether the user can receive calls. It displays if the level is user. - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The number of records returned from a single API call. - **`total_records`** `integer` — The total number of records found for this query. **Example:** ```json { "call_queue_members": [ { "id": "yNCY-HBHQ36rkXEXYTwu2g", "level": "user", "name": "APITA AUTO", "receive_call": true, "extension_id": "oeDyBe8zT2SzOZW6gQJXUA" } ], "next_page_token": "OvrVMfenVmKgsH0SqfWQ2jgUsHFGXeanCB2", "page_size": 30, "total_records": 1 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add members to a call queue - **Method:** `POST` - **Path:** `/phone/call_queues/{callQueueId}/members` - **Tags:** Call Queues Adds phone users or [common areas](https://support.zoom.us/hc/articles/4481136653709) as members to a specific call queue. **Prerequisites:** - Pro or higher account plan. - Zoom Phone license **[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:write:call_queue_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`members`** `object` — A maximum of 10 members can be added at a time. - **`common_area_ids`** `array` — \*\*Optional\*\* The unique identifier of the \[Common Area]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods/#operation/listCommonAreas). You can retrieve it from the List Common Areas API. **Items:** `string` - **`users`** `array` **Items:** - **`email`** `string`, format: `email` — The email address of the user. - **`id`** `string` — The user ID or the unique identifier of the user. **Example:** ```json { "members": { "common_area_ids": [ "iewGNg-LSYa0ghhkr4d0Hg" ], "users": [ { "email": "callhandling0001@testapi.com", "id": "wh23uihdqw-43iwdn" } ] } } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Members added successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. The group does not exist, groupId:{callQueueId}. Exceeded the maximum number to add members per time. \
\*\*Error Code:\*\* \`412\` \
The maximum number of Call Queue members is up to {maxSize}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User not found: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign all members - **Method:** `DELETE` - **Path:** `/phone/call_queues/{callQueueId}/members` - **Tags:** Call Queues Removes all members from a call queue who were previously assigned to that call queue. The members could be phone users or [common areas](https://support.zoom.us/hc/articles/4481136653709). **Prerequisites:** - Pro or higher account plan. - Zoom Phone license **[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:delete:call_queue_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Member unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. The group does not exist, groupId:{callQueueId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign a member - **Method:** `DELETE` - **Path:** `/phone/call_queues/{callQueueId}/members/{memberId}` - **Tags:** Call Queues Removes a member who was previously added to a call queue. The member could be a phone user or common area. Note that you cannot use this API to unassign a call queue manager. **Prerequisites:** - Pro or higher account plan. - Zoom Phone license **[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:delete:call_queue_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Member unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. The group does not exist, groupId:{callQueueId}. \*\*Error Code:\*\* \`400\` \
Unable to delete manager ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign numbers to a call queue - **Method:** `POST` - **Path:** `/phone/call_queues/{callQueueId}/phone_numbers` - **Tags:** Call Queues Assigns numbers to a call queue. After [buying phone number(s)](https://support.zoom.us/hc/en-us/articles/360020808292#h_007ec8c2-0914-4265-8351-96ab23efa3ad), you can assign it and allow callers to directly dial a number to reach a [call queue](https://support.zoom.us/hc/en-us/articles/360021524831-Managing-Call-Queues). **Prerequisites:** - Pro or higher account plan * Account owner or admin permissions - Zoom Phone license **[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:write:call_queue_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`phone_numbers`** `array` — This field provides either the \`id\` or the \`number\` field. Only a maximum of five numbers can be assigned to a call queue at a time. **Items:** - **`id`** `string` — The unique identifier of the phone number. - **`number`** `string` — The phone number. **Example:** ```json { "phone_numbers": [ { "id": "MbXwdYC0R3GsbUy4iJ7IbQ", "number": "+12058945456" } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Call Queue does not exist: {callQueueId}. \
\*\*Error Code:\*\* \`400\` \
Need to specify at least one phone number \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign all phone numbers - **Method:** `DELETE` - **Path:** `/phone/call_queues/{callQueueId}/phone_numbers` - **Tags:** Call Queues Unbinds all phone numbers that are assigned to a [call queue](https://support.zoom.us/hc/en-us/articles/360021524831-Managing-Call-Queues). After successful unbinding, the numbers will appear in the [Unassigned tab](https://zoom.us/signin#/numbers/unassigned). If you only need to unassign a specific phone number, use the Unassign a Phone Number API instead. **Prerequisites:** - Pro or higher account palan - Account owner or admin permissions - Zoom Phone license **[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:delete:call_queue_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone numbers unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. The group does not exist, groupId:{callQueueId} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign a phone number - **Method:** `DELETE` - **Path:** `/phone/call_queues/{callQueueId}/phone_numbers/{phoneNumberId}` - **Tags:** Call Queues Unbinds a phone number from a call queue. After assigning a phone number, you can unbind it if you don't want it to be assigned to a [call queue](https://support.zoom.us/hc/en-us/articles/360021524831-Managing-Call-Queues). After successful unbinding, the number will appear in the [Unassigned tab](https://zoom.us/signin#/numbers/unassigned). **Prerequisites:** - Pro or higher account palan - Account owner or admin permissions - Zoom Phone license **[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:delete:call_queue_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone Number unassigned successfuly. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation failed. The group does not exist, groupId:{callQueueId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Phone number not belong to call queue. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call queue policy - **Method:** `GET` - **Path:** `/phone/call_queues/{callQueueId}/policies` - **Tags:** Call Queues Returns the policy setting of a specific \[call queue]. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:call_queue_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Call queue policy settings retrieved successfully. ###### Content-Type: application/json - **`ad_hoc_call_recording_for_members`** `object` — When enabled, queue member User policy for ad-hoc recording will control whether individual queue members can record. Recordings will be owned by the users. When disabled, queue members cannot record calls for this queue regardless of their User policy. - **`enable`** `boolean` — Whether to enabe Ad Hoc Call Recording for Queue Calls. - **`auto_answer_call_queue_calls`** `object` — Allows call queue members to auto-answer incoming calls on a desktop client. Current call routing and distribution won't be affected. - **`enable`** `boolean` — Whether Auto-answer call queue calls is enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`auto_call_recording`** `object` — Automatically record all inbound and outbound calls - **`allow_stop_resume_recording`** `boolean` — Whether users can stop and resume recording. - **`disconnect_on_recording_failure`** `boolean` — Whether to disconnect the call when recording fails. - **`enable`** `boolean` — Whether Automatic Call Recording is enabled. - **`inbound_audio_notification`** `object` — Inbound audio notification settings. - **`recording_explicit_consent`** `boolean` — Whether explicit consent is required for inbound recording. - **`recording_start_prompt`** `boolean` — Whether to play the inbound recording start prompt. - **`recording_start_prompt_audio_id`** `string` — The unique identifier of the inbound recording start prompt audio file. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`outbound_audio_notification`** `object` — Outbound audio notification settings. - **`recording_explicit_consent`** `boolean` — Whether explicit consent is required for outbound recording. - **`recording_start_prompt`** `boolean` — Whether to play the outbound recording start prompt. - **`recording_start_prompt_audio_id`** `string` — The unique identifier of the outbound recording start prompt audio file. - **`play_recording_beep_tone`** `object` — Plays a recording beep tone. - **`enable`** `boolean` — Whether to play the side tone beep for recorded users while recording. It displays only when auto call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when the \`enable\` is set to true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when the \`enable\` is set to true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The side tone beep volume. It displays only when \`enable\` is set to \`true\`. - **`recording_calls`** `string`, possible values: `"inbound_and_outbound", "inbound", "outbound"` — This field enables you to record calls. - **`recording_transcription`** `boolean` — Whether to allow transcription. - **`auto_delete_data_after_retention_duration`** `object` — Allows Zoom to automatically delete data after retention duration. Requires the Advanced Retention account feature to be enabled. - **`delete_type`** `integer`, possible values: `1, 2` — The deletion policy. \* 1 - soft delete \* 2 - permanent delete - **`enable`** `boolean` — Whether auto deletion of data after retention duration is enabled. - **`items`** `array` — This field enables you to delete items. **Items:** - **`duration`** `integer` — The retention duration where -1 means unlimited. For units of time, see the \`time\_unit\` below. For \`year\`, the duration:-1, 1-10; for \`day\`, the duration:-1, 1-60; for \`month\`, the duration:-1, 1-18. - **`time_unit`** `string`, possible values: `"day"` — The unit of time. - **`type`** `string`, possible values: `"callLog", "automaticRecording", "voicemail", "sms", "fax"` — The data types. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. If true, the settings can be reset. - **`permanently_delete_after_days`** `integer` — The number of days after which the data will be permanently deleted automatically. Use -1 to retain data indefinitely. - **`block_calls_without_caller_id`** `object` — Calls without caller ID will be blocked. - **`enable`** `boolean` — Whether Block calls without caller ID is enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`call_queue_opt_out_reason`** `object` — Sets the opt-out reasons for Call Queues. When enabled, Call Queue members will need to select an opt-out reason when they turn off receive queue call feature. - **`call_queue_opt_out_reasons_list`** `array` — The opt-out reasons list. **Items:** - **`code`** `string` — The opt-out reason text. - **`enable`** `boolean` — Whether the opt-out reason is enabled. - **`system`** `boolean` — Whether this is a built-in system reason. - **`enable`** `boolean` — Whether Call Queue Opt-out Reason is enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`call_queue_pickup_code`** `object` — After enabling the feature, a unique pickup code will be generated for this queue which can be customized in the Call Queue profile. - **`enable`** `boolean` — Whether Call Queue Pickup Code is enabled. - **`call_screening`** `object` — Incoming direct external callers will be prompted to respond to a button to reach users, callers who don't respond will be disconnected. Devices will not be able to receive any third party faxes. - **`enable`** `boolean` — Whether Call Screening is enabled. - **`exclude_user_company_contacts`** `boolean` — Whether to exclude user and company contacts from call screening, calls will reach users as normal - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`online_fax`** `object` — Allows call queue to receive faxes. - **`enable`** `boolean` — Whether Online Fax is enabled. - **`enable_outbound_fax_transmission_report`** `boolean` — Whether to enable transmission report for outbound faxes. - **`fax_notification_by_email`** `boolean` — Whether to enable email notifications when a new fax is received. - **`fax_notification_email_list`** `array` — The email list. **Items:** `string` — The fax notification email address. - **`include_fax_as_attachment`** `boolean` — Whether to include fax file as email attachment. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`sms`** `object` — Call Queue members assigned with Zoom Phone Customer Engagement Pack Plan will receive messages sent to this call queue and also be able to send messages by using this call queue's number as the caller ID. - **`enable`** `boolean` — Whether SMS is enabled. - **`international_sms`** `boolean` — Whether to allow International SMS. - **`international_sms_countries`** `array` — The country or region. **Items:** `string` — The supported country or region code. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`sms_auto_reply`** `object` — Enables SMS Auto Reply feature for Call Queue. All the Call Queue members must have a Power Pack license for this feature to work. - **`auto_reply_for_inbound_message`** `object` — SMS auto-reply configurations for inbound message. - **`active`** `boolean` — The current status of the auto-reply configuration. - **`content`** `string` — The text content of the auto-reply message. - **`trigger_event_type`** `string`, possible values: `"closed_hours", "always"` — When the auto-reply message is sent. \`closed\_hours\` sends the reply only when the auto receptionist is outside of business hours; \`always\` sends the reply at all times. - **`enable`** `boolean` — Whether SMS Auto Reply is enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`sms_template`** `object` — Uses pre-defined templates to help users compose messages. - **`enable`** `boolean` — Whether SMS Templates is enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`sms_template_list`** `array` — The SMS templates list. **Items:** - **`active`** `boolean` — Whether the template is active at this level. - **`content`** `string` — The template content. - **`description`** `string` — The template description. - **`name`** `string` — The template name. - **`sms_template_id`** `string` — The unique identifier of the SMS template. - **`team_sms_thread_summary`** `object` — Allows users to summarize and extract tasks from English SMS conversations. The time period is 24 hours from the last message. Team SMS only applies to SMS conversations from Auto Receptionist and Call Queue phone numbers and requires a Power Pack license. - **`enable`** `boolean` — Whether Team SMS thread summary with AI Companion is enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`voicemail_notification_by_email`** `object` — Once enabled, members in the Access Member List will receive email notifications when there is a new voicemail for this call queue. - **`enable`** `boolean` — Whether Voicemail notification by email is enabled. - **`forward_email_list`** `array` — The email list. **Items:** `string` — The recipient email address. - **`forward_voicemail_to_email`** `boolean` — The specified email addresses will receive a copy of the notification email when there is a new voicemail from the call queue. - **`include_voicemail_file`** `boolean` — The include voicemail file. - **`include_voicemail_transcription`** `boolean` — The include voicemail transcription. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. - **`voicemail_transcription`** `object` — When this setting is enabled, voicemail transcriptions will be created and remain accessible even if the setting is later disabled. If the setting is disabled, new voicemail and videomail transcriptions will not be generated. - **`enable`** `boolean` — Whether Voicemail Transcription is enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. **Example:** ```json { "voicemail_transcription": { "enable": true, "locked": false, "locked_by": "invalid", "modified": true }, "voicemail_notification_by_email": { "enable": true, "locked": false, "locked_by": "site", "modified": false, "include_voicemail_file": true, "include_voicemail_transcription": true, "forward_voicemail_to_email": true, "forward_email_list": [ "vm-alerts@example.com" ] }, "auto_call_recording": { "enable": true, "locked": false, "locked_by": "invalid", "modified": true, "recording_calls": "inbound_and_outbound", "recording_transcription": true, "allow_stop_resume_recording": true, "disconnect_on_recording_failure": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "inbound_audio_notification": { "recording_start_prompt": true, "recording_start_prompt_audio_id": "Q6wPZB5kT3S6aL9cM1nR2Q", "recording_explicit_consent": false }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_start_prompt_audio_id": "H6nM5cV4bX3zA2sD1fG7QW", "recording_explicit_consent": false } }, "ad_hoc_call_recording_for_members": { "enable": true }, "sms": { "enable": true, "locked": false, "locked_by": "invalid", "modified": true, "international_sms": false, "international_sms_countries": [ "US" ] }, "call_queue_pickup_code": { "enable": true }, "online_fax": { "enable": true, "locked": false, "locked_by": "invalid", "modified": false, "fax_notification_by_email": true, "fax_notification_email_list": [ "vm-alerts@example.com" ], "include_fax_as_attachment": true, "enable_outbound_fax_transmission_report": true }, "sms_template": { "enable": true, "locked": false, "locked_by": "invalid", "modified": true, "sms_template_list": [ { "sms_template_id": "a53ff4ee-0af3-4732-b9ea-6d6b782a5f9f", "name": "Follow-up reply", "description": "General follow-up template", "content": "Thanks for contacting us. We will follow up shortly.", "active": true } ] }, "sms_auto_reply": { "enable": true, "locked": false, "locked_by": "invalid", "modified": false, "auto_reply_for_inbound_message": { "trigger_event_type": "closed_hours", "content": "Thank you for contacting us. We are currently closed and will respond during business hours.", "active": true } }, "call_screening": { "enable": true, "locked": false, "locked_by": "invalid", "modified": true, "exclude_user_company_contacts": true }, "block_calls_without_caller_id": { "enable": true, "locked": false, "locked_by": "invalid", "modified": false }, "call_queue_opt_out_reason": { "enable": true, "locked": false, "locked_by": "invalid", "modified": true, "call_queue_opt_out_reasons_list": [ { "code": "Lunch break", "system": false, "enable": true } ] }, "auto_answer_call_queue_calls": { "enable": false, "locked": false, "locked_by": "site", "modified": false }, "auto_delete_data_after_retention_duration": { "enable": false, "locked": false, "locked_by": "invalid", "modified": false, "items": [ { "type": "callLog", "duration": -1, "time_unit": "day" } ], "delete_type": 1, "permanently_delete_after_days": -1 }, "team_sms_thread_summary": { "enable": true, "locked": false, "locked_by": "invalid", "modified": true } } ``` ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Call Queue does not exist: {callQueueId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Update call queue policy - **Method:** `PATCH` - **Path:** `/phone/call_queues/{callQueueId}/policies` - **Tags:** Call Queues Updates a call queue's policy settings. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[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:call_queue_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`ad_hoc_call_recording_for_members`** `object` — When enabled, queue member User policy for ad-hoc recording will control whether individual queue members can record. Recordings will be owned by the users. When disabled, queue members cannot record calls for this queue regardless of their User policy. - **`enable`** `boolean` — Whether to allow member Ad Hoc Call Recording for Queue Calls to be enabled. - **`auto_answer_call_queue_calls`** `object` — Allows call queue members to auto-answer incoming calls on a desktop client. Current call routing and distribution won't be affected. - **`enable`** `boolean` — Whether Auto-answer call queue calls is enabled. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`auto_call_recording`** `object` — Automatically records all inbound and outbound calls. - **`allow_stop_resume_recording`** `boolean` — Whether users can stop and resume recording. - **`disconnect_on_recording_failure`** `boolean` — Whether to disconnect the call when recording fails. - **`enable`** `boolean` — Whether Automatic Call Recording is enabled. - **`inbound_audio_notification`** `object` — Inbound audio notification settings. - **`recording_explicit_consent`** `boolean` — Whether explicit consent is required for inbound recording. - **`recording_start_prompt`** `boolean` — Whether to play the inbound recording start prompt. - **`recording_start_prompt_audio_id`** `string` — The unique identifier of the inbound recording start prompt audio file. - **`outbound_audio_notification`** `object` — Outbound audio notification settings. - **`recording_explicit_consent`** `boolean` — Whether explicit consent is required for outbound recording. - **`recording_start_prompt`** `boolean` — Whether to play the outbound recording start prompt. - **`recording_start_prompt_audio_id`** `string` — The unique identifier of the outbound recording start prompt audio file. - **`play_recording_beep_tone`** `object` — Plays a recording beep tone. - **`enable`** `boolean` — Whether to play the side tone beep for recorded users while recording. It displays only when auto call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when the \`enable\` is set to true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when the \`enable\` is set to true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The side tone beep volume. It displays only when \`enable\` is set to \`true\`. - **`recording_calls`** `string`, possible values: `"inbound_and_outbound", "inbound", "outbound"` — This field enables you to record calls. - **`recording_explicit_consent`** `boolean` — Whether explicit consent is required before recording. - **`recording_transcription`** `boolean` — Whether to allow transcriptions. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`auto_delete_data_after_retention_duration`** `object` — Allows Zoom to automatically delete data after retention duration. Requires the Advanced Retention account feature to be enabled. - **`delete_type`** `integer`, possible values: `1, 2` — The deletion policy. \* 1 - soft delete \* 2 - permanent delete - **`enable`** `boolean` — Whether auto deletion of data after retention duration is enabled. - **`items`** `array` — The retention policy configurations for different data types. **Items:** - **`duration`** `integer` — The retention duration in the specified time unit. Use -1 for unlimited retention. - **`time_unit`** `string`, possible values: `"day"` — The time unit for the retention duration. - **`type`** `string`, possible values: `"callLog", "automaticRecording", "voicemail", "sms", "fax"` — The type of data subject to the retention policy. - **`permanently_delete_after_days`** `integer` — The number of days after which the data will be permanently deleted automatically. Use -1 to retain data indefinitely. - **`reset`** `boolean` — Whether to reset this setting to inherited defaults from the parent level. - **`block_calls_without_caller_id`** `object` — Calls without caller ID will be blocked. - **`enable`** `boolean` — Whether Block calls without caller ID is enabled. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`call_queue_opt_out_reason`** `object` — Sets the opt-out reasons for Call Queues. When enabled, Call Queue members will need to select an opt-out reason when they turn off receive queue call feature. - **`call_queue_opt_out_reasons_list`** `array` — The opt-out reasons list **Items:** - **`code`** `string` — The opt-out reason text. - **`enable`** `boolean` — Whether the opt-out reason is enabled. - **`enable`** `boolean` — Whether Call Queue Opt-out Reason is enabled. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`call_queue_pickup_code`** `object` — After enabling the feature, a unique pickup code will be generated for this queue which can be customized in the Call Queue profile. - **`enable`** `boolean` — Whether the Call Queue Pickup Code is enabled. - **`call_screening`** `object` — Incoming direct external callers will be prompted to respond to a button to reach users. Callers who don't respond will be disconnected. Devices will not be able to receive any third party faxes. - **`enable`** `boolean` — Whether Call Screening is enabled. - **`exclude_user_company_contacts`** `boolean` — Excludes the user and company contacts from call screening. Calls will reach users as normal. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`online_fax`** `object` — Allows call queue to receive faxes. - **`enable`** `boolean` — Whether Online Fax is enabled. - **`enable_outbound_fax_transmission_report`** `boolean` — Whether to enable transmission report for outbound faxes. - **`fax_notification_by_email`** `boolean` — Whether to enable email notifications when a new fax is received. - **`fax_notification_email_list`** `array` — The email list. **Items:** `string` — The fax notification email address. - **`include_fax_as_attachment`** `boolean` — Whether to include fax file as email attachment. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`sms`** `object` — Call Queue members assigned with Zoom Phone Power Pack Plan will receive messages sent to this call queue and also be able to send messages by using this call queue's number as the caller ID. - **`enable`** `boolean` — Whether SMS is enabled. - **`international_sms`** `boolean` — Whether to allow International SMS. - **`international_sms_countries`** `array` — The country or region. **Items:** `string` — The supported country or region code. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`sms_auto_reply`** `object` — Enables SMS Auto Reply feature for Call Queue. All the Call Queue members must have a Power Pack license for this feature to work. - **`auto_reply_for_inbound_message`** `object` — SMS auto-reply configurations for inbound message. - **`active`** `boolean` — The current status of the auto-reply configuration. - **`content`** `string` — The text content of the auto-reply message. - **`trigger_event_type`** `string`, possible values: `"closed_hours", "always"` — When the auto-reply message is sent. \`closed\_hours\` sends the reply only when the auto receptionist is outside of business hours; \`always\` sends the reply at all times. - **`enable`** `boolean` — Whether SMS Auto Reply is enabled. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`sms_template`** `object` — Uses pre-defined templates to help users compose messages. - **`enable`** `boolean` — Whether SMS Templates is enabled. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`sms_template_list`** `array` — The SMS templates list. **Items:** - **`active`** `boolean` — Whether the template is active at this level. - **`sms_template_id`** `string` — The unique identifier of the SMS template. - **`team_sms_thread_summary`** `object` — Allows users to summarize and extract tasks from English SMS conversations. The time period is 24 hours from the last message. Team SMS only applies to SMS conversations from Auto Receptionist and Call Queue phone numbers and requires a Power Pack license. - **`enable`** `boolean` — Whether Team SMS thread summary with AI Companion is enabled. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`voicemail_notification_by_email`** `object` — Once enabled, members in the Access Member List will receive email notifications when there is a new voicemail for this call queue. - **`enable`** `boolean` — Whether Voicemail notification by email is enabled. - **`forward_email_list`** `array` — The email list. **Items:** `string` — The recipient email address. - **`forward_voicemail_to_email`** `boolean` — Whether to specify the email addresses that will receive a copy of the notification email when there is a new voicemail from the call queue. - **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. - **`voicemail_transcription`** `object` — When this setting is enabled, voicemail transcriptions will be created and remain accessible even if the setting is later disabled. If the setting is disabled, new voicemail and videomail transcriptions will not be generated. - **`enable`** `boolean` — Whether Voicemail Transcription is enabled. - **`reset`** `boolean` — Whether to reset the setting to the inherited value. **Example:** ```json { "voicemail_transcription": { "enable": true, "reset": false }, "voicemail_notification_by_email": { "enable": true, "reset": false, "include_voicemail_file": true, "include_voicemail_transcription": true, "forward_voicemail_to_email": true, "forward_email_list": [ "vm-alerts@example.com" ] }, "auto_call_recording": { "enable": true, "reset": false, "recording_calls": "inbound_and_outbound", "recording_transcription": false, "recording_explicit_consent": false, "allow_stop_resume_recording": true, "disconnect_on_recording_failure": false, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "inbound_audio_notification": { "recording_start_prompt": true, "recording_start_prompt_audio_id": "Q6wPZB5kT3S6aL9cM1nR2Q", "recording_explicit_consent": false }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_start_prompt_audio_id": "H6nM5cV4bX3zA2sD1fG7QW", "recording_explicit_consent": false } }, "ad_hoc_call_recording_for_members": { "enable": true }, "sms": { "enable": true, "reset": false, "international_sms": false, "international_sms_countries": [ "US" ] }, "call_queue_pickup_code": { "enable": true }, "online_fax": { "enable": true, "reset": false, "fax_notification_by_email": true, "fax_notification_email_list": [ "vm-alerts@example.com" ], "include_fax_as_attachment": true, "enable_outbound_fax_transmission_report": true }, "sms_template": { "enable": true, "reset": false, "sms_template_list": [ { "sms_template_id": "a53ff4ee-0af3-4732-b9ea-6d6b782a5f9f", "active": true } ] }, "sms_auto_reply": { "enable": true, "reset": false, "auto_reply_for_inbound_message": { "trigger_event_type": "closed_hours", "content": "Thank you for contacting us. We are currently closed and will respond during business hours.", "active": true } }, "call_screening": { "enable": true, "reset": false, "exclude_user_company_contacts": true }, "block_calls_without_caller_id": { "enable": true, "reset": false }, "call_queue_opt_out_reason": { "enable": true, "reset": false, "call_queue_opt_out_reasons_list": [ { "code": "Lunch break", "enable": true } ] }, "auto_answer_call_queue_calls": { "enable": false, "reset": false }, "auto_delete_data_after_retention_duration": { "enable": false, "reset": false, "items": [ { "type": "voicemail", "time_unit": "day", "duration": 180 } ], "delete_type": 1, "permanently_delete_after_days": -1 }, "team_sms_thread_summary": { "enable": true, "reset": false } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Call queue policy settings updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13802\` \
Audio does not exist: {audioId}. \
\*\*Error Code:\*\* \`13803\` \
SMS template does not exist: {sms\_template\_id}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Call Queue does not exist: {callQueueId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Add a policy subsetting to a call queue - **Method:** `POST` - **Path:** `/phone/call_queues/{callQueueId}/policies/{policyType}` - **Tags:** Call Queues Adds the policy subsetting for a specific [call queue](https://support.zoom.us/hc/en-us/articles/360021524831) according to the `policyType`. For example, you can use set up shared access members. **Prerequisites:** - Pro or higher account with Zoom Phone license. - Account owner or admin privileges **[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:write:call_queue_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`voicemail_access_members`** `array` — The shared voicemail access member list. The number is limited to the minimum value of 10 or the number of allowed access members account setting. **Items:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or the unique identifier of the common area, depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. The default type will be user if empty. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the member has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the member has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the member has the permission to share. The default is \*\*false\*\*. **Example:** ```json { "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_download": false, "allow_delete": false, "allow_sharing": false } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code\*\* \`201\` Created Successfully. ###### Content-Type: application/json - **`voicemail_access_members`** `array` — The shared access member list. **Items:** **All of:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or unique identifier of the common area depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the member has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the member has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the member has the permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The shared voicemail ID. **Example:** ```json { "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_download": false, "allow_delete": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13000\` \
The Call Queue does not exist, callQueueId:{callQueueId}. \
\*\*Error Code:\*\* \`13001\` \
Invalid value for parameter {policyType}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a CQ policy setting - **Method:** `DELETE` - **Path:** `/phone/call_queues/{callQueueId}/policies/{policyType}` - **Tags:** Call Queues Use this API to remove the policy sub-setting for a specific [call queue](https://support.zoom.us/hc/en-us/articles/360021524831) according to the `policyType`. For example, you can use this API to remove shared access members. **Prerequisites:** - Pro or higher account with Zoom Phone license. - Account owner or admin privileges **[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:delete:call_queue_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13000\` \
The Call Queue does not exist, callQueueId:{callQueueId}. \
\*\*Error Code:\*\* \`13001\` \
Invalid value for parameter {policyType}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a call queue's policy subsetting - **Method:** `PATCH` - **Path:** `/phone/call_queues/{callQueueId}/policies/{policyType}` - **Tags:** Call Queues Updates the policy subsetting for a specific [call queue](https://support.zoom.us/hc/en-us/articles/360021524831) according to the `policyType`. For example, you can use this API to update shared access members. **Prerequisites:** - Pro or higher account with Zoom Phone license. - Account owner or admin privileges **[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:call_queue_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`voicemail_access_members`** `array` — The shared voicemail access member list. The maximum number of allowed access members follows the setting in your account. **Items:** **All of:** - **`access_user_id`** `string` — The member's ID or email in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or the unique identifier of the common area, depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. The default type will be user if empty. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the member has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the member has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the member has the permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The shared voicemail ID. **Example:** ```json { "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_download": false, "allow_delete": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13000\` \
The Call Queue does not exist, callQueueId:{callQueueId}. \
\*\*Error Code:\*\* \`13001\` \
Invalid value for parameter {policyType}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call queue recordings - **Method:** `GET` - **Path:** `/phone/call_queues/{callQueueId}/recordings` - **Tags:** Call Queues Use this API to view [call recordings](https://support.zoom.us/hc/en-us/articles/360038521091#h_cbc9f2a3-e06c-4daa-83d4-ddbceef9c77b) from the call queue. **Prerequisites:** - Pro or higher account with Zoom Phone license. - [Automatic call recordings](https://support.zoom.us/hc/en-us/articles/360033511872#h_fcb297bb-14e8-4094-91ca-dc61e1a18734) must be enabled in the Policy Settings for call queues. **[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:list_call_queue_recordings:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`from`** `string` — Start date. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned within a single API call. - **`recordings`** `array` **Items:** - **`callee_name`** `string` — Contact name of the callee. - **`callee_number`** `string` — Number of the callee. - **`callee_number_type`** `string`, possible values: `"1", "2", "3"` — The callee's number type: \* \`1\` \— Internal number. \* \`2\` \— External number. \* \`3\` \— Customized emergency number. - **`caller_name`** `string` — Name of the caller. - **`caller_number`** `string` — Phone number of the caller. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` \— Internal number. \* \`2\` \— External number. - **`date_time`** `string`, format: `date` — Date of the recording. - **`direction`** `string` — Direction of call. The value of this field can be either \`outbound\` or \`inbound\`. - **`download_url`** `string` — URL using which the recording can be downloaded. - **`duration`** `integer` — Duration of the call. - **`id`** `string` — Unique identifier of the recording. - **`to`** `string` — End date. - **`total_records`** `integer` — The total number of records returned for this API call. **Example:** ```json { "from": "2022-03-26", "next_page_token": "OvrVMfenVmKgsH0SqfWQ2jgUsHFGXeanCB2", "page_size": 30, "recordings": [ { "callee_name": "APITA AUTO", "callee_number": "+12058945717", "callee_number_type": "1", "caller_name": "ZOOM_API Test", "caller_number": "+12055432724", "caller_number_type": 1, "date_time": "2022-04-01", "direction": "inbound", "download_url": "https://file.zoomdev.us/file?filename=call_recording_080e-2cba-4315-a963-81ce9635e_20220401031509.mp3&jwt=eyJhbGciNiJ9.eyJka0NzZiNjQyYjhkZjRlN2E3ZTgxNjU4MmEzMWQ4NjE3NjkyNjNjYmQ0NDJhM2QzYzY3NTZjIiwiaXNzIjoiwiYXVkIjoiZmlsZSIsImlhdCI6MTY0ODV4cCI6MTY0ODc4NTMxN30.azPOfIrODv6v6-7YWwvBWAqysJy_xe_FAI&path=zoomfs%3A%2F%2Fpbx-voice%2Frecording%2F2022%2F4%2F1%2FKxQKamXhQfWQs9BPdvDagA%2F8dunF6uUT1qW3KEe0sgaXA%2F08096c0e-2cba-4315-a963-81=e9635e%2Fcall_recording_080=c0e-2cba-4315-a963-813=635e_20220401031509.mp3", "duration": 10, "id": "08096c0e2cba4315a963813d1ce9635e" } ], "to": "2022-04-1", "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List phone numbers - **Method:** `GET` - **Path:** `/phone/carrier_reseller/numbers` - **Tags:** Carrier Reseller Use this API to list phone numbers in a carrier reseller (master) account that can be pushed to its subaccounts. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:list_carrier_numbers:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*No Content\*\* Phone numbers listed successfully. ###### Content-Type: application/json - **`carrier_reseller_numbers`** `array` **Items:** - **`assigned_status`** `string`, possible values: `"assigned", "unassigned", "returned"` — Number assignment status. - **`carrier_code`** `integer` — Carrier reseller ID. - **`country_iso_code`** `string` — Two lettered country \[code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`phone_number`** `string` — Phone number in E164 format. - **`status`** `string`, possible values: `"inactive", "active"` — Status of phone number. - **`sub_account_id`** `string` — \`nullable\` Partner account ID from sub-account. - **`sub_account_name`** `string` — \`nullable\` Sub-account name. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "carrier_reseller_numbers": [ { "assigned_status": "assigned", "carrier_code": 9998, "country_iso_code": "US", "phone_number": "+12059535689", "status": "active", "sub_account_id": "8EVJZPwCTmSZme6fTOcBFg", "sub_account_name": "testAccount" } ], "next_page_token": "next_page_token", "page_size": 30, "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create phone numbers - **Method:** `POST` - **Path:** `/phone/carrier_reseller/numbers` - **Tags:** Carrier Reseller Use this API to add phone numbers to a carrier reseller (master) account. Up to 200 numbers at a time. If this API is called in MA mode, it also has functions of distribution. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:write:carrier_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json **Array of:** - **`phone_number`** `string` — Phone number in E164 format. - **`status`** `string`, possible values: `"active", "inactive"` — \`nullable\` Status of phone number. default value is 'inactive'. **Example:** ```json [ { "phone_number": "+12059535689", "status": "inactive" } ] ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*No Content\*\* Phone numbers created successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
This account is not a Carrier Reseller. Reseller does not configure Carrier. \*\*Error Code:\*\* \`300\` \
Invalid phone number. Invalid phone number status. Unable to recognize country. Phone number already exists. \*\*Error Code:\*\* \`429\` \
Phone number batch operation is limited to 200 per request. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Activate phone numbers - **Method:** `PATCH` - **Path:** `/phone/carrier_reseller/numbers` - **Tags:** Carrier Reseller Use this API to change phone number status to 'active' in a carrier reseller's master account. Up to 200 numbers at a time. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:carrier_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json **Array of:** `string` — Phone number in E164 format. Number up to 200. **Example:** ```json [ "+12059535689" ] ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone numbers activated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Phone number does not exists. \*\*Error Code:\*\* \`429\` \
Phone number batch operation is limited to 200 per request. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a phone number - **Method:** `DELETE` - **Path:** `/phone/carrier_reseller/numbers/{number}` - **Tags:** Carrier Reseller Use this API to delete or unassign a phone number from a carrier reseller account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:delete:carrier_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone number unassigned/deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Phone number does not exists. \*\*Error Code:\*\* \`429\` \
Phone number batch operation is limited to 200 per request. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List common areas - **Method:** `GET` - **Path:** `/phone/common_areas` - **Tags:** Common Areas Lists common areas under an account. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:common_area:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* The list of common areas retrieved successfully. ###### Content-Type: application/json - **`common_areas`** `array` **Items:** - **`calling_plans`** `array` **Items:** - **`billing_account_id`** `string` — The ID of the billing account. It displays when the common area is in India. - **`billing_account_name`** `string` — The billing account name. It displays when the common area is in India. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions. - **`billing_subscription_name`** `string` — The billing subscription name. It displays when the account supports billing multiple subscriptions. It can be edited through the Billing page. - **`name`** `string` — The name of the plan. - **`type`** `integer` — The Zoom Phone \[calling plan number]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans). - **`desk_phones`** `array` — The common area's desk phones. **Items:** - **`device_type`** `string` — The desk phone device type. - **`display_name`** `string` — The desk phone display name. - **`id`** `string` — The desk phone ID. - **`status`** `string`, possible values: `"online", "offline"` — The desk phone status. - **`display_name`** `string` — The display name of the common area. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`id`** `string` — The common area ID or common area extension ID. - **`phone_numbers`** `array` **Items:** - **`display_name`** `string` — The phone number display name. - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number. - **`source`** `string`, possible values: `"internal", "external"` — The phone number source. The value can be either \`internal\` or \`external\`. - **`site`** `object` - **`id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) that the common area desk phone is assigned. - **`name`** `string` — The name of the site. - **`status`** `string`, possible values: `"online", "offline"` — The status of the common area. - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The total number of records returned from a single API call. **Example:** ```json { "common_areas": [ { "calling_plans": [ { "name": "US/CA Metered Calling Plan", "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_account_name": "Delhi billing", "billing_subscription_id": "FT-SUBREF-21168178", "billing_subscription_name": "My Subscription" } ], "display_name": "test_ca", "extension_number": 100012347, "id": "JOZmuJ30Spyrw-v9vUzIrA", "phone_numbers": [ { "display_name": "Phone number display name", "id": "S5q4FDC3QsOCnO7LqHgqNw", "number": "+12058945543", "source": "internal" } ], "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "status": "offline", "desk_phones": [ { "id": "Aky1xpSLSc2PR0XOtj9XWQ", "display_name": "analog_ta", "device_type": "Poly obi504", "status": "offline" } ] } ], "next_page_token": "RaO87FrnwXvFQta5aV8sU5C3c9O8s9Nraq2", "page_size": 30 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a common area - **Method:** `POST` - **Path:** `/phone/common_areas` - **Tags:** Common Areas Adds an instance of a common area. You can configure devices shared by users and deployed in shared spaces. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:common_area:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`display_name` (required)** `string` — The display name of the common area. Enter at least three characters. - **`calling_plans`** `array` **Items:** - **`billing_subscription_id`** `string` — The billing subscription ID. When there is more than one plan type A in this account, it cannot be empty. - **`type`** `integer` — The Zoom Phone \[calling plan number]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans). - **`country_iso_code`** `string` — The two-lettered country \[code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the common area. If the site code is enabled, provide the short extension number instead. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672). You can retrieve the identifier from the \[List Phone Sites]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#operation/listPhoneSites) API. - **`template_id`** `string` — The unique identifier of the \[Setting Template]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0067442). You can retrieve the identifier from the \[List setting templates]\(https\://developers.zoom.us/docs/api/rest/reference/phone/methods/#operation/listSettingTemplates) API. The setting template must belong to the same site as the common area. - **`timezone`** `string` — The \[timezone ID]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists) for the common area. **Example:** ```json { "calling_plans": [ { "type": 100, "billing_subscription_id": "FT-SUBREF-21168178" } ], "country_iso_code": "US", "display_name": "test_ca", "extension_number": 1001014, "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "timezone": "America/Los_Angeles", "template_id": "2kFqiqSlS5udzWB5QqMiNg" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* The common area has been added successfully. ###### Content-Type: application/json - **`display_name`** `string` — The display name of the common area. - **`id`** `string` — The common area ID or common area extension ID. **Example:** ```json { "display_name": "test_ca", "id": "JOZmuJ30Spyrw-v9vUzIrA" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation failed.\
\* Timezone not found in the system. \* This country is not supported by Zoom Phone. \* Site does not exist: {site\_id}.\
\* The template type error or the template does not exist:{template\_id}.\
\* The template's site is not the same as the common area's site.\
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Generate activation codes for common areas - **Method:** `POST` - **Path:** `/phone/common_areas/activation_code` - **Tags:** Common Areas Generates activation codes for common areas. You can add up to 50 common areas at a time. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:common_area:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` **Not supported in Gov cluster** #### Request Body ##### Content-Type: application/json - **`common_area_ids` (required)** `array` — The \`common\_area\_ids\` is an array. Each element is the unique identifier of the common area. You can retrieve it from the \[List Common Areas]\(https\://developers.zoom.us/docs/api/phone/#tag/common-areas/GET/phone/common\_areas/activation\_codes) API. **Items:** `string` — The common area ID or common area extension ID. **Example:** ```json { "common_area_ids": [ "5NmyHmVoRWWk4YT5ad6oxg" ] } ``` #### Responses ##### Status: 201 HTTP Status Code: 201 Generate Activation Codes successfully. ###### Content-Type: application/json - **`common_areas_activation_codes`** `array` — The activation code information of the common areas. **Items:** - **`activation_code`** `string` — The activation code. - **`activation_code_expiration`** `string` — The time when the activation code expires (format: 'yyyy-MM-ddThh:dd:ssZ'). - **`common_area_id`** `string` — The common area ID or common area extension ID. - **`display_name`** `string` — The display name of the common area. - **`extension_number`** `integer` — The extension number. **Example:** ```json { "common_areas_activation_codes": [ { "common_area_id": "JOZmuJ30Spyrw-v9vUzIrA", "display_name": "test_ca", "extension_number": 100012347, "activation_code": "5678-2345-1234-1234", "activation_code_expiration": "2021-10-08T16:12:04Z" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Common area size must be less than 50. \
\*\*Error Code:\*\* \`404\` \
Common area does not exist: {commonAreaId}. \
\*\*Error Code:\*\* \`400\` \
Common area smartphones feature is disabled. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`403\` \
You do not have permission. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List activation codes - **Method:** `GET` - **Path:** `/phone/common_areas/activation_codes` - **Tags:** Common Areas Returns a list of activation code information of the common areas under an account. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_common_area_activation_codes:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` **Not supported in Gov cluster** #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* The list of activation codes of the common areas retrieved successfully. ###### Content-Type: application/json - **`common_areas_activation_codes`** `array` — The activation code information of the common areas. **Items:** - **`activation_code`** `string` — The activation code. - **`activation_code_expiration`** `string` — The time when the activation code expires (format: 'yyyy-MM-ddThh:dd:ssZ'). - **`common_area_id`** `string` — The common area ID or common area extension ID. - **`display_name`** `string` — The display name of the common area. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`site`** `object` - **`name`** `string` — The name of the site. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) that the common area is assigned. - **`status`** `string`, possible values: `"used", "not_used"` — The values of this field can be \`used\` or \`not\_used\`. used: The common area has been logged in to a smartphone through an activation code. not\_used: The common area is never logged in to a smartphone through an activation code. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer` — The total number of records returned from a single API call. **Example:** ```json { "common_areas_activation_codes": [ { "common_area_id": "JOZmuJ30Spyrw-v9vUzIrA", "display_name": "test_ca", "extension_number": 100012347, "activation_code": "5678-2345-1234-1234", "activation_code_expiration": "2021-10-08T16:12:04Z", "status": "used", "site": { "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" } } ], "next_page_token": "RaO87FrnwXvFQta5aV8sU5C3c9O8s9Nraq2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
\*\*Error Code:\*\* \`400\` \
The account\_id is invalid. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Apply template to common areas - **Method:** `POST` - **Path:** `/phone/common_areas/template_id/{templateId}` - **Tags:** Common Areas Applies a template to common areas. You can add up to 50 common areas at a time. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:apply_template_to_common_areas:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`common_area_ids`** `array` — The \`common\_area\_ids\` is an array. Each element is the unique identifier of the \[Common Area]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods/#operation/listCommonAreas). It can be retrieved from the List Common Areas API. **Items:** `string` — The common area ID or common area extension ID. **Example:** ```json { "common_area_ids": [ "5NmyHmVoRWWk4YT5ad6oxg" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Template applied successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
The template's site is not the same as the common area's site. \
\*\*Error Code:\*\* \`400\` \
Common area size must be less than 50. \
You need to have administrative privileges to edit this site. \
\*\*Error Code:\*\* \`404\` \
Common area does not exist: {commonAreaId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found The template type error or the template does not exist:{templateId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get common area details - **Method:** `GET` - **Path:** `/phone/common_areas/{commonAreaId}` - **Tags:** Common Areas Returns detailed information on the common area. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:common_area:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Common area details returned successfully. ###### Content-Type: application/json - **`area_code`** `string` — The area code of the common area. - **`calling_plans`** `array` **Items:** - **`billing_account_id`** `string` — The billing account ID. It displays when the common area is in India. - **`billing_account_name`** `string` — The billing account name. It displays when the common area is in India. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions. - **`billing_subscription_name`** `string` — The billing subscription name. It displays when the account supports billing multiple subscriptions. It can be edited via the Billing page. - **`name`** `string` — The calling plan name. - **`type`** `integer` — The calling plan type. - **`cost_center`** `string` — The cost center the common area belongs to. - **`country`** `object` — The common area country information. - **`code`** `string` — The two-lettered country \[code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`country_code`** `string` — The country calling code. - **`name`** `string` — The common area's country name. - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`department`** `string` — The department the common area belongs to. - **`display_name`** `string` — The display name of the common area. - **`emergency_address`** `object` — The emergency address information. - **`address_line1`** `string` — The emergency location address line 1. - **`address_line2`** `string` — The emergency location address line 2. - **`city`** `string` — The emergency location address city. - **`country`** `string` — The country of the emergency location. - **`id`** `string` — The emergency location address ID. - **`state_code`** `string` — The emergency location address state code. - **`status`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The emergency address verification status.: \* \`1\` \— Verification not Required. \* \`2\` \— Unverified. \* \`3\` \— Verification requested. \* \`4\` \— Verfied. \* \`5\` \— Rejected. \* \`6\` \— Verification failed. - **`zip`** `string` — The emergency address Zip Code. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`id`** `string` — The common area ID or common area extension ID. - **`outbound_caller_ids`** `array` **Items:** - **`is_default`** `boolean` — Whether the outbound caller ID is the default one: if \`true\`, the outbound caller ID is the default caller ID. - **`name`** `string` — The outbound caller name. - **`number`** `string` — The outbound caller number. - **`phone_numbers`** `array` **Items:** - **`display_name`** `string` — The display name of the phone number. - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number. - **`source`** `string`, possible values: `"internal", "external"` — The phone number source: \`internal\` or \`external\` - **`policy`** `object` — A list of the common area's policies. Policies are exceptions to the common area's restrictions. - **`ad_hoc_call_recording`** `object` — A list of ad hoc call recording settings. - **`enable`** `boolean` — Whether the current extension can record and save calls to the cloud. - **`locked`** `boolean` — Whether the senior administrator allow users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`auto_call_recording`** `object` — A list of the user's automatic call recording settings. - **`allow_stop_resume_recording`** `boolean` — Whether the stop of and resuming of automatic call recording is enabled. - **`enable`** `boolean` — Whether the automatic call recording is enabled. - **`inbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. \Note:\ \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`outbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. \Note:\ \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — The type of calls automatically recorded: \* \`inbound\` \* \`outbound\` \* \`both\` - **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`call_park`** `object` - **`call_not_picked_up_action`** `integer` — The action when a parked call is not picked up. 100-Ring back to parker, 0-Forward to voicemail of the parker, 9-Disconnect, 50-Forward to another extension. - **`enable`** `boolean` — Whether to allow calls placed on hold to be resumed from another location using a retrieval code. - **`expiration_period`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — A time limit for parked calls and unit minutes. After the expiration period ends, the retrieval code is no longer valid and a new code will be generated. - **`forward_to`** `object` — The extension's forwarding information. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "zoomRoom", "commonArea", "ciscoRoom/polycomRoom", "autoReceptionist", "callQueue", "sharedLineGroup"` — The type of extension: \* \`user\` \* \`zoomRoom\` \* \`commonArea\` \* \`ciscoRoom/polycomRoom\` \* \`autoReceptionist\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension \`user\`, \`zoomRoom\`, \`commonArea\`, \`ciscoRoom/polycomRoom\`, \`autoReceptionist\`, \`callQueue\` or \`sharedLineGroup\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`check_voicemails_over_phone`** `object` — Whether the user can check voicemails of users and shared line groups over phone using a PIN code. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified.If modified, they can be reset in the update call. - **`delegation`** `object` — Allow common area to use delegation. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`hand_off_to_room`** `object` - **`enable`** `boolean` — Whether to allow extensions to send a call to a Zoom Room. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified.If modified, they can be reset in the update call. - **`hide_zoom_phone_calls_in_ios`** `object` — Hide Zoom Phone calls in iOS/iPadOS device call history. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`international_calling`** `object` — Whether the current extension can make international calls outside of their calling plan. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified.If modified, they can be reset in the update call. - **`ios_call_kit`** `object` — Use CallKit always for Incoming call notifications on iOS/iPadOS devices. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`mobile_switch_to_carrier`** `object` - **`enable`** `boolean` — Whether to allow the extension to switch from a Zoom Phone to their native carrier. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified.If modified, they can be reset in the update call. - **`outbound_calling`** `object` - **`enable`** `boolean` — Whether to define calling rules to restrict user or extension from calling specific countries, cities or numbers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`select_outbound_caller_id`** `object` - **`allow_hide_outbound_caller_id`** `boolean` — Whether to allow the current extension to hide outbound caller id. - **`enable`** `boolean` — Whether to allow the current extension to change the outbound caller ID when placing calls. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified.If modified, they can be reset in the update call. - **`voicemail_notification_by_email`** `object` - **`enable`** `boolean` — If enabled, the extension will receive email notifications when there is a new voicemail from users, call queues, auto receptionists, or shared line groups. - **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`voicemail_transcription`** `object` - **`enable`** `boolean` — When this setting is enabled, voicemail transcriptions will be created and remain accessible even if the setting is later disabled. If the setting is disabled, new voicemail and videomail transcriptions will not be generated. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified.If modified, they can be reset in the update call. - **`site`** `object` - **`id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) to which the common area desk phone is assigned. - **`name`** `string` — The name of the site. **Example:** ```json { "area_code": "408", "calling_plans": [ { "name": "US/CA Metered Calling Plan", "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_account_name": "Delhi billing", "billing_subscription_id": "FT-SUBREF-21168178", "billing_subscription_name": "My Subscription" } ], "cost_center": "pbx_cost_center", "country": { "code": "US", "country_code": "1", "name": "United States" }, "department": "department_pbx", "display_name": "test_ca", "extension_number": 100012347, "default_transcription_language": "en-US", "emergency_address": { "address_line1": "55 Almaden Blvd", "address_line2": "6th floor", "city": "San Jose", "country": "US", "id": "gBGwqgwoTb-DiSCA75tMWw", "state_code": "CA", "status": 1, "zip": "95113" }, "id": "SHzioi3ZR9SXv-XkLbmYCg", "outbound_caller_ids": [ { "is_default": true, "name": "Direct Number", "number": "+12055437350" } ], "phone_numbers": [ { "display_name": "office phone", "id": "TqH98ec8RVCu6Z00aBv9ow", "number": "+12055437350", "source": "internal" } ], "policy": { "international_calling": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "outbound_calling": { "enable": true, "locked": true, "modified": true }, "ad_hoc_call_recording": { "enable": true, "recording_start_prompt": true, "recording_transcription": true, "locked": true, "locked_by": "account" }, "auto_call_recording": { "allow_stop_resume_recording": true, "enable": true, "locked": true, "locked_by": "account", "recording_calls": "inbound", "recording_transcription": true, "inbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true } }, "call_park": { "call_not_picked_up_action": 9, "enable": true, "expiration_period": 10, "forward_to": { "display_name": "test extension name", "extension_id": "CcrEGgmeQem1uyJsuIRKwA", "extension_number": 1000123477, "extension_type": "user", "id": "fWOgOALdT1ei4vjXK-QYsA" }, "locked": true, "locked_by": "account" }, "hand_off_to_room": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "select_outbound_caller_id": { "enable": true, "allow_hide_outbound_caller_id": true, "locked": true, "locked_by": "account", "modified": true }, "mobile_switch_to_carrier": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "voicemail_transcription": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": false, "enable": true, "locked": true, "locked_by": "account", "modified": true }, "check_voicemails_over_phone": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "delegation": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "ios_call_kit": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "hide_zoom_phone_calls_in_ios": { "enable": true, "locked": true, "locked_by": "account", "modified": true } }, "site": { "id": "SQv52YtkRLC2dwrDdYtGsA", "name": "Main site" } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a common area - **Method:** `DELETE` - **Path:** `/phone/common_areas/{commonAreaId}` - **Tags:** Common Areas Removes the common area. **Prerequisites:** - Pro or a higher account with Zoom Phone license. - Account owner or admin permissions. **[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:delete:common_area:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* common area deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Common area does not exist: {0}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update common area - **Method:** `PATCH` - **Path:** `/phone/common_areas/{commonAreaId}` - **Tags:** Common Areas Updates the common area information. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:common_area:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`area_code`** `string` — The area code of the common area. - **`cost_center`** `string` — The cost center the common area belongs to. - **`country_iso_code`** `string` — The two-lettered country \[code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`department`** `string` — The department of which the common area belongs. - **`display_name`** `string` — The display name of the common area. - **`emergency_address_id`** `string` — The emergency location's address ID. - **`extension_number`** `integer`, format: `int64` — The extension number of the phone. If the site code is enabled, provide the short extension number instead. - **`outbound_caller_id`** `string` — The user's outbound caller ID phone number in E164 format. - **`policy`** `object` — A list of the common area's policies. - **`ad_hoc_call_recording`** `object` — A list of ad hoc call recording settings. - **`enable`** `boolean` — Whether the current extension can record and save calls to the cloud. - **`recording_explicit_consent`** `boolean` — Whether to press 1 to provide consent to be recorded. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether call recording transcription is enabled. - **`reset`** `boolean` — Whether the user's ad hoc recording reset option will use the phone site's settings. - **`auto_call_recording`** `object` — A list of the user's automatic call recording settings. - **`allow_stop_resume_recording`** `boolean` — Whether the stop of and resuming of automatic call recording is enabled. - **`enable`** `boolean` — Whether automatic call recording is enabled. - **`inbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`outbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — The type of calls automatically recorded: \* \`inbound\` \* \`outbound\` \* \`both\` - **`recording_transcription`** `boolean` — Whether call recording transcription is enabled. - **`reset`** `boolean` — Whether the user's automatic call recording reset option will use the phone site's settings. - **`call_park`** `object` - **`call_not_picked_up_action`** `integer`, possible values: `0, 9, 50, 100` — The action when a parked call is not picked up. 100-Ring back to parker, 0-Forward to voicemail of the parker, 9-Disconnect, 50-Forward to another extension. - **`enable`** `boolean` — Whether to allow calls placed on hold to be resumed from another location using a retrieval code. - **`expiration_period`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — A time limit for parked calls, unit minutes. After the expiration period ends, the retrieval code is no longer valid and a new code will be generated. - **`forward_to_extension_id`** `string` — The extension ID. - **`check_voicemails_over_phone`** `object` - **`enable`** `boolean` — If enabled, user can check voicemails over phone using a PIN code. - **`reset`** `boolean` — Whether the user's check voicemail over phone reset option will use the phone site's settings. - **`delegation`** `boolean` — Whether the extension can use \[call delegation]\(https\://support.zoom.us/hc/en-us/articles/360032881731-Setting-up-call-delegation-shared-lines-appearance-). - **`hand_off_to_room`** `object` - **`enable`** `boolean` — This field enables an extension to send a call to a Zoom Room. Note: this policy applies to smartphone devices only and requires the "Common area smartphones" policy to be enabled. - **`hide_phone_call_history_in_ios`** `object` — Hides Zoom Phone calls in iOS/iPadOS device call history. - **`enable`** `boolean` — When set to true, Zoom Phone calls will no longer appear in the iOS/iPadOS Recent list. This requires CallKit to be enabled and client version 6.3.0 or later. - **`reset`** `boolean` — Whether the extension's hide phone call history in ios reset option will use the phone site's(enable multiple site) or account's(disable multiple site) settings. - **`international_calling`** `object` — Whether the current extension can make international calls outside of their calling plan. - **`enable`** `boolean` — If enabled, the common area can use international calling. - **`reset`** `boolean` — If reset, the common area international calling setting resets to the default setting. - **`ios_call_kit`** `object` — Uses CallKit always for Incoming call notifications on iOS/iPadOS devices. - **`enable`** `boolean` — If enable, CallKit will always be used for Zoom Phone incoming call notifications on iOS/iPadOS devices. The maximum number of concurrent calls supported will decrease from four to two. - **`reset`** `boolean` — Whether the extension's callkit reset option will use the phone site's(enable multiple site) or account's(disable multiple site) settings. - **`mobile_switch_to_carrier`** `object` - **`enable`** `boolean` — Whether to allow the user to switch from a Zoom Phone to their native carrier. - **`select_outbound_caller_id`** `object` - **`allow_hide_outbound_caller_id`** `boolean` — Whether to allow the current extension to hide outbound caller id. - **`enable`** `boolean` — Whether to allow the current extension to change the outbound caller ID when placing calls. - **`voicemail_notification_by_email`** `object` - **`enable`** `boolean` — If enabled, extension will receive email notifications when there is a new voicemail from users, call queues, auto receptionists or shared line groups. - **`include_voicemail_file`** `boolean` — Whether to include voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include voicemail transcription. - **`reset`** `boolean` — Whether the extension's voicemail notification by email reset option will use the phone site's(enable multiple site) or account's(disable multiple site) settings. - **`voicemail_transcription`** `object` - **`enable`** `boolean` — When this setting is enabled, voicemail transcriptions will be created and remain accessible even if the setting is later disabled. If the setting is disabled, new voicemail and videomail transcriptions will not be generated. - **`reset`** `boolean` — Whether the extension's voicemail transcription reset option will use the phone site's(enable multiple site) or account's(disable multiple site) settings. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) to which the common area desk phone is assigned. - **`timezone`** `string` — The \[timezone ID]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists) for the common area. **Example:** ```json { "area_code": "408", "cost_center": "cost_center_pbx", "country_iso_code": "US", "department": "department_pbx", "display_name": "common area 01", "emergency_address_id": "gBGwqgwoTb-DiSCA75tMWw", "extension_number": 1001014, "outbound_caller_id": "+12055437350", "policy": { "international_calling": { "enable": true, "reset": true }, "ad_hoc_call_recording": { "enable": true, "recording_start_prompt": true, "recording_explicit_consent": true, "recording_transcription": true, "reset": true }, "auto_call_recording": { "allow_stop_resume_recording": true, "enable": true, "recording_calls": "inbound", "recording_transcription": true, "reset": true, "inbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true } }, "call_park": { "call_not_picked_up_action": 50, "enable": true, "expiration_period": 10, "forward_to_extension_id": "CcrEGgmeQem1uyJsuIRKwA" }, "hand_off_to_room": { "enable": true }, "select_outbound_caller_id": { "enable": true, "allow_hide_outbound_caller_id": true }, "mobile_switch_to_carrier": { "enable": true }, "voicemail_transcription": { "enable": true, "reset": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": true, "enable": true, "reset": true }, "check_voicemails_over_phone": { "enable": true, "reset": true }, "delegation": true, "ios_call_kit": { "enable": true, "reset": true }, "hide_phone_call_history_in_ios": { "enable": true, "reset": true } }, "site_id": "SQv52YtkRLC2dwrDdYtGsA", "timezone": "Europe/Berlin", "default_transcription_language": "en-US" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Common area information updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Common area does not exist: {0}. \
\*\*Error Code:\*\* \`409\` \
A conflict occurred with the target extension number. Try again later. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign calling plans to a common area - **Method:** `POST` - **Path:** `/phone/common_areas/{commonAreaId}/calling_plans` - **Tags:** Common Areas Assigns calling plans to a common area. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:common_area_calling_plan:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`calling_plans` (required)** `array` **Items:** - **`type` (required)** `integer` — The Zoom Phone \[calling plan number]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans). - **`billing_account_id`** `string` — The billing account ID. If the user is in India, the field is required. - **`billing_subscription_id`** `string` — The billing subscription ID. When there is more than one plan type A in this account, it cannot be empty. **Example:** ```json { "calling_plans": [ { "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_subscription_id": "FT-SUBREF-21168178" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Assigning calling plans to the common area is successful. ###### Content-Type: application/json - **`calling_plans`** `array` **Items:** - **`billing_account_id`** `string` — The billing account ID. It displays when the common area is in India. - **`billing_account_name`** `string` — The billing account name. It displays when the common area is in India. - **`name`** `string` — The calling plan name. - **`type`** `integer` — The Zoom Phone \[calling plan number]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans). **Example:** ```json { "calling_plans": [ { "name": "US/CA Metered Calling Plan", "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_account_name": "Delhi billing" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign a calling plan from the common area - **Method:** `DELETE` - **Path:** `/phone/common_areas/{commonAreaId}/calling_plans/{type}` - **Tags:** Common Areas Use this API to unassign a calling plan from the common area. **Prerequisites:** - A Pro or higher account with a Zoom Phone license - An account owner or admin permissions **[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:delete:common_area_calling_plan:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Removing assigned calling plans from common area is successful. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign phone numbers to a common area - **Method:** `POST` - **Path:** `/phone/common_areas/{commonAreaId}/phone_numbers` - **Tags:** Common Areas Assigns phone numbers to a common area. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:common_area_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`phone_numbers` (required)** `array` **Items:** - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number. **Example:** ```json { "phone_numbers": [ { "id": "TqH98ec8RVCu6Z00aBv9ow", "number": "+12055437350" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Assigned phone numbers to the common area successfully. ###### Content-Type: application/json - **`phone_numbers`** `array` **Items:** - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number. **Example:** ```json { "phone_numbers": [ { "id": "TqH98ec8RVCu6Z00aBv9ow", "number": "+12055437350" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign phone numbers from common area - **Method:** `DELETE` - **Path:** `/phone/common_areas/{commonAreaId}/phone_numbers/{phoneNumberId}` - **Tags:** Common Areas Unassigns a phone number from a common area. **Prerequisites** - A Pro or a higher account with a Zoom Phone license - An account owner or admin permissions **[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:delete:common_area_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Removing assigned phone numbers from common area is successful. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update common area pin code - **Method:** `PATCH` - **Path:** `/phone/common_areas/{commonAreaId}/pin_code` - **Tags:** Common Areas Updates the common area pin code. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions, This depends on whether [The PIN cannot be viewed by the admin](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0069783) is enabled. **[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:common_area:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`pin_code` (required)** `string` — The pin code to access voicemail, hot desking, unlock desk phones, and call authorized-required. **Example:** ```json { "pin_code": "67941" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Common area pin code updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Validation failed.\
\* The PIN Code cannot be updated by the admin. \* PIN code could only include numbers. \* Invalid PIN code. PIN code must be {0} digits long. \* Invalid PIN code. PIN code must be {0} to {1} digits long. \* Invalid PIN code. Your PIN code must not be the same as the extension number. \* Invalid PIN code. The PIN code must not contain a group of repeated digits. \* PIN code cannot be an ascending or descending group of digits. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found Common area does not exist: {commonAreaId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get common area settings - **Method:** `GET` - **Path:** `/phone/common_areas/{commonAreaId}/settings` - **Tags:** Common Areas Returns common area settings. **Prerequisites:** - Pro or a higher account with Zoom Phone license. - Account owner or admin permissions. **[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:list_common_area_settings:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Common Area Setting object returned. ###### Content-Type: application/json **One of:** - **`desk_phones`** `array` — Desk phones. **Items:** - **`device_type`** `string` — The desk phone device type. - **`display_name`** `string` — The desk phone display name. - **`hot_desking`** `object` — Hot desking. - **`status`** `string`, possible values: `"unsupported", "on", "off"` — This field allows the hot desking feature to the current device: letting the guest user sign in to the desk phone. You can't use the desk phone until the guest user signs out. Options include: \* \`unsupported\` \* \`on\` \* \`off\` - **`id`** `string` — The desk phone ID. - **`mac_address`** `string` — The MAC address or serial number of the device. - **`private_ip`** `string` — The private IP of the registered device. - **`public_ip`** `string` — The public IP of the registered device. - **`status`** `string`, possible values: `"online", "offline"` — The desk phone status. * **`holiday_hours`** `array` — Holiday hours. **Items:** - **`from`** `string`, format: `date-time` — The holiday's start date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`holiday_id`** `string` — The holiday ID. - **`name`** `string` — The name of the holiday. - **`to`** `string`, format: `date-time` — The holiday's end date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`custom_hours_settings`** `object` — Custom hours. - **`custom_hour_type`** `integer`, possible values: `1, 2` — The type of custom hours: \* \`1\` \— 24 hours, 7 days a week. \* \`2\` \— Custom hours. . - **`custom_hours`** `array` — The custom hours settings. **Items:** - **`from`** `string` — The custom hours start time \`HH:mm\` format. - **`to`** `string` — The custom hours end time in \`HH:mm\` format. - **`type`** `integer`, possible values: `0, 1, 2` — The type of custom hours: \* \`0\` \— Disabled. \* \`1\` \— 24 hours. \* \`2\` \— Customized hours. - **`weekday`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week: \* \`1\` \— Sunday \* \`2\` \— Monday \* \`3\` \— Tuesday \* \`4\` \— Wednesday \* \`5\` \— Thursday \* \`6\` \— Friday \* \`7\` \— Saturday **Example:** ```json { "desk_phones": [ { "id": "Aky1xpSLSc2PR0XOtj9XWQ", "display_name": "analog_ta", "device_type": "Poly obi504", "status": "offline", "mac_address": "203a07240534", "hot_desking": { "status": "off" }, "private_ip": "192.168.10.13", "public_ip": "220.148.231.126" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add common area setting - **Method:** `POST` - **Path:** `/phone/common_areas/{commonAreaId}/settings/{settingType}` - **Tags:** Common Areas Adds the common area setting according to the setting type. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:common_area_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json **One of:** - **`device_id`** `string` — The desk phone ID.This field is only required for the \`desk\_phone\` setting type. * **`holiday_hours`** `object` — This field is only required for the \`holiday\_hours\` setting type. - **`holidays`** `array` — The holiday list. The minimum is one item, and the maximum is 10 items. **Items:** - **`from`** `string` — The holiday's start date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`name`** `string` — The name of the holiday. - **`to`** `string` — The holiday's end date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. **Example:** ```json { "device_id": "ULfeE4mgSImyelNmTekUfg" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Created successfully. ###### Content-Type: application/json **One of:** - **`desk_phones`** `array` — All desk phones.Returned only when the setting type is desk\_phone. **Items:** - **`display_name`** `string` — The desk phone display name. - **`id`** `string` — The desk phone ID. * **`holiday_hours`** `object` — All holiday hour settings. Returns only when the setting type is \`holiday\_hours\`. - **`holidays`** `array` **Items:** - **`from`** `string` — The holiday's start date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`holiday_id`** `string` — The holiday ID. - **`name`** `string` — The holiday's start date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`to`** `string` — The holiday's end date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. **Example:** ```json { "desk_phones": [ { "id": "Aky1xpSLSc2PR0XOtj9XWQ", "display_name": "analog_ta" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete common area setting - **Method:** `DELETE` - **Path:** `/phone/common_areas/{commonAreaId}/settings/{settingType}` - **Tags:** Common Areas Removes the common area subsetting from desk phones. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:common_area_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The common area does not exist: {0}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update common area setting - **Method:** `PATCH` - **Path:** `/phone/common_areas/{commonAreaId}/settings/{settingType}` - **Tags:** Common Areas Updates the common area setting according to the setting type. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:common_area_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json **One of:** - **`desk_phones`** `array` — The desk phones. **Items:** - **`hot_desking`** `object` — Hot desking. - **`status`** `string`, possible values: `"on", "off"` — This field allows the hot desking feature to the current device: allows the guest user to sign in to the desk phone. You can't use the desk phone until the guest user signs out. Options include: \* \`on\` \* \`off\` - **`id`** `string` — The desk phone ID. * **`holiday_hours`** `object` — The holiday hours. - **`holidays`** `array` — Holidays **Items:** - **`from`** `string` — The holiday's start date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`holiday_id`** `string` — The holiday ID. - **`name`** `string` — The name of the holiday. - **`to`** `string` — The holiday's end date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`custom_hours_settings`** `object` — Custom hour settings. - **`custom_hour_type`** `integer`, possible values: `1, 2` — The type of custom hours: \* \`1\` \— 24 hours, 7 days a week. \* \`2\` \— Custom hours. . - **`custom_hours`** `array` — The custom hours settings. **Items:** - **`from`** `string` — The custom hours start time \`HH:mm\` format. - **`to`** `string` — The custom hours end time in \`HH:mm\` format. - **`type`** `integer`, possible values: `0, 1, 2` — The type of custom hours: \* \`0\` \— Disabled. \* \`1\` \— 24 hours. \* \`2\` \— Customized hours. - **`weekday`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week: \* \`1\` \— Sunday \* \`2\` \— Monday \* \`3\` \— Tuesday \* \`4\` \— Wednesday \* \`5\` \— Thursday \* \`6\` \— Friday \* \`7\` \— Saturday **Example:** ```json { "desk_phones": [ { "id": "ULfeE4mgSImyelNmTekUfg", "hot_desking": { "status": "off" } } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List call logs - **Method:** `GET` - **Path:** `/phone/metrics/call_logs` - **Tags:** Dashboard Returns monthly call logs metrics. The call logs that provide a record of all incoming and outgoing calls over Zoom Phone in an account. You can use query parameters to filter the response by date, site and MOS(Mean Opinion Score) of the call. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:list_call_logs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`call_logs`** `array` — Call logs. **Items:** - **`call_id`** `string` — The unique identifier of the phone call. - **`callee`** `object` — The callee object that contains information of the calee. - **`codec`** `string` — The audio codec. - **`device_private_ip`** `string` — This setting displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This setting displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_type`** `string` — The device type, and if applicable, its version number. Acceptable device types: \* \`Windows\_Client\` \* \`MAC\_Client\` \* \`Linux\_Client\` \* \`Android\_Phone\` \* \`IOS\_Phone\` \* \`Android\_Pad\` \* \`IOS\_Pad\` \* \[Zoom Phone Appliance]\(https\://support.zoom.us/hc/en-us/articles/360001299063#h\_cc0dac0d-44aa-4fb6-8e39-359166c38715) \* \`Windows\_VDI\_Client\` \* \`MAC\_VDI\_Client\` \* \`Linux\_VDI\_Client\` - **`extension_number`** `string` — The full extension number of the callee. - **`headset`** `string` — The headset the callee uses. - **`isp`** `string` — ISP. - **`microphone`** `string` — The microphone the callee uses for the call. - **`phone_number`** `string` — The phone number of the callee in E164 format. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites). - **`caller`** `object` — The caller object that contains information of the caller. - **`codec`** `string` — Audio codec. - **`device_private_ip`** `string` — This setting displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This setting display sthe device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_type`** `string` — The device type, and if applicable, its version number. Acceptable device types: \* \`Windows\_Client\` \* \`MAC\_Client\` \* \`Linux\_Client\` \* \`Android\_Phone\` \* \`IOS\_Phone\` \* \`Android\_Pad\` \* \`IOS\_Pad\` \* \[Zoom Phone Appliance]\(https\://support.zoom.us/hc/en-us/articles/360001299063#h\_cc0dac0d-44aa-4fb6-8e39-359166c38715) \* \`Windows\_VDI\_Client\` \* \`MAC\_VDI\_Client\` \* \`Linux\_VDI\_Client\` - **`extension_number`** `string` — The full extension number of the caller. - **`headset`** `string` — The headset the caller uses for the call. - **`isp`** `string` — ISP. - **`microphone`** `string` — The microphone the caller uses for the call. - **`phone_number`** `string` — The phone number of the caller in E164 format. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites). - **`date_time`** `string` — The date and time when the call started. - **`direction`** `string` — The direction of the call. The value of this field can be either \`internal\` or \`outbound\`. - **`duration`** `integer` — The duration of the full call in seconds. - **`mos`** `string` — The Mean Opinion Score (MOS). Zoom uses MOS as the main measurement to report on voice quality. MOS measures voice quality on a scale of one to five. A score of 1 indicates unacceptable voice quality for all users. A score of five is the best voice quality. - **`from`** `string` — The start time and date of the report. - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The number of records returned within a single call. - **`to`** `string` — The end time and date of the report. - **`total_records`** `integer` — The total number of records available across all pages. **Example:** ```json { "call_logs": [ { "call_id": "7081466125443483485", "callee": { "codec": "ES8311", "device_private_ip": "10.100.111.237", "device_public_ip": "38.99.100.2", "device_type": "MAC_Client 5.11.9.9957", "extension_number": "100994", "headset": "Edifier", "isp": "Cogent Communications", "microphone": "+12053194087", "phone_number": "+12053194087", "site_id": "ZNWikLeVSjuaMvUoxFqCuw" }, "caller": { "codec": "ES8311", "device_private_ip": "10.100.111.232", "device_public_ip": "38.99.100.3", "device_type": "MAC_Client", "extension_number": "100152", "headset": "Edifier", "isp": "Cogent Communications", "microphone": "+12053194087", "phone_number": "+12053194087", "site_id": "ZNWikLeVSjuaMvUoxFqCuw" }, "date_time": "2021-04-01T02:59:32Z", "direction": "internal", "duration": 20, "mos": "4.5" } ], "from": "2021-03-31", "next_page_token": "T6WMY4fJBIAlxPUiqRtwvQS9dvsq8AoRam2", "page_size": 30, "to": "2021-04-01", "total_records": 20 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call QoS - **Method:** `GET` - **Path:** `/phone/metrics/call_logs/{callId}/qos` - **Tags:** Dashboard Gets the call quality of service (QoS) data for a call made or received by a Zoom phone user in the account. **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:call_qos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`call_id`** `string` — The unique identifier of the phone call. - **`callee_qos`** `object` - **`device_private_ip`** `string` — This setting displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This setting displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`receiving`** `array` — The QoS that the callee receives. **Items:** - **`date_time`** `string`, format: `date-time` — The date and time when the QoS was received. - **`qos`** `object` - **`avg_loss`** `string` — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination. - **`bitrate`** `string` — The number of bits per second, in kbps, that can be transmitted along a digital network. - **`jitter`** `string` — The variation in the delay of received packets, in milliseconds. - **`max_loss`** `string` — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination. - **`mos`** `string` — The MOS (Mean Opinion Score). MOS measures voice quality on a scale of 1 to 5. A score than or equal to 3.5 means good quality, while below 3.5 means poor quality. - **`network_delay`** `string` — The amount of time, in milliseconds, it takes for a VoIP (Voice Over IP) packet to travel from one point to another. - **`sending`** `array` — The QoS that the callee sends. **Items:** - **`date_time`** `string`, format: `date-time` — The date and time when the QoS was delivered. - **`qos`** `object` - **`avg_loss`** `string` — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination. - **`bitrate`** `string` — The number of bits per second, in kbps, that can be transmitted along a digital network. - **`jitter`** `string` — The variation in the delay of received packets, in milliseconds. - **`max_loss`** `string` — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination. - **`mos`** `string` — The MOS (Mean Opinion Score). MOS measures voice quality on a scale of 1 to 5. A score than or equal to 3.5 means good quality, while below 3.5 means poor quality. - **`network_delay`** `string` — The amount of time, in milliseconds, it takes for a VoIP (Voice Over IP) packet to travel from one point to another. - **`caller_qos`** `object` — The quality of service object that represents the call quality data of the caller. - **`device_private_ip`** `string` — This setting displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This setting displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`receiving`** `array` — The QoS (quality of service) that the caller receives . **Items:** - **`date_time`** `string`, format: `date-time` — The date and time when the QoS was received. - **`qos`** `object` - **`avg_loss`** `string` — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination. - **`bitrate`** `string` — The number of bits per second, in kbps, that can be transmitted along a digital network. - **`jitter`** `string` — The variation in the delay of received packets in milliseconds. - **`max_loss`** `string` — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination. - **`mos`** `string` — The MOS (Mean Opinion Score). MOS measures voice quality on a scale of 1 to 5. A score than or equal to 3.5 means good quality, while below 3.5 means poor quality. - **`network_delay`** `string` — The amount of time, in milliseconds, it takes for a VoIP (Voice Over IP) packet to travel from one point to another. - **`sending`** `array` — The QoS that the caller sent. **Items:** - **`date_time`** `string`, format: `date-time` — The date and time when the QoS was delivered. - **`qos`** `object` - **`avg_loss`** `string` — The average amount of packet loss, i.e., the percentage of packets that fail to arrive at their destination. - **`bitrate`** `string` — The number of bits per second in kbps that can be transmitted along a digital network. - **`jitter`** `string` — The variation in the delay of received packets. The value of this field is expressed in milliseconds. - **`max_loss`** `string` — The maximum amount of packet loss, i.e., the maximum percentage of packets that fail to arrive at their destination. - **`mos`** `string` — The Mean Opinion Score (MOS) measures voice quality on a scale of one to five. A MOS greater than or equal to 3.5 means good quality, while below 3.5 means poor quality. - **`network_delay`** `string` — The amount of time (in milliseconds) it takes for a VoIP packet to travel from one point to another. **Example:** ```json { "call_id": "7081466125443483485", "callee_qos": { "device_private_ip": "10.100.111.237", "device_public_ip": "38.99.100.2", "receiving": [ { "date_time": "2022-04-01T03:05:43Z", "qos": { "avg_loss": "0.82%", "bitrate": "14.98kbps", "jitter": "7.53ms", "max_loss": "1.51%", "mos": "3.6", "network_delay": "307" } } ], "sending": [ { "date_time": "2022-04-01T03:05:43Z", "qos": { "avg_loss": "0.82%", "bitrate": "14.98kbps", "jitter": "7.53ms", "max_loss": "1.51%", "mos": "3.6", "network_delay": "307" } } ] }, "caller_qos": { "device_private_ip": "10.100.111.237", "device_public_ip": "38.99.100.2", "receiving": [ { "date_time": "2022-04-01T03:05:43Z", "qos": { "avg_loss": "1.29%", "bitrate": "16.31kbps", "jitter": "5.15ms", "max_loss": "2.01%", "mos": "3.6", "network_delay": "301" } } ], "sending": [ { "date_time": "2022-04-01T03:05:43Z", "qos": { "avg_loss": "1.29%", "bitrate": "16.31kbps", "jitter": "5.15ms", "max_loss": "2.01%", "mos": "3.6", "network_delay": "303" } } ] } } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call details from call log - **Method:** `GET` - **Path:** `/phone/metrics/call_logs/{call_id}` - **Tags:** Dashboard Returns call log details of a specific call. The call logs provide a record of all incoming and outgoing calls over Zoom Phone in an account. **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:call_log:admin` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`call_id`** `string` — The unique identifier of the phone call. - **`callee`** `object` — The callee object that contains information of the callee. - **`codec`** `string` — The audio codec. - **`device_private_ip`** `string` — This setting displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This setting displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_type`** `string` — The device type, and if applicable, its version number. Acceptable device types: \* \`Windows\_Client\` \* \`MAC\_Client\` \* \`Linux\_Client\` \* \`Android\_Phone\` \* \`IOS\_Phone\` \* \`Android\_Pad\` \* \`IOS\_Pad\` \* \[Zoom Phone Appliance]\(https\://support.zoom.us/hc/en-us/articles/360001299063#h\_cc0dac0d-44aa-4fb6-8e39-359166c38715) \* \`Windows\_VDI\_Client\` \* \`MAC\_VDI\_Client\` \* \`Linux\_VDI\_Client\` - **`display_name`** `string` — The extension's name. - **`extension_number`** `string` — The full extension number of the callee. - **`extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The type of extension: \* \`user\` \* \`callQueue\` \* \`autoReceptionist\` \* \`sharedLineGroup\` - **`headset`** `string` — The headset the callee uses for the call. - **`id`** `string` — The ID of the extension for \`user\`, \`callQueue\`, \`autoReceptionist\`, or \`sharedLineGroup\`. - **`isp`** `string` — ISP. - **`microphone`** `string` — The microphone the callee uses for the call. - **`phone_number`** `string` — The phone number of the callee in E164 format. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites). - **`caller`** `object` — The caller object that contains information of the caller. - **`codec`** `string` — The audio codec. - **`device_private_ip`** `string` — This setting displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This setting displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_type`** `string` — The device type, and if applicable, its version number. Acceptable device types: \* \`Windows\_Client\` \* \`MAC\_Client\` \* \`Linux\_Client\` \* \`Android\_Phone\` \* \`IOS\_Phone\` \* \`Android\_Pad\` \* \`IOS\_Pad\` \* \[Zoom Phone Appliance]\(https\://support.zoom.us/hc/en-us/articles/360001299063#h\_cc0dac0d-44aa-4fb6-8e39-359166c38715) \* \`Windows\_VDI\_Client\` \* \`MAC\_VDI\_Client\` \* \`Linux\_VDI\_Client\` - **`display_name`** `string` — The extension's name. - **`extension_number`** `string` — The full extension number of the caller. - **`extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The type of extension: \* \`user\` \* \`callQueue\` \* \`autoReceptionist\` \* \`sharedLineGroup\` - **`headset`** `string` — The headset the caller uses for the call. - **`id`** `string` — The ID of the extension for \`user\`, \`callQueue\`, \`autoReceptionist\`, or \`sharedLineGroup\`. - **`isp`** `string` — ISP. - **`microphone`** `string` — The microphone the caller uses for the call. - **`phone_number`** `string` — The phone number of the caller in E164 format. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites). - **`date_time`** `string` — The date and time when the call started. - **`direction`** `string` — The direction of the call. The value of this field can be either \`internal\` or \`outbound\`. - **`duration`** `integer` — The duration of the call in seconds. - **`mos`** `string` — The Mean Opinion Score (MOS). Zoom uses MOS as the main measurement to report on voice quality. MOS measures voice quality on a scale of one to five. A score of one indicates unacceptable voice quality for all users. A score of five is the best voice quality. **Example:** ```json { "call_id": "7081466125443483485", "callee": { "codec": "ES8311", "device_private_ip": "10.100.111.237", "device_public_ip": "38.99.100.2", "device_type": "MAC_Client", "extension_number": "100994", "headset": "Edifier", "isp": "Cogent Communications", "microphone": "+18889843519", "phone_number": "+18889843519", "site_id": "ZNWikLeVSjuaMvUoxFqCuw", "id": "DYHrdpjrS3uaOf7dPkkg8w", "extension_type": "user", "display_name": "user A" }, "caller": { "codec": "ES8311", "device_private_ip": "10.100.111.237", "device_public_ip": "38.99.100.2", "device_type": "MAC_Client", "extension_number": "100152", "headset": "Edifier", "isp": "Cogent Communications", "microphone": "+12053194087", "phone_number": "+12053194087", "site_id": "ZNWikLeVSjuaMvUoxFqCuw", "id": "S5ODD6U3RcGs7H01n8vswA", "extension_type": "user", "display_name": "user B" }, "date_time": "2022-04-01T03:05:18Z", "direction": "internal", "duration": 27, "mos": "3.6" } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List default emergency address users - **Method:** `GET` - **Path:** `/phone/metrics/emergency_services/default_emergency_address/users` - **Tags:** Dashboard Returns the users who provide a default personal emergency address rather than a default site address or default account address. **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:default_emergency_address:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Locations returned. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `number` — The total number of records returned from a single API call. - **`records`** `array` **Items:** - **`email`** `string` — The user's email. - **`extension_id`** `string` — The user's extension ID. - **`extension_number`** `integer`, format: `int64` — The user's extension number. - **`site_id`** `string` — The unique identifier of the site. - **`site_name`** `string` — The site's name. - **`status`** `string`, possible values: `"set", "not_set"` — The status of \*\*Default Emergency Address\*\*. - **`user_display_name`** `string` — The user's name. - **`total_records`** `number` — The total number of records found for this query. **Example:** ```json { "next_page_token": "6VXOgUaNNeZ7qL7bENvXPgclgeZ3bf3nbj2", "page_size": 1, "total_records": 6, "records": [ { "email": "test.user@gmail.com", "user_display_name": "James Lu", "extension_id": "VodZOCkyRM-wfOqr1xmuMQ", "extension_number": 10010, "site_name": "Main Site", "site_id": "oB18huSERjqbzrsyL2bD5w", "status": "set" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`802\` \
Data is not ready, please try again later \
\*\*Error Code:\*\* \`8001\` \
Site does not exist \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
\*\*Error Code:\*\* \`400\` \
status can't be empty. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List detectable personal location users - **Method:** `GET` - **Path:** `/phone/metrics/emergency_services/detectable_personal_location/users` - **Tags:** Dashboard Returns the users who created one or more detectable personal locations with associated network data. (Exclude users didn't enable Location Permission on client.) **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:detectable_personal_location:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Locations returned. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `number` — The total number of records returned from a single API call. - **`records`** `array` **Items:** - **`email`** `string` — The user's email. - **`extension_id`** `string` — The user's extension ID. - **`extension_number`** `integer`, format: `int64` — The user's extension number. - **`site_id`** `string` — The unique identifier of the site. - **`site_name`** `string` — The site's name. - **`status`** `string`, possible values: `"set", "not_set"` — The status of \*\*Detectable Personal Location\*\*. - **`user_display_name`** `string` — The user's name. - **`total_records`** `number` — The total number of records found for this query. **Example:** ```json { "next_page_token": "6VXOgUaNNeZ7qL7bENvXPgclgeZ3bf3nbj2", "page_size": 1, "total_records": 6, "records": [ { "email": "test.user@gmail.com", "user_display_name": "James Lu", "extension_id": "VodZOCkyRM-wfOqr1xmuMQ", "extension_number": 10010, "site_name": "Main Site", "site_id": "oB18huSERjqbzrsyL2bD5w", "status": "set" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`802\` \
Data is not ready, please try again later \
\*\*Error Code:\*\* \`8001\` \
Site does not exist \
\*\*Error Code:\*\* \`400\` \
status can't be empty. \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List users permission for location sharing - **Method:** `GET` - **Path:** `/phone/metrics/emergency_services/location_sharing_permission/users` - **Tags:** Dashboard Returns users that have enabled location services and allowed location sharing with Zoom applications on client devices. (Excludes users who are unable to use Nomadic Emergency Services, or users on client versions lower than 5.4.0.) **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:location_sharing_permission:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Locations returned. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `number` — The total number of records returned from a single API call. - **`total_records`** `number` — The total number of records found for this query. - **`user_permissions`** `array` — The list of users permission for location sharing **Items:** - **`device_permissions`** `array` — The device's permission list of user. **Items:** - **`last_seen_time`** `number` — The last seen time stamp of the device. - **`location_sharing`** `string`, possible values: `"allowed", "disallowed"` — The status of \*\*Users Permission for Location Sharing\*\*. - **`platform`** `string` — The platform of the device. - **`email`** `string` — The user's email. - **`extension_id`** `string` — The user's extension ID. - **`extension_number`** `integer`, format: `int64` — The user's extension number. - **`site_id`** `string` — The unique identifier of the site. - **`site_name`** `string` — The site's name. - **`user_display_name`** `string` — The user's name. **Example:** ```json { "next_page_token": "6VXOgUaNNeZ7qL7bENvXPgclgeZ3bf3nbj2", "page_size": 1, "total_records": 6, "user_permissions": [ { "email": "test.user@gmail.com", "user_display_name": "james lu", "extension_id": "VodZOCkyRM-wfOqr1xmuMQ", "extension_number": 10010, "site_name": "Main Site", "site_id": "oB18huSERjqbzrsyL2bD5w", "device_permissions": [ { "last_seen_time": 1730774641337, "location_sharing": "allowed", "platform": "win" } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`8001\` \
Site does not exist \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List nomadic emergency services users - **Method:** `GET` - **Path:** `/phone/metrics/emergency_services/nomadic_emergency_services/users` - **Tags:** Dashboard Returns users who have been enabled for nomadic emergency services. **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:nomadic_emergency_services:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Locations returned. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `number` — The total number of records returned from a single API call. - **`records`** `array` **Items:** - **`email`** `string` — The user's email. - **`extension_id`** `string` — The user's extension ID. - **`extension_number`** `integer`, format: `int64` — The user's extension number. - **`reason_for_disabling`** `integer`, format: `int32`, possible values: `1, 2, 3, 4, 5` — The reason of disabling nomadic emergency services, only returned if service is disabled \`1\`: Nomadic Emergency Services is disabled \`2\`: Routing emergency calls to The Safety Team and PSAP is disabled \`3\`: The assigned number of this user is not a US/CA number \`4\`: Placing emergency calls to PSAP for extension-only users is disabled, or no US/CA numbers has been assigned to Emergency Number Pool. \`5\`: This user is only assigned with BYOC numbers and BYOC carriers were set to route the emergency calls, or for extension-only users, only BYOC numbers has been assigned to Emergency Number Pool and the BYOC carrier was set to route the emergency calls. - **`site_id`** `string` — The unique identifier of the site. - **`site_name`** `string` — The site's name. - **`status`** `string`, possible values: `"enabled", "disabled"` — The status of \*\*Nomadic Emergency Services\*\*. - **`user_display_name`** `string` — The user's name. - **`total_records`** `number` — The total number of records found for this query. **Example:** ```json { "next_page_token": "6VXOgUaNNeZ7qL7bENvXPgclgeZ3bf3nbj2", "page_size": 1, "total_records": 6, "records": [ { "email": "test.user@gmail.com", "user_display_name": "James Lu", "extension_id": "VodZOCkyRM-wfOqr1xmuMQ", "extension_number": 10010, "site_name": "Main Site", "site_id": "oB18huSERjqbzrsyL2bD5w", "status": "enabled", "reason_for_disabling": 2 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`802\` \
Data is not ready, please try again later \
\*\*Error Code:\*\* \`8001\` \
Site does not exist \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
\*\*Error Code:\*\* \`400\` \
status can't be empty. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List real time location for IP phones - **Method:** `GET` - **Path:** `/phone/metrics/emergency_services/realtime_location/devices` - **Tags:** Dashboard Returns currently detected location of IP phones. **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:realtime_location_devices:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Locations returned. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer`, default: `30` — The total number of records returned from a single API call. - **`records`** `array` **Items:** - **`assigned_info`** `array` **Items:** - **`extension_id`** `string` — The extension ID of the user's Zoom Phone. - **`extension_number`** `integer`, format: `int64` — The extension number of the user's Zoom Phone. - **`user_display_name`** `string` — The name of the user. - **`user_email`** `string` — The email of the user. - **`bssid`** `string` — The BSSID (Basic Service Set Identifiers) of the wifi network which the device connected to - **`device_id`** `string` — The device ID. - **`device_name`** `string` — The device's name. - **`emergency_address`** `string` — The emergency location's address. - **`location_name`** `string` — The location's name. - **`location_type`** `string`, possible values: `"company", "personal", "unknown"` — The type of location: \`personal\`, \`company\`, \`unknown\` - **`mac_address`** `string` — The MAC address or serial number of the device. - **`network_switch`** `object` - **`mac_address`** `string` — The MAC address or serial number of network switch. - **`port`** `string` — The port of the network switch. - **`private_ip`** `string` — The device's subnet or private IP address. - **`public_ip`** `string` — The device's public IP address. - **`site_id`** `string` — The unique identifier of the site. - **`site_name`** `string` — The site name. - **`total_records`** `integer` — The total number of records found for this query. **Example:** ```json { "records": [ { "device_id": "-tDdYIstSumpA0L13GztIQ", "device_name": "Desk Phone", "site_id": "NjHmTu16Qfe8yOiNJuekXA", "site_name": "HF site", "public_ip": "192.168.1.1", "private_ip": "192.168.1.1", "bssid": "SA43YjfBTS6gJbUpfvIziQ", "emergency_address": "55 ALMADEN BLVD", "mac_address": "543968a78ee7", "location_name": "example location", "network_switch": { "port": "2", "mac_address": "543968a78ee7" }, "location_type": "personal", "assigned_info": [ { "extension_id": "IqoQmDRqS-aIoXqV_FZ88w", "extension_number": 10010, "user_email": "test.user@gmai.com", "user_display_name": "James Lu" } ] } ], "total_records": 1, "page_size": 30, "next_page_token": "T6WMY4fJBIAlxPUiqRtwvQS9dvsq8AoRam2" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`8001\` \
Site does not exist \
\*\*Error Code:\*\* \`400\` \
location\_type can't be empty. \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List real time location for users - **Method:** `GET` - **Path:** `/phone/metrics/emergency_services/realtime_location/users` - **Tags:** Dashboard Returns the user's currently detected location. (Excludes users who didn't enable location permission on the client.) **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:realtime_location_users:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Locations returned. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `number` — The total number of records returned from a single API call. - **`records`** `array` **Items:** - **`bssid`** `string` — The BSSID (Basic Service Set Identifiers) of the wifi network which the user is connected to. - **`email`** `string` — The user's email - **`emergency_address`** `string` — The emergency location's address. - **`extension_id`** `string` — The user's extension ID. - **`extension_number`** `integer`, format: `int64` — The user's extension number. - **`location_name`** `string` — The location's name. - **`location_type`** `string`, possible values: `"company", "personal", "unknown"` — The type of location: \`company\`, \`personal\`, \`unknown\` - **`network_switch`** `object` - **`mac_address`** `string` — The MAC address or serial number of network switch. - **`port`** `string` — The port of the network switch. - **`private_ip`** `string` — The device's subnet or private IP address. - **`public_ip`** `string` — The device's public IP address. - **`site_id`** `string` — The unique identifier of the site. - **`site_name`** `string` — The site's name. - **`user_display_name`** `string` — The user's name - **`total_records`** `number` — The total number of records found for this query. **Example:** ```json { "next_page_token": "6VXOgUaNNeZ7qL7bENvXPgclgeZ3bf3nbj2", "page_size": 1, "total_records": 6, "records": [ { "email": "test.user@gmail.com", "bssid": "d0:15:a6:1f:4f:35", "user_display_name": "James Lu", "extension_id": "VodZOCkyRM-wfOqr1xmuMQ", "extension_number": 10010, "site_name": "Main Site", "site_id": "oB18huSERjqbzrsyL2bD5w", "public_ip": "66.172.49.116", "private_ip": "10.100.161.25", "emergency_address": "55 ALMADEN BLVD", "location_name": "example location", "network_switch": { "port": "2", "mac_address": "543968a78ee7" }, "location_type": "unknown" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`8001\` \
Site does not exist \
\*\*Error Code:\*\* \`400\` \
location\_type can't be empty. \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List tracked locations - **Method:** `GET` - **Path:** `/phone/metrics/location_tracking` - **Tags:** Dashboard Lists the tracked locations. **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:list_tracked_locations:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Locations returned. ###### Content-Type: application/json - **`location_tracking`** `array` **Items:** - **`assignees`** `array` **Items:** - **`extension_number`** `integer`, format: `int64` — The extension number of the user's Zoom Phone. - **`id`** `string` — The user ID of the user with the assigned device. - **`name`** `string` — The name of the user. - **`city`** `string` — The city of the location. - **`country`** `string` — The two-lettered country code (Aplha-2 code in ISO-3166 format) standard of the location. - **`device`** `object` - **`bssid`** `string` — The device's BSSIDs (Basic Service Set Identifiers). - **`id`** `string` — The device ID. - **`mac_address`** `string` — The MAC address or serial number of the device. - **`name`** `string` — The device name. - **`private_ip`** `string` — The device's subnet or private IP address. - **`public_ip`** `string` — The device's public IP address. - **`emergency_address`** `string` — The emergency location's address. - **`name`** `string` — The location's name. - **`network_switch`** `object` - **`mac_address`** `string` — The MAC address or serial number of network switch. - **`port`** `string` — The port of the network switch. - **`site`** `object` - **`id`** `string` — The unique identifier of the site. - **`name`** `string` — The site name. - **`type`** `string`, possible values: `"company", "personal", "unknown"` — The type of location - **`zip`** `string` — The zip code of the location. - **`next_page_token`** `string` — 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. - **`page_size`** `integer`, default: `30` — The total number of records returned from a single API call. - **`total_records`** `integer` — The total number of records found for this query. **Example:** ```json { "location_tracking": [ { "assignees": [ { "extension_number": 10010, "id": "IqoQmDRqS-aIoXqV_FZ88w", "name": "testUser" } ], "city": "SAN JOSE", "country": "US", "device": { "bssid": "SA43YjfBTS6gJbUpfvIziQ", "id": "-tDdYIstSumpA0L13GztIQ", "mac_address": "543968a78ee7", "name": "Desk Phone", "private_ip": "192.168.1.1", "public_ip": "192.168.1.1" }, "emergency_address": "55 ALMADEN BLVD", "name": "testLocation", "network_switch": { "mac_address": "543968a78ee7", "port": "2" }, "site": { "id": "NjHmTu16Qfe8yOiNJuekXA", "name": "testSite" }, "type": "personal", "zip": "95113" } ], "next_page_token": "T6WMY4fJBIAlxPUiqRtwvQS9dvsq8AoRam2", "page_size": 30, "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List past call metrics - **Method:** `GET` - **Path:** `/phone/metrics/past_calls` - **Tags:** Dashboard Returns all the call logs metrics of the account from the selected time period. The call logs provide a record of all incoming and outgoing calls over Zoom Phone in an account. You can use query parameters to filter the response by metrics of the call (such as date, phone number, extension number and quality type). **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:list_call_logs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy` #### Responses ##### Status: 200 \*\*HTTP Status code:\*\* \`200\` List past call metrics successfully. ###### Content-Type: application/json - **`call_logs`** `array` — The call logs. **Items:** - **`call_id`** `string` — The unique identifier of the phone call. - **`callee`** `object` — The callee object that contains information of the callee. - **`codec`** `string` — The audio codec. - **`device_private_ip`** `string` — This setting displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This setting displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_type`** `string` — The device type, and if applicable, its version number. Acceptable device types: \* \`Windows\_Client\` \* \`MAC\_Client\` \* \`Linux\_Client\` \* \`Android\_Phone\` \* \`IOS\_Phone\` \* \`Android\_Pad\` \* \`IOS\_Pad\` \* \[Zoom Phone Appliance]\(https\://support.zoom.us/hc/en-us/articles/360001299063#h\_cc0dac0d-44aa-4fb6-8e39-359166c38715) \* \`Windows\_VDI\_Client\` \* \`MAC\_VDI\_Client\` \* \`Linux\_VDI\_Client\` - **`extension_number`** `string` — The full extension number of the callee. - **`headset`** `string` — The headset the callee uses for the call. - **`isp`** `string` — The internet service provider. - **`microphone`** `string` — The microphone the callee uses for the call. - **`phone_number`** `string` — The phone number of the callee in E164 format. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites). - **`caller`** `object` — The caller object that contains information of the caller. - **`codec`** `string` — The audio codec. - **`device_private_ip`** `string` — This setting displays the device's private IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_public_ip`** `string` — This setting displays the device's public IP address if the account has the \`show\_device\_ip\_for\_call\_log\` parameter set to \`enabled\`. - **`device_type`** `string` — The device type, and if applicable, its version number. Acceptable device types: \* \`Windows\_Client\` \* \`MAC\_Client\` \* \`Linux\_Client\` \* \`Android\_Phone\` \* \`IOS\_Phone\` \* \`Android\_Pad\` \* \`IOS\_Pad\` \* \[Zoom Phone Appliance]\(https\://support.zoom.us/hc/en-us/articles/360001299063#h\_cc0dac0d-44aa-4fb6-8e39-359166c38715) \* \`Windows\_VDI\_Client\` \* \`MAC\_VDI\_Client\` \* \`Linux\_VDI\_Client\` - **`extension_number`** `string` — The full extension number of the caller. - **`headset`** `string` — The headset the caller uses for the call. - **`isp`** `string` — The internet service provider. - **`microphone`** `string` — The microphone the caller uses for the call. - **`phone_number`** `string` — The phone number of the caller in E164 format. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites). - **`date_time`** `string` — The date and time when the call started. - **`direction`** `string`, possible values: `"inbound", "outbound", "internal"` — The direction of the call. - **`duration`** `integer` — The duration of the call in seconds. - **`mos`** `string` — The Mean Opinion Score (MOS). Zoom uses (MOS) as the main measurement to report on voice quality. MOS measures voice quality on a scale of one to five. A score of 1 indicates unacceptable voice quality for all users. A score of five is the best voice quality. - **`from`** `string` — The start time and date of the report. - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The number of records returned within a single call. - **`to`** `string` — The end time and date of the report. - **`total_records`** `integer` — The total number of records available across all pages. **Example:** ```json { "call_logs": [ { "call_id": "7081466125443483485", "callee": { "codec": "ES8311", "device_private_ip": "10.100.111.237", "device_public_ip": "38.99.100.2", "device_type": "MAC_Client", "extension_number": "100994", "headset": "Edifier", "isp": "Cogent Communications", "microphone": "+12053194087", "phone_number": "+12053194087", "site_id": "ZNWikLeVSjuaMvUoxFqCuw" }, "caller": { "codec": "ES8311", "device_private_ip": "10.100.111.232", "device_public_ip": "38.99.100.3", "device_type": "MAC_Client", "extension_number": "100152", "headset": "Edifier", "isp": "Cogent Communications", "microphone": "+12053194087", "phone_number": "+12053194087", "site_id": "ZNWikLeVSjuaMvUoxFqCuw" }, "date_time": "2021-04-01T02:59:32Z", "direction": "internal", "duration": 20, "mos": "4.5" } ], "from": "2021-03-31", "to": "2021-04-01", "next_page_token": "T6WMY4fJBIAlxPUiqRtwvQS9dvsq8AoRam2", "page_size": 30, "total_records": 20 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get device line keys information - **Method:** `GET` - **Path:** `/phone/devices/{deviceId}/line_keys` - **Tags:** Device Line Keys Use this API to get information on the Zoom Phone device [line keys](https://support.zoom.us/hc/en-us/articles/4402415568397-Customizing-keys-for-devices-with-multiple-users) settings and position. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:device_line_keys`,`phone:read:device_line_keys:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Device line keys returned. ###### Content-Type: application/json - **`device_id`** `string` — Device ID. - **`device_name`** `string` — Device name. - **`positions`** `array` — Device line key position. **Items:** - **`display_name`** `string` — Display name of the user or common area. - **`extension_id`** `string` — Extension ID of the \`user\` or \`common area\`. - **`extension_number`** `integer`, format: `int64` — Extension number of the Zoom Phone used by the \`user\` or \`commonArea\`. - **`extension_type`** `string`, possible values: `"User", "CommonArea"` — Type of the assignee. Available only if the device is assigned. - **`index`** `integer` — The order of the device line key. - **`outbound_caller_ids`** `array` — Outbound caller ids. **Items:** - **`extension_id`** `string` — Extension ID of the \`user\` or \`common area\`. - **`phone_number`** `string` — The phone number in E164 format. - **`usage_type`** `string`, possible values: `"Main Company Number", "Additional Company Number", "Direct Number", "Phone Number"` — Phone number usage type. - **`owner_extension_name`** `string` — Port owner name. - **`owner_extension_number`** `integer`, format: `int64` — Port owner extension number. - **`phone_number`** `string` — The phone number in E164 format. **Example:** ```json { "device_id": "yfWfRkZ_QPSNGuWKiAGYbQ", "device_name": "ATA Device", "positions": [ { "index": 1, "owner_extension_name": "Port owner name", "owner_extension_number": 123, "extension_number": 123, "extension_type": "User", "extension_id": "MjGXQfCxShapaxJDka7", "display_name": "Display name", "phone_number": "+12055437350", "outbound_caller_ids": [ { "extension_id": "MjGXQfCxShapaxJDka7", "phone_number": "+12055437350", "usage_type": "Main Company Number" } ] } ] } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Batch update device line key position - **Method:** `PATCH` - **Path:** `/phone/devices/{deviceId}/line_keys` - **Tags:** Device Line Keys Use this API to batch update the Zoom Phone device [line key position](https://support.zoom.us/hc/en-us/articles/4402415568397-Customizing-keys-for-devices-with-multiple-users) information. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:device_line_keys`,`phone:update:device_line_keys:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy` #### Request Body ##### Content-Type: application/json - **`positions`** `array` — Device line key position. **Items:** - **`extension_id`** `string` — Extension ID of the \`user\` or \`common area\`. - **`index`** `integer` — The order of the device line key. **Example:** ```json { "positions": [ { "extension_id": "MjGXQfCxShapaxJDka7", "index": 1 } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Device line keys and positions updated sucessfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Extension ID does not exist: {0}. \
Index is invalid: {0}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List users in directory - **Method:** `GET` - **Path:** `/phone/dial_by_name_directory/extensions` - **Tags:** Dial by Name Directory Use this API to get users that are in or not in a [directory](https://support.zoom.us/hc/en-us/articles/4404938949389-Using-a-dial-by-name-directory). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:directory:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully listed the user information. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of the available result list exceeds the page size. - **`page_size`** `integer` — The size of the page. - **`result`** `array` — User list. **Items:** - **`display_name`** `string` — Display name. - **`email`** `string` — Email. - **`extension_id`** `string` — Extension ID. - **`extension_number`** `string` — Extension number. - **`site`** `object` — Site. - **`id`** `string` — Unique identifier of the site. - **`name`** `string` — Site Name. **Example:** ```json { "next_page_token": "FHBv62", "page_size": 10, "result": [ { "extension_id": "FDFU83j", "display_name": "CUSTOMERS", "email": "email@example.com", "extension_number": "1933", "site": { "id": "flej2f", "name": "New Site" } } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add users to a directory - **Method:** `POST` - **Path:** `/phone/dial_by_name_directory/extensions` - **Tags:** Dial by Name Directory Use this API to add users to a [directory](https://support.zoom.us/hc/en-us/articles/4404938949389-Using-a-dial-by-name-directory). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:write:directory:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`site_id` (required)** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) - **`extension_ids`** `array` — The IDs of user's extension. If the value is not specified, only add value of \`site\_id\` to \`included sites\` **Items:** `string` **Example:** ```json { "site_id": "pei2g0vFDF", "extension_ids": [ "O3JFBAnds" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Successfully added users to the directory. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete users from a directory - **Method:** `DELETE` - **Path:** `/phone/dial_by_name_directory/extensions` - **Tags:** Dial by Name Directory Use this API to delete users from the [directory](https://support.zoom.us/hc/en-us/articles/4404938949389-Using-a-dial-by-name-directory). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:delete:directory:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully deleted users from the directory. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List users in a directory by site - **Method:** `GET` - **Path:** `/phone/sites/{siteId}/dial_by_name_directory/extensions` - **Tags:** Dial by Name Directory Use this API to get users that are in or not in a [directory](https://support.zoom.us/hc/en-us/articles/4404938949389-Using-a-dial-by-name-directory) of the specified site. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:directory:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully listed the user information. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of the available result list exceeds the page size. - **`page_size`** `integer` — The size of the page. - **`result`** `array` — User list. **Items:** - **`display_name`** `string` — Display name. - **`email`** `string` — Email. - **`extension_id`** `string` — Extension ID. - **`extension_number`** `string` — Extension number. - **`site`** `object` — Site. - **`id`** `string` — Unique identifier of the site. - **`name`** `string` — Site Name. **Example:** ```json { "next_page_token": "lfei3g", "page_size": 30, "result": [ { "extension_id": "feq3g", "display_name": "Name", "email": "example@example.com", "extension_number": "1003", "site": { "id": "fdjl23", "name": "New site" } } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add users to a directory of a site - **Method:** `POST` - **Path:** `/phone/sites/{siteId}/dial_by_name_directory/extensions` - **Tags:** Dial by Name Directory Use this API to add users to a [directory](https://support.zoom.us/hc/en-us/articles/4404938949389-Using-a-dial-by-name-directory) of the specified site. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:write:directory:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`extension_ids`** `array` — The IDs of user's extension. If the value is not specified, only add value of \`site\_id\` to \`included sites\` **Items:** `string` - **`site_id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) to which users to add belongs **Example:** ```json { "site_id": "fdfdwb", "extension_ids": [ "qdvd3fg" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Successfully added users to the directory. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete users from a directory of a site - **Method:** `DELETE` - **Path:** `/phone/sites/{siteId}/dial_by_name_directory/extensions` - **Tags:** Dial by Name Directory Use this API to delete users from a [directory](https://support.zoom.us/hc/en-us/articles/4404938949389-Using-a-dial-by-name-directory) of the specified site. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:delete:directory:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully deleted users from the directory. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List emergency addresses - **Method:** `GET` - **Path:** `/phone/emergency_addresses` - **Tags:** Emergency Addresses Lists the emergency addresses. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_emergency_addresses:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Emergency addresses listed successfully. ###### Content-Type: application/json - **`emergency_addresses`** `array` — Information about emergency addresses. **Items:** - **`address_line1`** `string` — The emergency address line 1. - **`address_line2`** `string` — The emergency address line 2. - **`city`** `string` — The emergency address city. - **`country`** `string` — The emergency address country. - **`id`** `string` — The emergency address ID. - **`is_default`** `boolean` — Indicates whether the emergency address is default or not. - **`level`** `integer`, possible values: `0, 1, 2` — The emergency address owner level: \* \`0\` - Account/Company-level emergency address. \* \`1\` - User/Personal-level emergency address. \* \`2\` - Unknown company/pending emergency address. - **`owner`** `object` — The emergency address owner information for a user-level emergency address. - **`extension_number`** `integer`, format: `int64` — The emergency address owner extension number. - **`id`** `string` — The emergency address owner ID. - **`name`** `string` — The emergency address owner name. - **`site`** `object` — The emergency address site information. - **`id`** `string` — The site's ID. - **`name`** `string` — The site's name. - **`state_code`** `string` — The emergency address state code. - **`status`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The emergency address verification status: \* \`1\` \— Verification not required. \* \`2\` \— Unverified. \* \`3\` \— Verification requested. \* \`4\` \— Verified. \* \`5\` \— Rejected. \* \`6\` \— Verification failed. - **`zip`** `string` — The emergency address zip code. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned with a single API call. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "emergency_addresses": [ { "address_line1": "55 ALMADEN BLVD", "address_line2": "8 Floor", "city": "SAN JOSE", "country": "US", "id": "Qza2T_KATwCeUfTkzGsOmQ", "is_default": true, "level": 1, "owner": { "extension_number": 101002, "id": "y9th648XRfSL9S61p1TsBw", "name": "ZOOM_API Test" }, "site": { "id": "SQv52YtkRLC2dwrDdYtGsA", "name": "Main site" }, "state_code": "CA", "status": 1, "zip": "95113" } ], "next_page_token": "T6WMY4fJBIAlxPUiqRtwvQS9dvsq8AoRam2", "page_size": 30, "total_records": 20 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Site does not exist: {site\_id} ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add an emergency address - **Method:** `POST` - **Path:** `/phone/emergency_addresses` - **Tags:** Emergency Addresses Adds an emergency address. If the address provided is not an exact match, the system generated corrected address will be used. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:emergency_address:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`address_line1` (required)** `string` — The emergency address line 1. - **`city` (required)** `string` — The emergency address city. - **`country` (required)** `string` — The emergency address country. - **`state_code` (required)** `string` — The emergency address state code. - **`zip` (required)** `string` — The emergency address zip code. - **`address_line2`** `string` — The emergency address line 2. - **`is_default`** `boolean` — Indicates whether the emergency address is default or not. - **`site_id`** `string` — The site ID. Nullable if 'user\_id' is not null. - **`user_id`** `string` — User ID to which the personal emergency address belongs. **Example:** ```json { "address_line1": "55 Almaden Blvd", "address_line2": "8 Floor", "city": "San Jose", "country": "US", "is_default": true, "site_id": "SQv52YtkRLC2dwrDdYtGsA", "state_code": "10", "user_id": "fWOgOALdT1ei4vjXK-QYsA", "zip": "95113" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Emergency address added successfully. ###### Content-Type: application/json - **`address_line1`** `string` — The emergency address line 1. - **`address_line2`** `string` — The emergency address line 2. - **`city`** `string` — The emergency address city. - **`country`** `string` — The emergency address country. - **`id`** `string` — The emergency address ID. - **`is_default`** `boolean` — Indicates whether the emergency address is default or not. - **`level`** `integer`, possible values: `0, 1, 2` — The emergency address owner level: \* \`0\` - Account/Company-level emergency address. \* \`1\` - User/Personal-level emergency address. \* \`2\` - Unknown company/pending emergency address. - **`owner`** `object` — The emergency address owner information for a user-level emergency address. - **`extension_number`** `string` — The emergency address owner extension number. - **`id`** `string` — The emergency address owner ID. - **`name`** `string` — The emergency address owner name. - **`site`** `object` — The emergency address site information. - **`id`** `string` — The site's ID. - **`name`** `string` — The site's name. - **`state_code`** `string` — The emergency address state code. - **`status`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The emergency address verification status: \* \`1\` \— Verification not required. \* \`2\` \— Unverified. \* \`3\` \— Verification requested. \* \`4\` \— Verified. \* \`5\` \— Rejected. \* \`6\` \— Verification failed. - **`zip`** `string` — The emergency address zip code. **Example:** ```json { "address_line1": "55 Almaden Blvd", "address_line2": "8 Floor", "city": "San Jose", "country": "US", "id": "Qza2T_KATwCeUfTkzGsOmQ", "is_default": true, "level": 1, "owner": { "extension_number": "101002", "id": "y9th648XRfSL9S61p1TsBw", "name": "ZOOM_API Test" }, "site": { "id": "SQv52YtkRLC2dwrDdYtGsA", "name": "Main site" }, "state_code": "CA", "status": 1, "zip": "95113" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get emergency address details - **Method:** `GET` - **Path:** `/phone/emergency_addresses/{emergencyAddressId}` - **Tags:** Emergency Addresses Gets the emergency address information. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:emergency_address:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Emergency address retrieved successfully. ###### Content-Type: application/json - **`address_line1`** `string` — The emergency address line 1. - **`address_line2`** `string` — The emergency address line 2. - **`city`** `string` — The emergency address city. - **`country`** `string` — The emergency address country. - **`id`** `string` — The emergency address ID. - **`is_default`** `boolean` — Indicates whether the emergency address is default or not. - **`level`** `integer`, possible values: `0, 1, 2` — The emergency address owner level: \* \`0\` - Account/Company-level emergency address. \* \`1\` - User/Personal-level emergency address. \* \`2\` - Unknown company/pending emergency address. - **`owner`** `object` — The emergency address owner information for a user-level emergency address. - **`extension_number`** `integer`, format: `int64` — The extension number of the emergency address owner . - **`id`** `string` — The emergency address owner ID. - **`name`** `string` — The emergency address owner name. - **`site`** `object` — The emergency address site information. - **`id`** `string` — The site's ID. - **`name`** `string` — The site's name. - **`state_code`** `string` — The emergency address state code. - **`status`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The emergency address verification status: \* \`1\` \— Verification not required. \* \`2\` \— Unverified. \* \`3\` \— Verification requested. \* \`4\` \— Verified. \* \`5\` \— Rejected. \* \`6\` \— Verification failed. - **`zip`** `string` — The emergency address zip code. **Example:** ```json { "address_line1": "55 ALMADEN BLVD", "address_line2": "8 Floor", "city": "San Jose", "country": "US", "id": "Qza2T_KATwCeUfTkzGsOmQ", "is_default": true, "level": 1, "owner": { "extension_number": 101002, "id": "y9th648XRfSL9S61p1TsBw", "name": "ZOOM_API Test" }, "site": { "id": "SQv52YtkRLC2dwrDdYtGsA", "name": "Main site" }, "state_code": "CA", "status": 1, "zip": "95113" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Emergency address does not exist {emergencyAddressId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an emergency address - **Method:** `DELETE` - **Path:** `/phone/emergency_addresses/{emergencyAddressId}` - **Tags:** Emergency Addresses Removes an emergency address. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:emergency_address:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Emergency address deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update an emergency address - **Method:** `PATCH` - **Path:** `/phone/emergency_addresses/{emergencyAddressId}` - **Tags:** Emergency Addresses Updates an emergency address information. If the address provided is not an exact match, the system generated corrected address will be used. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:emergency_address:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`address_line1`** `string` — The emergency address line 1. - **`address_line2`** `string` — The emergency address line 2. - **`city`** `string` — The emergency address city. - **`country`** `string` — The emergency address country. - **`is_default`** `boolean` — Whether the emergency address is default or not. - **`state_code`** `string` — The emergency address state code. - **`zip`** `string` — The emergency address zip code. **Example:** ```json { "address_line1": "55 Almaden Blvd", "address_line2": "8 Floor", "city": "San Jose", "country": "US", "is_default": false, "state_code": "CA", "zip": "95113" } ``` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Emergency address updated successfully. ###### Content-Type: application/json - **`address_line1`** `string` — The emergency address line 1. - **`address_line2`** `string` — The emergency address line 2. - **`city`** `string` — The emergency address city. - **`country`** `string` — The emergency address country. - **`id`** `string` — The emergency address ID. - **`is_default`** `boolean` — Whether the emergency address is default or not. - **`level`** `integer`, possible values: `0, 1, 2` — The emergency address owner level: \* \`0\` - Account/Company-level emergency address. \* \`1\` - User/Personal-level emergency address. \* \`2\` - Unknown company/pending emergency address. - **`owner`** `object` — The emergency address owner information for a user-level emergency address. - **`extension_number`** `integer`, format: `int64` — The extension number of the emergency address owner. - **`id`** `string` — The ID of the emergency address owner. - **`name`** `string` — The name of the emergency address owner. - **`site`** `object` — The information about the emergency address site. - **`id`** `string` — The site's ID. - **`name`** `string` — The site's name. - **`state_code`** `string` — The emergency address state code. - **`status`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The emergency address verification status: \* \`1\` \— Verification not required. \* \`2\` \— Unverified. \* \`3\` \— Verification requested. \* \`4\` \— Verified. \* \`5\` \— Rejected. \* \`6\` \— Verification failed. - **`zip`** `string` — The emergency address zip code. **Example:** ```json { "address_line1": "55 ALMADEN BLVD", "address_line2": "8 Floor", "city": "San Jose", "country": "US", "id": "Qza2T_KATwCeUfTkzGsOmQ", "is_default": true, "level": 1, "owner": { "extension_number": 101002, "id": "y9th648XRfSL9S61p1TsBw", "name": "ZOOM_API Test" }, "site": { "id": "SQv52YtkRLC2dwrDdYtGsA", "name": "Main site" }, "state_code": "CA", "status": 1, "zip": "95113" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Batch add emergency service locations - **Method:** `POST` - **Path:** `/phone/batch_locations` - **Tags:** Emergency Service Locations Adds emergency service locations in batch. **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:write:batch_emergency_locations:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`locations` (required)** `array` **Items:** - **`company_address` (required)** `object` - **`address_line1` (required)** `string` — The location's physical address. - **`country` (required)** `string` — The location's country. - **`address_line2`** `string` — The location's optional physical address information. For example, a suite number. - **`city`** `string` — The location's city. - **`state_code`** `string` — The location's state, province, or territory. - **`vat_number`** `string` — 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. - **`zip`** `string` — The location's ZIP or postal code. - **`display_name` (required)** `string` — The location's display name. - **`identifier` (required)** `string` — The location's ID. - **`bssid`** `string` — The location's BSSID (Basic Service Set Identifier). - **`elin`** `string` — 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. - **`minimum_match_criteria`** `boolean` — 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. - **`network_switches`** `array` **Items:** - **`mac_address`** `string` — The location's assigned MAC address. Required if the \`network\_switches\` value is set. - **`port`** `string` — The location's port label. You \*\*cannot\*\* pass this parameter with the \`port\_prefix\` and \`port\_range\` parameter. - **`port_prefix`** `string` — 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. - **`port_range_from`** `string` — 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. - **`port_range_to`** `string` — 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. - **`parent_identifier`** `string` — The location's parent location ID. Leave this value empty if the current location is a top location. - **`private_ip`** `string` — The location's subnet or private IP address. This field is required if \`minimum\_match\_criteria\` is true. - **`public_ip`** `string` — The location's public IP address. This field is required for top locations. - **`sip_group_name`** `string` — 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. - **`site_id`** `string` — The site ID. **Example:** ```json { "locations": [ { "bssid": "SA43YjfBTS6gJbUpfvIziQ", "company_address": { "address_line1": "55 Almaden Boulevard", "address_line2": "6th floor", "city": "SAN JOSE", "country": "United States", "state_code": "CA", "vat_number": "123456789B01", "zip": "95113" }, "display_name": "example location", "elin": "+12058945656", "identifier": "eRYjZlItQIqlFbCuRA__SQ", "network_switches": [ { "mac_address": "0004f25eec3d", "port": "11", "port_prefix": "1", "port_range_from": "10", "port_range_to": "20" } ], "parent_identifier": "FksDtQDfR9qs3gWXNDsfIw", "private_ip": "192.1.1.2", "public_ip": "192.1.1.1", "sip_group_name": "band width", "minimum_match_criteria": true } ], "site_id": "SQv52YtkRLC2dwrDdYtGsA" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Created. ###### Content-Type: application/json - **`locations`** `array` **Items:** - **`display_name`** `string` — The location's display name. - **`location_id`** `string` — The location ID. **Example:** ```json { "locations": [ { "display_name": "example location", "location_id": "FwOAeL4TRmqQrmF0jOfzkQ" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Location does not exist: {0}. Too many concurrent requests. A request to add locations batch has already been made. Locations size must be less than 10. You can only access up to 5000 locations. Can not bind ELIN if location does not have an emergency address. A phone number can not be bound to multiple locations at the same time. Phone number format invalid. Phone number does not exist. There is an error with the parent location of the sub location. Network switches size must be less than 100. Switch MAC address is required. Duplicate Switch Info found. Mac Address format invalid. Number bssid per location limited to less than 100. BSSID format error. Emergency address Line 1 is required. Emergency address country is required. IP format error. Public IP is required. SIP group does not exist. Identifier can not be matched. You can only access up to {0} level. This location identifier already exists. You cannot have duplicate identifiers. The parent\_identifier can not be the value of the identifier of the same location. This location display\_name already exists. You cannot have duplicate location names. Identifier is required. Location name is required. Emergency address VAT is required in {0}. Emergency address state code is required in {0}. Emergency address zip is required in {0}. The field can not exceed {0} characters. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List emergency service locations - **Method:** `GET` - **Path:** `/phone/locations` - **Tags:** Emergency Service Locations Returns emergency service locations. **Note**: When you enable [multiple sites](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites), the `site_id` parameter is required. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_emergency_locations:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Emergency service locations listed successfully. ###### Content-Type: application/json - **`locations`** `array` — The information about emergency service locations. **Items:** - **`bssid`** `string` — The emergency service location's BSSID (Basic Service Set Identifier). - **`elin`** `object` — The emergency service location's ELIN (Emergency Location Identification Number). - **`phone_number`** `string` — The emergency service location's phone number. - **`phone_number_id`** `string` — The emergency service location's phone number ID. - **`emergency_address`** `object` — The specific emergency address for the location - **`address_line1`** `string` — The location's physical address. - **`address_line2`** `string` — The location's optional physical address information. For example, a suite number. - **`city`** `string` — The location's city. - **`country`** `string` — The location's country. - **`id`** `string` — The emergency address ID. - **`state_code`** `string` — The location's State/Province/Territory. - **`vat_number`** `string` — 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. - **`zip`** `string` — The location's ZIP or postal code. - **`id`** `string` — The emergency service location's ID. - **`identifier`** `string` — The emergency service location's unique ID. - **`minimum_match_criteria`** `boolean` — 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. - **`name`** `string` — The emergency service location's name. - **`network_switches`** `array` — The network switch information. **Items:** - **`mac_address`** `string` — The MAC address. - **`port`** `string` — The port's label. - **`port_prefix`** `string` — The port's prefix. - **`port_range_from`** `string` — The port's range from value. - **`port_range_to`** `string` — The port's range to value. - **`parent_location_id`** `string` — The parent location's ID. - **`private_ip`** `string` — The emergency service location's subnet or private IP address. - **`public_ip`** `string` — The emergency service location's public IP address. - **`sip_group`** `object` — The emergency service location's SIP group information. - **`display_name`** `string` — The SIP group's display name. - **`id`** `string` — The SIP group's ID. - **`site`** `object` — The emergency service location's site information. - **`id`** `string` — The site ID. - **`name`** `string` — The site name. - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The number of records returned with a single API call. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "locations": [ { "bssid": "SA43YjfBTS6gJbUpfvIziQ", "elin": { "phone_number": "+12058945656", "phone_number_id": "9h5vTQJ0TmyKs0wItZ3JAw" }, "id": "eRYjZlItQIqlFbCuRA__SQ", "identifier": "FksDtQDfR9qs3gWXNDsfIw", "name": "example location", "network_switches": [ { "mac_address": "0004f25eec3d", "port": "23", "port_prefix": "01", "port_range_from": "01", "port_range_to": "02" } ], "parent_location_id": "RTGmTYafRU24RqJunfotSA", "private_ip": "192.1.1.2", "public_ip": "192.1.1.1", "sip_group": { "display_name": "band width", "id": "F_WKDH6FRdeddZBcNUlUeA" }, "site": { "id": "SQv52YtkRLC2dwrDdYtGsA", "name": "Main Site" }, "emergency_address": { "id": "Qza2T_KATwCeUfTkzGsOmQ", "address_line1": "55 ALMADEN BLVD", "address_line2": "6th floor", "city": "SAN JOSE", "state_code": "CA", "country": "US", "zip": "95113", "vat_number": "123456789B01" }, "minimum_match_criteria": true } ], "next_page_token": "T6WMY4fJBIAlxPUiqRtwvQS9dvsq8AoRam2", "page_size": 30, "total_records": 20 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add an emergency service location - **Method:** `POST` - **Path:** `/phone/locations` - **Tags:** Emergency Service Locations Adds an emergency service location. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:emergency_location:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`emergency_address_id` (required)** `string` — The emergency location address ID. - **`name` (required)** `string` — The emergency service location's name. - **`bssid`** `string` — A comma-separated list of the emergency service location's BSSIDs (Basic Service Set Identifiers). - **`elin_phone_number_id`** `string` — 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. - **`minimum_match_criteria`** `boolean` — 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. - **`parent_location_id`** `string` — The parent location's ID to assign to the emergency service location. - **`private_ip`** `string` — 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. - **`public_ip`** `string` — A comma-separated list of the emergency service location's public IP addresses. This parameter is required for top locations. - **`sip_group_id`** `string` — The SIP group ID to assign to the emergency service location. This value is not required for non-top locations. - **`site_id`** `string` — The site ID. **Example:** ```json { "bssid": "SA43YjfBTS6gJbUpfvIziQ", "elin_phone_number_id": "9h5vTQJ0TmyKs0wItZ3JAw", "emergency_address_id": "Qza2T_KATwCeUfTkzGsOmQ", "name": "example location update", "parent_location_id": "FwOAeL4TRmqQrmF0jOfzkQ", "private_ip": "192.1.1.3", "public_ip": "192.1.1.4", "sip_group_id": "SA43YjfBTS6gJbUpfvIziQ", "site_id": "F_WKDH6FRdeddZBcNUlUeA", "minimum_match_criteria": true } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Created. ###### Content-Type: application/json - **`id`** `string` — The phone's location ID. - **`name`** `string` — The phone's location name. **Example:** ```json { "id": "eRYjZlItQIqlFbCuRA__SQ", "name": "example location" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation failed. A site ID is required. Parent location does not exist. An emergency address is required. An emergency address is required. A location name is required. A public IP is required. You can only access up to "{0}" level. You can only access up to 5000 locations. The maximum number of "{0}" is {1}. Cannot bind an ELIN if the location does not have an emergency address. IP format error. Duplicate Switch Info found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get emergency service location details - **Method:** `GET` - **Path:** `/phone/locations/{locationId}` - **Tags:** Emergency Service Locations Returns an emergency service location's information. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:emergency_location:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Emergency service location retrieved successfully. ###### Content-Type: application/json - **`bssid`** `string` — The emergency service location's BSSIDs (Basic Service Set Identifiers). - **`elin`** `object` — The ELIN (Emergency Location Identification Number). - **`phone_number`** `string` — The emergency location's phone number. - **`phone_number_id`** `string` — The emergency location's phone number ID. - **`emergency_address`** `object` — The emergency location's address information. - **`address_line1`** `string` — The emergency location address line 1. - **`address_line2`** `string` — The emergency location address line 2. - **`city`** `string` — The emergency location address's city. - **`country`** `string` — The emergency location address's country. - **`id`** `string` — The emergency location address ID. - **`state_code`** `string` — The emergency location address's state code. - **`zip`** `string` — The emergency address's zip code. - **`id`** `string` — The emergency location's ID. - **`minimum_match_criteria`** `boolean` — 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. - **`name`** `string` — The emergency location's name. - **`network_switches`** `array` **Items:** - **`mac_address`** `string` — The emergency location's assigned MAC address. - **`port`** `string` — The port label. - **`port_prefix`** `string` — The port prefix. - **`port_range_from`** `string` — The port starting range number. - **`port_range_to`** `string` — The port ending range number. - **`parent_location_id`** `string` — The emergency location's parent location ID. - **`private_ip`** `string` — The emergency location's subnet or private IP address. - **`public_ip`** `string` — The emergency location's public IP address. - **`sip_group`** `object` — The emergency location's SIP group information. - **`display_name`** `string` — The SIP group's display name. - **`id`** `string` — The SIP group ID. - **`site`** `object` — The emergency location's site information. - **`id`** `string` — The site ID. - **`name`** `string` — The site name. **Example:** ```json { "bssid": "SA43YjfBTS6gJbUpfvIziQ", "elin": { "phone_number": "+12058945656", "phone_number_id": "9h5vTQJ0TmyKs0wItZ3JAw" }, "emergency_address": { "address_line1": "55 ALMADEN BLVD", "address_line2": "6th floor", "city": "SAN JOSE", "country": "US", "id": "Qza2T_KATwCeUfTkzGsOmQ", "state_code": "CA", "zip": "95113" }, "id": "eRYjZlItQIqlFbCuRA__SQ", "name": "example location", "network_switches": [ { "mac_address": "64167f379097", "port": "20", "port_prefix": "2", "port_range_from": "01", "port_range_to": "05" } ], "parent_location_id": "FksDtQDfR9qs3gWXNDsfIw", "private_ip": "192.1.1.2", "public_ip": "192.1.1.1", "sip_group": { "display_name": "band width", "id": "F_WKDH6FRdeddZBcNUlUeA" }, "site": { "id": "SQv52YtkRLC2dwrDdYtGsA", "name": "Main site" }, "minimum_match_criteria": true } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Location does not exist: {0}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an emergency location - **Method:** `DELETE` - **Path:** `/phone/locations/{locationId}` - **Tags:** Emergency Service Locations Removes an emergency location. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:emergency_location:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Location deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update emergency service location - **Method:** `PATCH` - **Path:** `/phone/locations/{locationId}` - **Tags:** Emergency Service Locations Updates an emergency location's information. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:emergency_location:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`bssid`** `string` — A comma-separated list of the emergency service location's BSSIDs (Basic Service Set Identifiers). - **`elin_phone_number_id`** `string` — 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. - **`emergency_address_id`** `string` — The emergency location's address ID. - **`minimum_match_criteria`** `boolean` — 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. - **`name`** `string` — The emergency location's name. - **`network_switches`** `array` **Items:** - **`mac_address`** `string` — The emergency location's assigned MAC address. - **`port`** `string` — The emergency location's port label. You \*\*cannot\*\* pass this parameter with the \`port\_prefix\` and \`port\_range\` parameter. - **`port_prefix`** `string` — The emergency 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. - **`port_range_from`** `string` — The emergency 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. - **`port_range_to`** `string` — The emergency 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. - **`private_ip`** `string` — 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. - **`public_ip`** `string` — A comma-separated list of the emergency service location's public IP addresses. This parameter is \*\*required\*\* for top locations. - **`sip_group_id`** `string` — The SIP group ID to assign to the emergency service location. This value is not required for non-top locations. **Example:** ```json { "bssid": "SA43YjfBTS6gJbUpfvIziQ", "elin_phone_number_id": "+12058945656", "emergency_address_id": "Qza2T_KATwCeUfTkzGsOmQ", "name": "example location", "network_switches": [ { "mac_address": "0004f25eec3d", "port": "22", "port_prefix": "01", "port_range_from": "02", "port_range_to": "05" } ], "private_ip": "192.1.1.2", "public_ip": "192.1.1.1", "sip_group_id": "SA43YjfBTS6gJbUpfvIziQ", "minimum_match_criteria": true } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Location updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List external contacts - **Method:** `GET` - **Path:** `/phone/external_contacts` - **Tags:** External Contacts Lists the external contacts. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_external_contacts:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` External contacts listed successfully. ###### Content-Type: application/json - **`external_contacts`** `array` — External contacts information. **Items:** - **`auto_call_recorded`** `boolean` — Whether to allow the automatic call recording. - **`description`** `string` — The external contact's description. - **`email`** `string` — The external contact's email address. - **`enable_internal_extension`** `boolean` — Whether to treat this contact as an internal extension - **`extension_number`** `string` — The external contact's extension number. - **`external_contact_id`** `string` — Zoom-generated external contact ID. - **`id`** `string` — Customer-configured external contact ID. - **`name`** `string` — The external contact's username or extension display name. - **`phone_numbers`** `array` — The external contact's phone numbers. **Items:** `string` - **`profile_picture_download_url`** `string` — The profile picture's download URL. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned with a single API call. **Example:** ```json { "external_contacts": [ { "description": "External contact Johnson", "email": "example@example.com", "extension_number": "101014", "external_contact_id": "OJGi5xOFQPmrJbKg68-iWg", "id": "external_contact_01", "name": "Johnson", "phone_numbers": [ "+12058945656" ], "auto_call_recorded": true, "profile_picture_download_url": "https://file.zoom.us/public/file/NgY6XhB0Q1KUOIpbnjQrTA/MS41Lm3jVUCBCmBzQxZEXUvHcJ_YRtZ-CVuQ68tE7kKC60t_/twP0LQrnQfS7bQ6utANohw.png", "enable_internal_extension": true } ], "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 30 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add an external contact - **Method:** `POST` - **Path:** `/phone/external_contacts` - **Tags:** External Contacts Adds an external contact. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:external_contact:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`name` (required)** `string` — The external contact's username or extension display name. - **`auto_call_recorded`** `boolean` — Whether to allow the automatic call recording. - **`description`** `string` — The external contact's description. - **`email`** `string` — The external contact's email address. - **`enable_internal_extension`** `boolean` — This field is set to true when the contact should be treated as an internal extension for users outside their permitted calling locations or during restricted calling hours. Leave blank or set to false if the contact is not intended to be treated as an internal extension. - **`extension_number`** `string` — The external contact's extension number in the original phone system. Make certain that this extension number is \*\*not\*\* duplicated with an existing extension number in the account. - **`id`** `string` — The customer-configured external contact ID. It is recommended that you use a primary key from the original phone system. If you do \*\*not\*\* use this parameter, the API automatically generates an \`externalContactId\`. - **`phone_numbers`** `array` — A comma-separated list of the external contact's phone numbers. This value \*\*must\*\* be in \[E.164]\(https\://en.wikipedia.org/wiki/E.164) format. If you do not provide an extension number, you \*\*must\*\* provide this value. **Items:** `string` - **`profile_picture`** `object` — This field is optional. If provided, the image will be used as the profile picture. Supported file formats : JPG, PNG, JPEG, GIF, the size limit is 2MB. If you need to use this field, contact Zoom Support. - **`base64_encoding`** `string` — The ASCII string to send \[Base64]\(https\://en.wikipedia.org/wiki/Base64) encoded picture as text. The size limit is 2MB. - **`type`** `string`, possible values: `"JPG", "JPEG", "PNG", "GIF"` — The format of attachments. Supported formats: JPG, PNG, JPEG, GIF. - **`routing_path`** `string` — The external contact's SIP group, to define the call routing path. This is for customers that use SIP trunking. **Example:** ```json { "description": "External contact Johnson", "email": "example@example.com", "extension_number": "101014", "id": "external_contact_01", "name": "Johnson", "phone_numbers": [ "+12058945656" ], "routing_path": "PSTN", "auto_call_recorded": true, "profile_picture": { "type": "PNG", "base64_encoding": "iVBORw0KGgo..." }, "enable_internal_extension": true } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* External contact added successfully. ###### Content-Type: application/json - **`external_contact_id`** `string` — The Zoom-generated external contact ID. - **`name`** `string` — The external contact's username or extension display name. **Example:** ```json { "name": "Johnson", "external_contact_id": "nqerMCD0Tu6RPGoCpVbPtA" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation failed. - If you need to use profile\_picture field, please contact Zoom Support. - Profile picture size must less than 2 MB. - Profile picture file type error. - Profile picture file data error. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get external contact details - **Method:** `GET` - **Path:** `/phone/external_contacts/{externalContactId}` - **Tags:** External Contacts Returns an external contact's information. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:external_contact:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* External contact information retrieved successfully. ###### Content-Type: application/json - **`auto_call_recorded`** `boolean` — Whether to allow the automatic call recording. - **`description`** `string` — The external contact's description. - **`email`** `string` — The external contact's email address. - **`enable_internal_extension`** `boolean` — Whether to treat this contact as an internal extension - **`extension_number`** `string` — The external contact's extension number. - **`external_contact_id`** `string` — The Zoom-generated external contact ID. - **`id`** `string` — The customer-configured external contact ID. - **`name`** `string` — The external contact's username or extension display name. - **`phone_numbers`** `array` — The external contact's phone numbers. **Items:** `string` - **`profile_picture_download_url`** `string` — profile picture download url **Example:** ```json { "description": "External contact Johnson", "email": "example@example.com", "extension_number": "101014", "external_contact_id": "OJGi5xOFQPmrJbKg68-iWg", "id": "external_contact_01", "name": "Johnson", "phone_numbers": [ "+12058945657" ], "auto_call_recorded": true, "profile_picture_download_url": "https://file.zoom.us/public/file/NgY6XhB0Q1KUOIpbnjQrTA/MS41Lm3jVUCBCmBzQxZEXUvHcJ_YRtZ-CVuQ68tE7kKC60t_/twP0LQrnQfS7bQ6utANohw.png", "enable_internal_extension": true } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
External contact does not exist: {externalContactId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an external contact - **Method:** `DELETE` - **Path:** `/phone/external_contacts/{externalContactId}` - **Tags:** External Contacts Removes an external contact. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:external_contact:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* External contact deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update external contact - **Method:** `PATCH` - **Path:** `/phone/external_contacts/{externalContactId}` - **Tags:** External Contacts Updates an external contact's information. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:external_contact:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`auto_call_recorded`** `boolean` — Whether to allow the automatic call recording. - **`description`** `string` — The external contact's description. - **`email`** `string` — The external contact's email address. - **`enable_internal_extension`** `boolean` — This field is set to true when the contact should be treated as an internal extension for users outside their permitted calling locations or during restricted calling hours. Leave blank to retain the existing status of external contact or set to false if the contact is not intended to be treated as an internal extension. - **`extension_number`** `string` — The external contact's extension number in the original phone system. Make certain that this extension number is \*\*not\*\* duplicated with an existing extension number in the account. - **`id`** `string` — The customer-configured external contact ID. We recommend that you use a primary key from the original phone system. If you do \*\*not\*\* use this parameter, the API automatically generates an \`externalContactId\`. - **`name`** `string` — The external contact's username or extension display name. - **`phone_numbers`** `array` — A comma-separated list of the external contact's phone numbers. This value \*\*must\*\* be in \[E.164]\(https\://en.wikipedia.org/wiki/E.164) format. If you do not provide an extension number, you \*\*must\*\* provide this value. **Items:** `string` - **`profile_picture`** `object` — The \`profile\_picture\` field is optional. If you need to use this field, please contact Zoom Support. If provided, it determines how the user's profile picture should be handled: - Omit profile\_picture field: The profile picture will remain unchanged. - Set type or base64\_encoding to empty strings (""): The profile picture will be reset to the system default. - Provide a valid image (such as type is "png" and a valid Base64 string in base64\_encoding): The profile picture will be updated accordingly. The following file formats are supported : JPG, PNG, JPEG, GIF, the size limit is 2MB. Example (reset to default): \`\`\`json { ... "profile\_picture": { "type": "", "base64\_encoding": "" } ... } \`\`\` Example (update with a new picture): \`\`\`json { "profile\_picture": { "type": "png", "base64\_encoding": "iVBORw0KGgoAAAANSUhEUgAABVY..." } } \`\`\` - **`base64_encoding`** `string` — The ASCII string to send \[Base64]\(https\://en.wikipedia.org/wiki/Base64) encoded picture as text. The size limit is 2MB. - **`type`** `string`, possible values: `"JPG", "JPEG", "PNG", "GIF"` — The format of attachments. Supported formats: JPG, PNG, JPEG, GIF. - **`routing_path`** `string` — The external contact's SIP group, to define the call routing path. This is for customers that use SIP trunking. **Example:** ```json { "description": "External contact Johnson", "email": "example@example.com", "extension_number": "101014", "id": "external_contact_01", "name": "Johnson", "phone_numbers": [ "+12058945657" ], "routing_path": "PSTN", "auto_call_recorded": true, "profile_picture": { "type": "PNG", "base64_encoding": "iVBORw0KGgo..." }, "enable_internal_extension": true } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* External contact updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Validation failed. - External contact does not exist: {0}. - If you need to use profile\_picture field, please contact Zoom Support. - Profile picture size must less than 2 MB. - Profile picture file type error. - Profile picture file data error. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Upload fax file - **Method:** `POST` - **Path:** `/fax/files` - **Tags:** Fax Uploads fax file **Note:** - Please use `https://fileapi.zoom.us` instead of `https://api.zoom.us`, the full path is `https://fileapi.zoom.us/v2/fax/files` - Supported file formats: `.zip` - The maximum size of file is 50MB **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:send_fax`,`phone:write:send_fax:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `RESOURCE-INTENSIVE` #### Request Body ##### Content-Type: multipart/form-data - **`file` (required)** `object` — The fax file which need upload. The ZIP file may contain files of the following types: \* \`pdf\` \* \`jpg\` \* \`jpeg\` \* \`txt\` \* \`png\` \* \`doc\` \* \`docx\` The ZIP file should contain files named using the format {order}.{type}. The order defines the page sequence for the fax. For example: \* \`1.pdf\` (first page) \* \`2.txt\` (second page) \* \`3.png\` (third page) For multi-page documents, additional files will be placed immediately after the preceding file in the sequence. **Example:** ```json "Content-Disposition: form-data; name=\"\"; filename=\"Test.zip\" Content-Type: application/zip" ``` #### Responses ##### Status: 201 File successfully uploaded. ###### Content-Type: application/json - **`file_id` (required)** `string` — Fax ZIP file ID **Example:** ```json { "file_id": "PM6G6YqvTu-7Yg3xJpFpgA" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1001\` \
File size exceeded maximum 50MB \
\*\*Error Code:\*\* \`1002\` \
Invalid expire, should between 1 and 604800 seconds \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Get extension's fax logs - **Method:** `GET` - **Path:** `/phone/extension/{extensionId}/fax/logs` - **Tags:** Fax Returns the extension's fax logs. **Prerequisites** - User must belong to a Business or Enterprise account. - User must have a Zoom Phone license. **[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:list_fax_log`,`phone:read:list_fax_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 Successful response with fax log records ###### Content-Type: application/json - **`fax_logs` (required)** `array` — The list of fax logs. **Items:** - **`create_time`** `string`, format: `date-time` — The fax log created time in UTC time zone. - **`direction`** `string`, possible values: `"outbound", "inbound"` — The fax log's direction. - **`extension_id`** `string` — The owner's extension ID. - **`extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The extension type of fax log owner. - **`fax_id`** `string` — The Zoom phone fax's unique ID. - **`fax_log_id`** `string` — The Zoom phone fax log's unique ID. - **`file_id`** `string` — The fax PDF file ID. - **`file_pages_count`** `integer` — The fax file pages count. - **`read_status`** `string`, possible values: `"read", "unread"` — The fax log's read status. - **`receiver_extension_id`** `string` — The receiver's extension ID. - **`receiver_extension_number`** `string` — The receiver's extension number. - **`receiver_extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The receiver's extension type. - **`receiver_location`** `string` — The receiver's location. - **`receiver_name`** `string` — The receiver's name. - **`receiver_number`** `string` — The receiver's fax number. - **`receiver_type`** `string`, possible values: `"client", "ata", "pstn"` — The receiver's type. - **`receiver_user_agent`** `string` — The receiver's user agent. - **`sender_extension_id`** `string` — The sender's extension ID. - **`sender_extension_number`** `string` — The sender's extension number. - **`sender_extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The sender's extension type. - **`sender_location`** `string` — The sender's location. - **`sender_name`** `string` — The sender's name. - **`sender_number`** `string` — The sender's fax number. - **`sender_type`** `string`, possible values: `"client", "ata", "pstn", "email", "openapi"` — The sender's type. - **`sender_user_agent`** `string` — The sender's user agent. - **`site_id`** `string` — The site's unique ID. - **`site_name`** `string` — The site's name. - **`status`** `string`, possible values: `"failed", "processing", "submitted", "sent", "received"` — The fax status. - **`total_records` (required)** `integer` — The total number of matching fax logs. - **`next_page_token`** `string` — The token to retrieve the next page of results. **Example:** ```json { "next_page_token": "w3cCmMNsRc-pMFhksHrRdQ", "total_records": 300, "fax_logs": [ { "fax_log_id": "w2cCmMNsRc-pMFhksHrRdQ", "fax_id": "6A2BE84EE494479B9AFA29F4BB8A8EA6", "site_id": "rtZRykrtTmKSWXJeW-xsBg", "site_name": "Main Site", "direction": "outbound", "extension_id": "VLhIp1jHR_Sgu96DLJpjag", "extension_type": "callQueue", "sender_extension_id": "VLhIp1jHR_Sgu96DLJpjag", "sender_extension_type": "user", "sender_extension_number": "123", "sender_name": "Tester 1", "sender_number": "+12092080933", "sender_type": "client", "sender_location": "California", "sender_user_agent": "Poly/PolyATA400-4.0.2.6778", "receiver_extension_id": "iKBkkqgGQV-bEttrhP5T0g", "receiver_extension_type": "user", "receiver_extension_number": "123", "receiver_name": "Tester 2", "receiver_number": "+12092080933", "receiver_type": "ata", "receiver_location": "Alabama", "receiver_user_agent": "Poly/PolyATA400-4.0.2.6778", "file_id": "bayEy0y9RsadUbuEGrZBYA", "file_pages_count": 6, "status": "sent", "read_status": "read", "create_time": "2021-10-08T16:12:04Z" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Send fax - **Method:** `POST` - **Path:** `/phone/fax/documents` - **Tags:** Fax Sends a fax to receivers. **Prerequisites** - User must belong to a Business or Enterprise account. - User must have a Zoom Phone license. **Note:** Faxes sent through the API will first use the account-level page pool, if available. If no page pool is available, pages meter individually. Unlimited faxing does not apply to faxes sent through the API. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:send_fax`,`phone:write:send_fax:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`file_id` (required)** `string` — The fax ZIP file ID. Users can upload a ZIP file with fax files through the Upload Fax File endpoint. The ZIP file may contain files of the following types: \* \`pdf\` \* \`jpg\` \* \`jpeg\` \* \`txt\` \* \`png\` \* \`doc\` \* \`docx\` The ZIP file should contain files named using the format {order}.{type}. The order defines the page sequence for the fax. For example: \* \`1.pdf\` (first page) \* \`2.txt\` (second page) \* \`3.png\` (third page) For multi-page documents, additional files will be placed immediately after the preceding file in the sequence. - **`receivers` (required)** `array` — A list of fax receivers. A maximum of 50 receivers is allowed. **Items:** - **`receiver_number` (required)** `string` — The fax receiver's number. - **`receiver_name`** `string` — The fax receiver's name. - **`sender_number` (required)** `string` — The fax sender's number. - **`sender_name`** `string` — The fax sender's name. **Example:** ```json { "sender_number": "+12093190827", "sender_name": "Kitty", "file_id": "9PrstHgaRYW4ywAtCWRXwQ", "receivers": [ { "receiver_number": "+12093190827", "receiver_name": "Mickey" } ] } ``` #### Responses ##### Status: 201 A list of fax delivery results for each recipient. ###### Content-Type: application/json - **`fax_id`** `string` — The Zoom Phone fax ID. - **`receivers`** `array` **Items:** - **`receiver_number` (required)** `string` — The fax receiver's number. - **`status` (required)** `string`, possible values: `"success", "unknown", "invalid_parameter", "sender_fax_disabled", "invalid_sender_number", "invalid_receiver_number", "receiver_fax_disabled"` — The status of the current receiver's number: \* \`success\` - Fax sent successfully \* \`unknown\` - Unknown error occurred \* \`invalid\_parameter\` - Invalid parameter provided \* \`sender\_fax\_disabled\` - Sender's fax feature is disabled \* \`invalid\_sender\_number\` - Invalid sender number \* \`invalid\_receiver\_number\` - Invalid receiver number \* \`receiver\_fax\_disabled\` - Receiver's fax feature is disabled - **`fax_log_id`** `string` — The Zoom Phone fax log ID. **Example:** ```json { "fax_id": "6A2BE84EE494479B9AFA29F4BB8A8EA6", "receivers": [ { "receiver_number": "+12093190827", "fax_log_id": "Jvj4EboFSLOReVbR24xNkA", "status": "success" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Get account's fax logs - **Method:** `GET` - **Path:** `/phone/fax/logs` - **Tags:** Fax Returns the account's fax logs. **Prerequisites** - User must belong to a Business or Enterprise account. - User must have a Zoom Phone license. **[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:list_fax_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 Successful response with fax log records ###### Content-Type: application/json - **`fax_logs` (required)** `array` — The list of fax logs. **Items:** - **`create_time`** `string`, format: `date-time` — The fax log created time in UTC time zone. - **`direction`** `string`, possible values: `"outbound", "inbound"` — The fax log's direction. - **`extension_id`** `string` — The owner's extension ID. - **`extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The extension type of fax log owner. - **`fax_id`** `string` — The Zoom phone fax's unique ID. - **`fax_log_id`** `string` — The Zoom phone fax log's unique ID. - **`file_id`** `string` — The fax PDF file ID. - **`file_pages_count`** `integer` — The fax file pages count. - **`read_status`** `string`, possible values: `"read", "unread"` — The fax log's read status. - **`receiver_extension_id`** `string` — The receiver's extension ID. - **`receiver_extension_number`** `string` — The receiver's extension number. - **`receiver_extension_type`** `string`, possible values: `"user", "call_queue", "auto_receptionist", "common_area", "shared_line_group"` — The receiver's extension type. - **`receiver_location`** `string` — The receiver's location. - **`receiver_name`** `string` — The receiver's name. - **`receiver_number`** `string` — The receiver's fax number. - **`receiver_type`** `string`, possible values: `"client", "ata", "pstn"` — The receiver's type. - **`receiver_user_agent`** `string` — The receiver's user agent. - **`sender_extension_id`** `string` — The sender's extension ID. - **`sender_extension_number`** `string` — The sender's extension number. - **`sender_extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The sender's extension type. - **`sender_location`** `string` — The sender's location. - **`sender_name`** `string` — The sender's name. - **`sender_number`** `string` — The sender's fax number. - **`sender_type`** `string`, possible values: `"client", "ata", "pstn", "email", "openapi"` — The sender's type. - **`sender_user_agent`** `string` — The sender's user agent. - **`site_id`** `string` — The site's unique ID. - **`site_name`** `string` — The site's name. - **`status`** `string`, possible values: `"failed", "processing", "submitted", "sent", "received"` — The fax status. - **`total_records` (required)** `integer` — The total number of matching fax logs. - **`next_page_token`** `string` — The token to retrieve the next page of results. **Example:** ```json { "next_page_token": "w3cCmMNsRc-pMFhksHrRdQ", "total_records": 300, "fax_logs": [ { "fax_log_id": "w2cCmMNsRc-pMFhksHrRdQ", "fax_id": "6A2BE84EE494479B9AFA29F4BB8A8EA6", "site_id": "rtZRykrtTmKSWXJeW-xsBg", "site_name": "Main Site", "direction": "outbound", "extension_id": "VLhIp1jHR_Sgu96DLJpjag", "extension_type": "callQueue", "sender_extension_id": "VLhIp1jHR_Sgu96DLJpjag", "sender_extension_type": "user", "sender_extension_number": "123", "sender_name": "Tester 1", "sender_number": "+12092080933", "sender_type": "client", "sender_location": "California", "sender_user_agent": "Poly/PolyATA400-4.0.2.6778", "receiver_extension_id": "iKBkkqgGQV-bEttrhP5T0g", "receiver_extension_type": "user", "receiver_extension_number": "123", "receiver_name": "Tester 2", "receiver_number": "+12092080933", "receiver_type": "ata", "receiver_location": "Alabama", "receiver_user_agent": "Poly/PolyATA400-4.0.2.6778", "file_id": "bayEy0y9RsadUbuEGrZBYA", "file_pages_count": 6, "status": "sent", "read_status": "read", "create_time": "2021-10-08T16:12:04Z" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get fax log details - **Method:** `GET` - **Path:** `/phone/fax/logs/{faxLogId}` - **Tags:** Fax Returns the fax log's details. **Prerequisites** - User must belong to a Business or Enterprise account. - User must have a Zoom Phone license. **[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:list_fax_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 The successful response. ###### Content-Type: application/json **Array of:** - **`create_time`** `string`, format: `date-time` — The fax log created time in UTC time zone. - **`direction`** `string`, possible values: `"outbound", "inbound"` — The fax log's direction. - **`extension_id`** `string` — The owner's extension ID. - **`extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The extension type of fax log owner. - **`fax_id`** `string` — The Zoom phone fax's unique ID. - **`fax_log_id`** `string` — The Zoom phone fax log's unique ID. - **`file_id`** `string` — The fax PDF file ID. - **`file_pages_count`** `integer` — The fax file's page count. - **`node`** `integer` — Inside one fax workflow, this field is a sequential number to indicate the orders of the events which start from 0. - **`read_status`** `string`, possible values: `"read", "unread"` — The fax log's read status. - **`receiver_extension_id`** `string` — The receiver's extension ID. - **`receiver_extension_number`** `string` — The receiver's extension number. - **`receiver_extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The receiver's extension type. - **`receiver_location`** `string` — The receiver's location. - **`receiver_name`** `string` — The receiver's name. - **`receiver_number`** `string` — The receiver's fax number. - **`receiver_type`** `string`, possible values: `"client", "ata", "pstn"` — The receiver's type. - **`receiver_user_agent`** `string` — The receiver's user agent. - **`retry_times`** `integer` — This field retries the times for sending or receiving. - **`sender_extension_id`** `string` — The sender's extension ID. - **`sender_extension_number`** `string` — The sender's extension number. - **`sender_extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "sharedLineGroup"` — The sender's extension type. - **`sender_location`** `string` — The sender's location. - **`sender_name`** `string` — The sender's name. - **`sender_number`** `string` — The sender's fax number. - **`sender_type`** `string`, possible values: `"client", "ata", "pstn", "email", "openapi"` — The sender's type. - **`sender_user_agent`** `string` — The sender's user agent. - **`site_id`** `string` — The site's unique ID. - **`site_name`** `string` — Site's name. - **`status`** `string`, possible values: `"failed", "processing", "submitted", "sent", "received"` — The fax status. - **`status_reason`** `string`, possible values: `"success", "no_answer", "number_busy", "invalid_phone_number", "failure_transmission", "internal_system_error", "fax_machine_not_detected"` — The reason of fax log's status. **Example:** ```json [ { "fax_log_id": "w2cCmMNsRc-pMFhksHrRdQ", "fax_id": "6A2BE84EE494479B9AFA29F4BB8A8EA6", "site_id": "rtZRykrtTmKSWXJeW-xsBg", "site_name": "Main Site", "direction": "outbound", "extension_id": "VLhIp1jHR_Sgu96DLJpjag", "extension_type": "callQueue", "sender_extension_id": "VLhIp1jHR_Sgu96DLJpjag", "sender_extension_type": "user", "sender_extension_number": "123", "sender_name": "Tester 1", "sender_number": "+12092080933", "sender_type": "client", "sender_location": "California", "sender_user_agent": "Poly/PolyATA400-4.0.2.6778", "receiver_extension_id": "iKBkkqgGQV-bEttrhP5T0g", "receiver_extension_type": "user", "receiver_extension_number": "123", "receiver_name": "Tester 2", "receiver_number": "+12092080933", "receiver_type": "ata", "receiver_location": "Alabama", "receiver_user_agent": "Poly/PolyATA400-4.0.2.6778", "file_id": "bayEy0y9RsadUbuEGrZBYA", "file_pages_count": 6, "status": "sent", "read_status": "read", "status_reason": "no_answer", "retry_times": 0, "node": 0, "create_time": "2021-10-08T16:12:04Z" } ] ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`40401\` \
Fax log not found \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Delete fax log - **Method:** `DELETE` - **Path:** `/phone/fax/logs/{faxLogId}` - **Tags:** Fax Deletes a specific fax log. **Prerequisites** - User must belong to a Business or Enterprise account. - User must have a Zoom Phone license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:fax_log`,`phone:delete:fax_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 The fax log was successfully deleted. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Please Input Message ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`400001\` \
Fax log not found for faxLogId. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Update fax log read status - **Method:** `PATCH` - **Path:** `/phone/fax/logs/{faxLogId}` - **Tags:** Fax Updates the read status of a specific fax log. **Prerequisites** - User must belong to a Business or Enterprise account. - User must have a Zoom Phone license. **[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:fax_log:admin`,`phone:read:fax_log` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 Fax log read status successfully updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Please Input Message \*\*Error Code:\*\* \`400001\` \
Fax log not found for faxLogId. \
\*\*Error Code:\*\* \`400201\` \
The read status is invalid. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Download fax file - **Method:** `GET` - **Path:** `/phone/fax/logs/{faxLogId}/file/{fileId}` - **Tags:** Fax Downloads the fax file. \**Prerequisites* - User must belong to a Business or Enterprise account. - User must have a Zoom Phone license. **[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:fax_log`,`phone:read:fax_log:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `RESOURCE-INTENSIVE` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`40401\` \
Fax log not found for faxLogId: {faxLogId} \
\*\*Error Code:\*\* \`40402\` \
Fax file not found for fileId: {fileId} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List firmware update rules - **Method:** `GET` - **Path:** `/phone/firmware_update_rules` - **Tags:** Firmware Update Rules Use this API to get [firmware update rules](https://support.zoom.us/hc/en-us/articles/360054198852-Setting-up-firmware-update-rules). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:list_firmware_update_rules:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully listed the firmware update rules. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of the available result list exceeds the page size. - **`page_size`** `integer` — The size of the page. - **`rules`** `array` — Firmware update rules list. **Items:** - **`device_model`** `string` — Device model name. - **`device_type`** `string` — Device type. - **`rule_id`** `string` — Unique identifier of the firmware update rule. - **`version`** `string` — Firmware version. **Example:** ```json { "next_page_token": "10mHdrdYyMxKi8LQhL7GPI6BWj65IcrbjJ2", "page_size": 30, "rules": [ { "rule_id": "3h_bQL5MR_-sCmlJcTclVg", "version": "3.4.5.18", "device_type": "AudioCodes", "device_model": "445hd" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a firmware update rule - **Method:** `POST` - **Path:** `/phone/firmware_update_rules` - **Tags:** Firmware Update Rules Use this API to add a [firmware update rule](https://support.zoom.us/hc/en-us/articles/360054198852-Setting-up-firmware-update-rules). **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:write:firmware_update_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`device_model` (required)** `string` — Device model name. - **`device_type` (required)** `string` — Device type. - **`version` (required)** `string` — Firmware version. - **`restart_type`** `integer`, possible values: `1, 2`, default: `1` — Restart type: \`1\` - Restart the devices immediately. \`2\` - Restart with the next resync or auto pull - **`site_id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672). This can be retrieved from the \[List Phone Sites]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#operation/listPhoneSites) API. Required if multiple sites are enabled. **Example:** ```json { "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "version": "3.4.5.18", "device_type": "AudioCodes", "device_model": "445hd", "restart_type": 1 } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Successfully added a firmware update rule. ###### Content-Type: application/json - **`rule_Id`** `string` — Unique identifier of the firmware update rule. **Example:** ```json { "rule_Id": "MRNStlOVS02fJ6pOAzrh0A" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
The firmware version does not exist, firmware version:{0}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get firmware update rule information - **Method:** `GET` - **Path:** `/phone/firmware_update_rules/{ruleId}` - **Tags:** Firmware Update Rules Use this API to get the [firmware update rule](https://support.zoom.us/hc/en-us/articles/360054198852-Setting-up-firmware-update-rules) information. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:firmware_update_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully get the firmware update rule. ###### Content-Type: application/json - **`device_model`** `string` — Device model name. - **`device_type`** `string` — Device type. - **`update_log`** `string` — The update log. - **`version`** `string` — Firmware version. **Example:** ```json { "device_type": "AudioCodes", "device_model": "445hd", "version": "3.4.5.18", "update_log": "1. Supports call forwarding for Zoom Phone" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Firmware rule (ID: {0}) does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete firmware update rule - **Method:** `DELETE` - **Path:** `/phone/firmware_update_rules/{ruleId}` - **Tags:** Firmware Update Rules Use this API to delete the [firmware update rule](https://support.zoom.us/hc/en-us/articles/360054198852-Setting-up-firmware-update-rules). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:delete:firmware_update_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully deleted firmware update rule. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
The rule does not exist, rule id:{0}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update firmware update rule - **Method:** `PATCH` - **Path:** `/phone/firmware_update_rules/{ruleId}` - **Tags:** Firmware Update Rules Use this API to update a specific [firmware update rule](https://support.zoom.us/hc/en-us/articles/360054198852-Setting-up-firmware-update-rules). **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:firmware_update_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`device_model` (required)** `string` — Device model name. - **`device_type` (required)** `string` — Device type. - **`version` (required)** `string` — Firmware version. - **`restart_type`** `integer`, possible values: `1, 2`, default: `1` — Restart type: \`1\` - Restart the devices immediately. \`2\` - Restart with the next resync or auto pull **Example:** ```json { "version": "3.4.5.18", "device_type": "AudioCodes", "device_model": "445hd", "restart_type": 1 } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully updated a firmware update rule. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
The rule does not exist, rule id:{0}.\
The firmware version does not exist, firmware version:{0}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List updatable firmwares - **Method:** `GET` - **Path:** `/phone/firmwares` - **Tags:** Firmware Update Rules Use this API to get updatable [firmwares](https://support.zoom.us/hc/en-us/articles/360054198852-Setting-up-firmware-update-rules). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:list_firmwares:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully listed the firmwares. ###### Content-Type: application/json - **`firmwares`** `array` — Firmwares list. **Items:** - **`device_model`** `string` — Device model name. - **`device_type`** `string` — Device type. - **`versions`** `array` — Firmware versions. **Items:** - **`expire_time`** `string` — Expire time. - **`status`** `integer`, possible values: `1, 2, 3` — Version status: \* \`1\` \— Available. \* \`2\` \— Unavailable. \* \`3\` \— Sunset - **`update_log`** `string` — The update log. - **`version`** `string` — Firmware version. **Example:** ```json { "firmwares": [ { "device_type": "AudioCodes", "device_model": "445hd", "versions": [ { "version": "3.4.5.18", "update_log": "1. Supports call forwarding for Zoom Phone", "expire_time": "2021-05-29T00:32:16.000Z", "status": 1 } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List group call pickup objects - **Method:** `GET` - **Path:** `/phone/group_call_pickup` - **Tags:** Group Call Pickup Use this API to retrieve a list of [Group Call Pickup](https://support.zoom.us/hc/en-us/articles/360060107472-Setting-up-and-using-group-call-pickup) objects in an account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:list_call_pickup_groups:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Group listed successfully. ###### Content-Type: application/json - **`group_call_pickup`** `array` **Items:** - **`cost_center`** `string` — Cost center name. - **`delay`** `integer`, possible values: `0, 5, 10, 15` — Determines after how much time (in seconds) the group should be notified: default is \`0\` second. - **`department`** `string` — Department name. - **`description`** `string` — Group call pickup description. - **`directed_call_pickup`** `boolean` — Whether the ringtone is on. - **`display_name`** `string` — Name of the group. - **`extension_id`** `string` — Extension ID. - **`extension_number`** `integer`, format: `int64` — Extension number. - **`id`** `string` — ID of the group. - **`member_count`** `integer` — Member count of the group. - **`site`** `object` - **`id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`name`** `string` — Name of the site. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "group_call_pickup": [ { "id": "qLZ4vXb8RAydayOR5ckYMg", "display_name": "testGCP", "extension_id": "testGCP", "extension_number": 10002, "member_count": 1, "description": "test", "delay": 0, "cost_center": "test", "department": "test", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "testGCPSite" }, "directed_call_pickup": true } ], "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 30, "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a group call pickup object - **Method:** `POST` - **Path:** `/phone/group_call_pickup` - **Tags:** Group Call Pickup Use this API to add a [Group Call Pickup](https://support.zoom.us/hc/en-us/articles/360060107472-Setting-up-and-using-group-call-pickup) instance to the account that has the Zoom Phone license assigned. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:write:call_pickup_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`display_name` (required)** `string` — Name of the group. - **`site_id` (required)** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`delay`** `integer`, possible values: `0, 5, 10, 15`, default: `0` — Determines after how much time (in seconds) the group should be notified. - **`description`** `string` — Group call pickup description. - **`directed_call_pickup`** `boolean`, default: `false` — Whether the ringtone is on. - **`extension_number`** `integer`, format: `int64` — Short extension number. - **`member_extension_ids`** `array` — Extension ID. **Items:** `string` - **`play_incoming_calls_sound`** `object` — This field is not available when \`enable=false\` - **`duration`** `integer`, possible values: `0, 1, 3, 5`, default: `0` — Duration (in seconds) between ring tones. - **`enable`** `boolean`, default: `false` — Whether to play incoming call sound in Zoom clients. - **`ring_tone`** `string`, possible values: `"ringtone_1", "ringtone_2", "ringtone_3"`, default: `"ringtone_1"` — Incoming call sound in Zoom clients. **Example:** ```json { "display_name": "test", "site_id": "NjHmTu16Qfe8yOiNJuekXA", "description": "test", "extension_number": 1, "delay": 0, "play_incoming_calls_sound": { "enable": false, "ring_tone": "ringtone_1", "duration": 0 }, "directed_call_pickup": false, "member_extension_ids": [ "RfFxkRTIRnOp6ZYo7c1Ptg" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Group added successfully. ###### Content-Type: application/json - **`display_name`** `string` — Name of the group. - **`id`** `string` — ID of the group. **Example:** ```json { "id": "q5C69v95SPKsZ5uUi-Xbcw", "display_name": "testGCP" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call pickup group by ID - **Method:** `GET` - **Path:** `/phone/group_call_pickup/{groupId}` - **Tags:** Group Call Pickup Use this API to retrieve information on a specific [Group Call Pickup](https://support.zoom.us/hc/en-us/articles/360060107472-Setting-up-and-using-group-call-pickup) object in an account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:call_pickup_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Group returned successfully. ###### Content-Type: application/json - **`cost_center`** `string` — Cost center name. - **`delay`** `integer`, possible values: `0, 5, 10, 15` — Determines after how much time (in seconds) the group should be notified. - **`department`** `string` — Department name. - **`description`** `string` — Description of the group. - **`directed_call_pickup`** `boolean` — Whether the ringtone is on. - **`display_name`** `string` — Name of the group. - **`extension_id`** `string` — Extension ID. - **`extension_number`** `integer`, format: `int64` — Extension number. - **`id`** `string` — ID of the group. - **`member_count`** `integer` — Member count of the group. - **`play_incoming_calls_sound`** `object` - **`duration`** `integer`, possible values: `0, 1, 3, 5` — Duration (in seconds) between ring tones. - **`enable`** `boolean` — Whether to play incoming call sound in Zoom clients. - **`ring_tone`** `string`, possible values: `"ringtone_1", "ringtone_2", "ringtone_3"` — Incoming call sound in Zoom clients. - **`site`** `object` - **`id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`name`** `string` — Name of the site. **Example:** ```json { "id": "qLZ4vXb8RAydayOR5ckYMg", "display_name": "testGCP", "extension_id": "mLG45gHYSVaeVVc64gp1jQ", "extension_number": 10002, "description": "test", "delay": 5, "member_count": 1, "cost_center": "test", "department": "test", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "testGCPSite" }, "play_incoming_calls_sound": { "enable": true, "ring_tone": "ringtone_1", "duration": 0 }, "directed_call_pickup": true } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete group call pickup objects - **Method:** `DELETE` - **Path:** `/phone/group_call_pickup/{groupId}` - **Tags:** Group Call Pickup Use this API to remove a [Group Call Pickup](https://support.zoom.us/hc/en-us/articles/360060107472-Setting-up-and-using-group-call-pickup) object. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:delete:call_pickup_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Group deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Group call pickup does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update the group call pickup information - **Method:** `PATCH` - **Path:** `/phone/group_call_pickup/{groupId}` - **Tags:** Group Call Pickup Use this API to update a specific [Group Call Pickup](https://support.zoom.us/hc/en-us/articles/360060107472-Setting-up-and-using-group-call-pickup) object information. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:call_pickup_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`cost_center`** `string` — Cost center name. - **`delay`** `integer`, possible values: `0, 5, 10, 15` — Determines after how much time (in seconds) the group should be notified. - **`department`** `string` — Department name. - **`description`** `string` — Description for the group. - **`directed_call_pickup`** `boolean` — Whether the ringtone is on. - **`display_name`** `string` — Name of the group. - **`extension_number`** `integer`, format: `int64` — Short extension number. - **`play_incoming_calls_sound`** `object` — This field is not available when \`enable=false\` - **`duration`** `integer`, possible values: `0, 1, 3, 5`, default: `0` — Duration (in seconds) between ring tones. - **`enable`** `boolean` — Whether to play incoming call sound in Zoom clients. - **`ring_tone`** `string`, possible values: `"ringtone_1", "ringtone_2", "ringtone_3"`, default: `"ringtone_1"` — Incoming call sound in Zoom clients. **Example:** ```json { "display_name": "test", "extension_number": 1, "description": "test", "delay": 0, "cost_center": "testCostCenter", "department": "testDepartment", "play_incoming_calls_sound": { "enable": true, "ring_tone": "ringtone_1", "duration": 0 }, "directed_call_pickup": false } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Group details updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed.\
Extension number error.\
Display name must be in the range of 3 to 200.\
Description is too long.\
Delay must be in the range of 0 to 15.\
Duration must be in the range of 0 to 5.\
\*\*Error Code:\*\* \`404\` \
Group call pickup does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List call pickup group members - **Method:** `GET` - **Path:** `/phone/group_call_pickup/{groupId}/members` - **Tags:** Group Call Pickup Use this API to retrieve members of a [call pickup group](https://support.zoom.us/hc/en-us/articles/360060107472-Setting-up-and-using-group-call-pickup) in an account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:call_pickup_group_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Members listed successfully. ###### Content-Type: application/json - **`group_call_pickup_member`** `array` **Items:** - **`display_name`** `string` — Name of the user. - **`extension_id`** `string` — Extension ID. - **`extension_number`** `integer`, format: `int64` — Zoom Phone extension number. - **`extension_type`** `string`, possible values: `"user", "commonArea"` — Type of the assignee. - **`id`** `string` — ID of the user to whom the group belongs. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "group_call_pickup_member": [ { "id": "F1r_jMw4SGGljLqKdcMsvw", "display_name": "testGCPUser", "extension_id": "qLZ4vr_jMw4SFUGQmJI", "extension_type": "user", "extension_number": 10001 } ], "next_page_token": "fefeLbe42", "page_size": 30, "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add members to a call pickup group - **Method:** `POST` - **Path:** `/phone/group_call_pickup/{groupId}/members` - **Tags:** Group Call Pickup Use this API to add members to the specified [Group Call Pickup](https://support.zoom.us/hc/en-us/articles/360060107472-Setting-up-and-using-group-call-pickup) object. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:write:call_pickup_group_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`member_extension_ids`** `array` **Items:** `string` — Extension ID of user/common areas. **Example:** ```json { "member_extension_ids": [ "SQv52YtkRLC2dwrDdYtGsA" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Members added successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\*\*Error Code:\*\* \`404\` \
Group call pickup does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove members from call pickup group - **Method:** `DELETE` - **Path:** `/phone/group_call_pickup/{groupId}/members/{extensionId}` - **Tags:** Group Call Pickup Use this API to remove member from the [Group Call Pickup](https://support.zoom.us/hc/en-us/articles/360060107472-Setting-up-and-using-group-call-pickup) object. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:delete:call_pickup_group_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Members removed successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Group call pickup does not exist.\
Member does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get group policy details - **Method:** `GET` - **Path:** `/phone/groups/{groupId}/policies/{policyType}` - **Tags:** Groups Returns the group policy details. **Prerequisites** Pro or higher account plan with Zoom phone license **[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:group_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Get group policy details successfully. ###### Content-Type: application/json **One of:** - **`allow_emergency_calls`** `object` — The group-level settings for whether emergency calls are allowed for users and from specific device types. - **`allow_emergency_calls_from_clients`** `boolean` — Whether users are allowed to make emergency calls from Zoom clients. - **`allow_emergency_calls_from_deskphones`** `boolean` — Whether users are allowed to make emergency calls from desk phones. - **`enable`** `boolean` — Whether users in this user group are allowed to make emergency calls. - **`locked`** `boolean` — Whether this setting is locked by the account administrator and cannot be overridden at lower levels (extension). - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — This field specifies the configuration level that has enforced the lock. This indicates where the setting was originally locked and cannot be overridden. - **`modified`** `boolean` — Whether the current settings have been changed from the inherited defaults. If true, the settings can be reset. Applicable only when using the new policy framework. **Example:** ```json { "allow_emergency_calls": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "allow_emergency_calls_from_clients": true, "allow_emergency_calls_from_deskphones": true } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Invalid value for parameter 'policyType'. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2040\` \
User group does not exist: {groupId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update group policy - **Method:** `PATCH` - **Path:** `/phone/groups/{groupId}/policies/{policyType}` - **Tags:** Groups Updates the group policy. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[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:group_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Request Body ##### Content-Type: application/json **One of:** - **`allow_emergency_calls`** `object` — The group-level settings for whether emergency calls are allowed for users and from specific device types. - **`allow_emergency_calls_from_clients`** `boolean` — Whether users are allowed to make emergency calls from Zoom clients. - **`allow_emergency_calls_from_deskphones`** `boolean` — Whether users are allowed to make emergency calls from desk phones. - **`enable`** `boolean` — Whether users in this user group are allowed to make emergency calls. - **`locked`** `boolean` — Whether this setting is locked by the account administrator and cannot be overridden at lower levels (extension). - **`reset`** `boolean` — Whether the current settings should be reset to inherit from higher-level configurations. Only applicable when the new policy framework is in use. **Example:** ```json { "allow_emergency_calls": { "enable": true, "locked": true, "reset": true, "allow_emergency_calls_from_clients": true, "allow_emergency_calls_from_deskphones": true } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Site policy updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Invalid value for parameter 'policyType'. \
\*\*Error Code:\*\* \`400\` \
Lock and reset operations cannot be performed simultaneously. \
\*\*Error Code:\*\* \`400\` \
Reset cannot be combined with other operations. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2040\` \
User group does not exist: {groupId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get group phone settings - **Method:** `GET` - **Path:** `/phone/groups/{groupId}/settings` - **Tags:** Groups Returns group phone settings. **Prerequisites** Account must have a Pro or a higher plan with Zoom Phone license. **[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:group_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Group settings retrieved successfully. ###### Content-Type: application/json - **`ad_hoc_call_recording`** `object` — Whether to allow extensions to record and save calls in the cloud. - **`allow_delete`** `boolean` — Whether to allow user to delete their own ad-hoc recording. - **`allow_download`** `boolean` — Whether to allow user to download their own ad-hoc recording. - **`enable`** `boolean` — Whether the current extension can record and save calls to the cloud. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`play_recording_beep_tone`** `object` - **`enable`** `boolean` — Whether to play the side tone beep for recorded users while recording. It displays only when ad hoc call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when the \`enable\` is set to true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when the \`enable\` is set to true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The side tone beep volume. It displays only when \`enable\` is set to \`true\`. - **`recording_explicit_consent`** `boolean` — Whether the Press 1 option that provides recording consent is enabled. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`advanced_encryption`** `object` — Whether to allow voicemail to be encrypted with keys which are not accessible to Zoom servers. These voicemails can be decrypted only by the intended user recipient. Shared line appearance, shared line group, call queue, or auto receptionist voicemail will not be encrypted, but can still be played. Email to voicemail, transcriptions, ability to check voicemails by dialing into the voicemail system, or web are not available when this feature is enabled. This policy requires a Power Pack license to be enabled. If the user does who inherits this policy does not have a Power Pack license, the policy will not be applied. Settings is only available with client version 5.12 or later. - **`disable_incoming_unencrypted_voicemail`** `boolean` — Whether to disable incoming unencrypted voicemail - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset(displayed when using old or new policy framework). - **`allow_emergency_calls`** `object` — Group-level settings for whether emergency calls are allowed for users and from specific device types. - **`allow_emergency_calls_from_clients`** `boolean` — Whether users are allowed to make emergency calls from zoom clients. - **`allow_emergency_calls_from_deskphones`** `boolean` — Whether users are allowed to make emergency calls from desk phones. - **`enable`** `boolean` — Whether users in this user group are allowed to make emergency calls. - **`locked`** `boolean` — Whether this setting is locked by the account administrator and cannot be overridden at lower levels (extension). - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — This field specifies the configuration level that has enforced the lock. This indicates where the setting was originally locked and cannot be overridden. - **`modified`** `boolean` — Whether the current settings have been changed from the inherited defaults. If true, the settings can be reset. Applicable only when using the new policy framework. - **`allow_end_user_edit_call_handling`** `object` — Once disabled, users will not be able to edit their call handling settings on the web portal or enable call forwarding on the client. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`allow_mobile_home_phone_callout`** `object` — Allows users to use mobile or home phone to place calls. Zoom app will call this device first before ringing the called number. Users' Call Me On phone number will be masked with Zoom Phone caller ID. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`allowed_call_locations`** `object` - **`allow_internal_calls`** `boolean` — Whether to allow internal calls when outside of allowed locations. - **`enable`** `boolean` — Whether to define where the extension or user can make and accept calls, and send SMS. When the extension or user is outside of the allowed locations, calls will follow \"When a call is not answered\" settings. Outbound and inbound emergency calls and SMS will still be allowed. Note: SMS settings will only be available to users. - **`locations_applied`** `boolean` — Whether locations has been applied. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`audio_intercom`** `object` — Whether to allow hands-free peer-to-peer conversations. When an intercom call is received, the phone will beep to notify the user of the incoming intercom call, and the user's phone will automatically answer the intercom call. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`auto_call_recording`** `object` — Whether to automatically record all inbound and outbound calls. - **`allow_stop_resume_recording`** `boolean` — Whether the stop and resume of automatic call recording is enabled. - **`disconnect_on_recording_failure`** `boolean` — Whether a call disconnects when there is an issue with the automatic call recording and the call cannot reconnect after five seconds. This does \*\*not\*\* include emergency calls. - **`enable`** `boolean` — Whether automatic call recording is enabled. - **`inbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for inbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`recording_start_prompt_audio_id`** `string` — The audio that plays when the recording has started for inbound call. You can use this audio ID to get the audio information using \[Get an audio item]\(https\://developer.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\_audio\_id\`, \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\`, and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` with the same value. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`outbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, please update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`recording_start_prompt_audio_id`** `string` — The audio that plays when the recording has started for outbound call. You can use this audio ID to get the audio information using \[Get an audio item]\(https\://developer.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\_audio\_id\`, \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\`, and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, please update both \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` with the same value. - **`play_recording_beep_tone`** `object` - **`enable`** `boolean` — Whether to play a side tone beep for recorded users while recording. Only displayed when auto call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when \`enable\` is true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when \`enable\` is true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The volume of the side tone beep. It displays only when \`enable\` is set to \`true\`. - **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — The type of calls automatically recorded. \* \`inbound\` \* \`outbound\` \* \`both\` - **`recording_explicit_consent`** `boolean` — Whether the \`Press 1 option that provides recording consent\` is enabled. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` to operate inbound and outbound prompt separately. \Note:\ \* if customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\` and \`inbound\_audio\_notification.recording\_explicit\_consent\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. when the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` to operate inbound and outbound prompt separately. \Note:\ \* if customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\` and \`inbound\_audio\_notification.recording\_start\_prompt\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\` will be also updated. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. when the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` will be also updated. - **`recording_start_prompt_audio_id`** `string` — The audio that plays when the recording has started. You can use this audio ID to get the audio information using \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` to operate inbound and outbound prompt separately. \Note:\ \* if customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\_audio\_id\` and \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` will be also updated. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\_audio\_id\`, \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\`, and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` always remain consistent. when the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\_audio\_id\`, and \`outbound\_audio\_notification.recording\_start\_prompt\_audio\_id\` will be also updated. - **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`auto_delete_data_after_retention_duration`** `object` — This field allows Zoom to automatically delete data after the retention duration has lapsed. - **`delete_type`** `integer`, possible values: `1, 2` — The deletion policy. \* 1 - soft delete \* 2 - permanent delete - **`enable`** `boolean` — Allows Zoom to automatically delete data after the retention duration has lapsed. - **`items`** `array` **Items:** - **`duration`** `integer` — The retention duration where -1 means unlimited. For units of time, see the \`time\_unit\` below. For \`year\`, the duration:-1, 1-10; for \`day\`, the duration:-1, 1-60; for \`month\`, the duration:-1, 1-18. - **`time_unit`** `string`, possible values: `"year", "month", "day"` — The unit of time. - **`type`** `string`, possible values: `"callLog", "onDemandRecording", "automaticRecording", "voicemail", "videomail", "sms", "fax"` — The data types. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`permanently_delete_after_days`** `integer` — The number of days after which the data will be permanently deleted automatically. Use -1 to retain data indefinitely. - **`auto_opt_out_in_call_queue`** `object` — Once enabled, when Call Queue members log out of Zoom (Except for desk phones and Zoom Phone appliances), they will be automatically Opted-out from the Call Queue as well. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`prompt_before_opt_out_call_queue`** `boolean` — Always ask the user if they want to opt-out from the Call Queue when they sign out of Zoom - **`block_calls_without_caller_id`** `object` — Whether calls without caller ID will be blocked. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`block_external_calls`** `object` — This field allows you to set rules for blocking external calls during business, closed, and holiday hours. This feature is only available for User, Zoom Room and Common Area. - **`block_business_hours`** `boolean` - **`block_call_action`** `integer`, possible values: `0, 9` — The action when a call is blocked. \`9\` - Disconnect, \`0\`- Forward to voicemail/videomail. - **`block_closed_hours`** `boolean` - **`block_holiday_hours`** `boolean` - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset(displayed when using old or new policy framework). - **`block_list_for_inbound_calls_and_messaging`** `object` - **`enable`** `boolean` — Whether to allows users and administrators to block inbound calls and SMS/MMS from phone numbers or prefixes. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`call_handling_forwarding`** `object` — Whether to allow users to forward their calls to other numbers. - **`call_forwarding_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`call_live_transcription`** `object` — Whether to let users turn on live transcriptions for a call. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`transcription_start_prompt`** `object` — Whether to play a prompt to call participants when the transcription has started. - **`audio_id`** `string` — The audio prompt file ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`audio_name`** `string` — The audio prompt file name. - **`enable`** `boolean` - **`call_overflow`** `object` - **`call_overflow_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Can forward to internal extensions and to external contacts. \`2\` - Can forward only to internal extensions. \`3\` - Can forward only to internal extensions that require inbound Automatic Call Recording. \`4\` - Can forward to internal extensions, external contacts, and external numbers. - **`enable`** `boolean` — Whether to allow users to forward their calls to other numbers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`call_park`** `object` - **`call_not_picked_up_action`** `integer` — The action when a parked call is not picked up. \`100\` - Ring back to parker \`0\` - Forward to voicemail of the parker \`9\` - Disconnect \`50\` - Forward to another extension - **`enable`** `boolean` — Whether to allow calls placed on hold to be resumed from another location using a retrieval code. - **`expiration_period`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — A time limit for parked calls in minutes. After the expiration period ends, the retrieval code is no longer valid and a new code will be generated. - **`forward_to`** `object` — The extension's forwarding information. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension's number. - **`extension_type`** `string`, possible values: `"user", "zoomRoom", "commonArea", "ciscoRoom/polycomRoom", "autoReceptionist", "callQueue", "sharedLineGroup"` — The type of extension: \* \`user\` \* \`zoomRoom\` \* \`commonArea\` \* \`ciscoRoom/polycomRoom\` \* \`autoReceptionist\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension \`user\`, \`zoomRoom\`, \`commonArea\`, \`ciscoRoom/polycomRoom\`, \`autoReceptionist\`, \`callQueue\` or \`sharedLineGroup\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`music_on_park`** `object` — Plays music when a call is parked. - **`audio_id`** `string` — The audio prompt file ID. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://developers.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`audio_name`** `string` — The audio prompt file name. - **`sequence`** `integer`, possible values: `0, 1` — This field is only used in the new policy framework. Choose how parked calls are assigned to a BLF (Busy Lamp Field) key. Sequential assignment will park the call at the next available BLF key. Random assignment will park the call at a randomly selected BLF key. \`0\` - Random \`1\` - Sequential - **`call_screening`** `object` — Incoming direct external callers are prompted to respond to a button to reach users, callers who don't respond will be disconnected. Devices will not be able to receive any third party faxes. - **`enable`** `boolean` — Whether this policy is enabled - **`exclude_user_company_contacts`** `boolean` — This field excludes the user and company contacts from call screening, calls will reach users as normal - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`call_transferring`** `object` - **`call_transferring_type`** `integer`, possible values: `1, 2, 3, 4` — 1-No restriction. 2-Medium restriction (external numbers and external contacts not allowed). 3-High restriction (external numbers, unrecorded external contacts, and internal extensions without inbound automatic recording not allowed). 4-Low restriction (external numbers not allowed). - **`enable`** `boolean` — Whether to allow user to warm or blind transfer their calls. This does not apply to warm transfer on IP Phones except for Yealink. Voicemail is transferable only to internal extensions. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`check_voicemails_over_phone`** `object` — Once enabled, users can check voicemails over phone using a PIN code. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`conference_dtmf`** `object` — Allows users to interact with automated systems, input access codes, or perform other functions without disrupting the call. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`connect_to_operator`** `object` — Once disabled, users will not be able to route their calls to an operator as part of the 'When a call is not answered' setting. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`delegation`** `object` — Whether to allow users to use delegation. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`desk_phone_smart_key_positions_layout`** `object` — Allows Zoom to move your frequently used line keys to your pre-programmed smart keys layout. Smart keys will be updated on a weekly basis. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`display_call_feedback_survey`** `object` — Whether to display a thumbs up or down survey at the end of each call. If participants respond with thumbs down, they can provide additional information about what went wrong. - **`enable`** `boolean` - **`feedback_duration`** `object` — The call duration, in seconds, 0-60. - **`enable`** `boolean` - **`max`** `integer` - **`min`** `integer` - **`feedback_mos`** `object` — The MOS score. Min: 1.0, Max: 3.0, format one decimal point. - **`enable`** `boolean` - **`max`** `string` - **`min`** `string` - **`feedback_type`** `integer`, possible values: `1, 2` — This field allows you to display feedback survey, \`1\` - display for every call, \`2\` - display when call quality issues are detected. Default \`1\`, if set with value \`2\`, need to set \`feed\_back\_mos\` or \`feedback\_duration\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`e2e_encryption`** `object` - **`enable`** `boolean` — Whether to allow users to switch their calls to end-to-end encryption. For users who have Automatic Call Recording turned on, they will need the option \*\*Allow user to stop and resume automatic call recording\*\* to use end-to-end encryption. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`elevate_to_meeting`** `object` - **`enable`** `boolean` — Whether to allow users to elevate their phone calls to a meeting. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`hand_off_to_room`** `object` - **`enable`** `boolean` — Whether to allow users to send a call to a Zoom Room. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`hide_phone_call_history_in_ios`** `object` — Hides Zoom Phone calls in iOS/iPadOS device call history. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`international_calling`** `object` — Whether the current extension can make international calls outside of their calling plan. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`local_survivability_mode`** `object` — Whether to allow user or extension to have core phone services in the event of an outage. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`mobile_switch_to_carrier`** `object` - **`enable`** `boolean` — Whether to allow the user to switch from a Zoom Phone to their native carrier. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`no_hold_conference`** `object` — Users can set up a conference call without any interruption in the current call - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`obfuscate_sensitive_data_during_call`** `object` — Obfuscates sensitive data during a call - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`online_fax`** `object` — Allows user to send and receive faxes. - **`enable`** `boolean` — Whether this policy is enabled - **`enable_new_fax_email_notifications`** `boolean` — This field enables email notifications when a new fax is received - **`include_fax_as_attachment`** `boolean` — This field includes the fax as an attachment in the email notification - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`outbound_calling`** `object` - **`enable`** `boolean` — Whether to define calling rules to restrict user or extension from calling specific countries, cities, or numbers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`outbound_sms`** `object` - **`allow_copy`** `boolean` — This field allows users to copy message. - **`allow_paste`** `boolean` — This field allows users to use the paste function to paste content (e.g. text or images) into SMS/MMS conversations. - **`enable`** `boolean` — Whether to allow users to send and receive messages. You will still need to assign a valid calling plan and phone number to each user for them to send and receive messages. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`peer_to_peer_media`** `object` — Whether to allow Zoom clients to send media directly to each other. Users or devices that have certain features like recording or monitoring enabled might not be able to use Peer to Peer Media. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`personal_audio_library`** `object` - **`allow_music_on_hold_customization`** `boolean` — Whether to allow music on hold customization. - **`allow_voicemail_and_message_greeting_customization`** `boolean` — Whether to allow voicemail and message greeting customization. - **`enable`** `boolean` — Whether to allow users to change their own audio library. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`prevent_users_upload_audio_files`** `object` — Prevents users from uploading audio files - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`restricted_call_hours`** `object` - **`allow_internal_calls`** `boolean` — Whether to allow internal calls/SMS during restricted hours. - **`enable`** `boolean` — Whether to define when the user cannot make or accept calls and send SMS. In the restricted hours, calls will follow \"When a call is not answered\" settings. Outbound and inbound emergency calls will still be allowed. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`restricted_holiday_hours_applied`** `boolean` — Whether restricted holiday hours has been applied. - **`restricted_hours_applied`** `boolean` — Whether restricted hours has been applied. - **`time_zone`** `object` — Sets either time zone \`id\` or \`set\_by\_extension\`. - **`id`** `string` — The \[time zone list]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#timezones) for supported time zones and their formats. - **`name`** `string` — The time zone name. If time zone id is empty, it shows as \`setByExtension\`. - **`select_outbound_caller_id`** `object` - **`allow_hide_outbound_caller_id`** `boolean` — Whether to allow the current extension to hide outbound caller id. Settings is only available with client version 5.13.5 or later. - **`enable`** `boolean` — Whether to allow extensions to change outbound caller ID when placing calls. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`shared_voicemail_notification_by_email`** `object` — Once enabled, users receive email notification when there is a new shared voicemail or videomail. If the extension that shares the voicemail or videomail has disabled the voicemail or videomail notification by email policy, then users do not receive notifications. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`show_custom_disclaimer_when_using_zoom_phone`** `object` — Shows a custom disclaimer when starting to use Zoom Phone service. - **`custom_disclaimer_list`** `array` — The custom disclaimer list. **Items:** - **`body`** `string` — The custom disclaimer body. - **`language`** `string` — The audio prompt language code. American English: \`en-US\` British English: \`en-GB\` Espa\ñol americano: \`es-US\` Fran\çais canadien: \`fr-CA\` Dansk: \`da-DK\` Deutsch: \`de-DE\` Espa\ñol: \`es-ES\` Fran\çais: \`fr-FR\` Italiano: \`it-IT\` Nederlands: \`nl-NL\` Portugues portugal: \`pt-PT\` Japanese: \`ja-JP\` Korean: \`ko-KO\` Portugues brasil: \`pt-BR\` Chinese: \`zh-CN\` Taiwanese: \`zh-TW\` - **`title`** `string` — The custom disclaimer title. - **`display_frequency`** `string`, possible values: `"first_time_only", "every_time", "every_month", "every_quarter", "every_6_months", "every_year"` — The display frequency. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`sms`** `object` - **`allow_copy`** `boolean` — This field allows users to copy message. - **`allow_paste`** `boolean` — The field allows users to use the paste function to paste content (e.g. text or images) into SMS/MMS conversations. - **`enable`** `boolean` — Whether to allow user to send and receive messages. You will still need to assign a valid calling plan and phone number to the user in order to send and receive messages. - **`international_sms`** `boolean` — Whether the user can send and receive international messages. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`sms_auto_reply`** `object` — Enables SMS Auto Reply feature for User, Auto Receptionist, and Call Queue. Power Pack license is required for this feature to work. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`sms_etiquette_tool`** `object` — This field identifies defined keywords and text patterns over SMS and prevents users from sharing unwanted messages. - **`enable`** `boolean` - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`sms_etiquette_policy`** `array` — The SMS etiquette policy. The maximum size is 50. **Items:** - **`action`** `integer`, possible values: `1, 2` — The actions taken when a policy is triggered, \`1\` - ask user to confirm sending of message, \`2\` - block the message. - **`active`** `boolean` — Whether active or not. - **`content`** `string` — The SMS etiquette policy content. For rule \`1\`, add keywords separated by comma, the following characters are supported A-Z, a-z, 0-9. For rule \`2\`, add regular expressions, back references and zero-width assertions area not supported. - **`description`** `string` — The SMS etiquette policy description. - **`id`** `string` — The SMS etiquette policy ID. - **`name`** `string` — The SMS etiquette policy name. - **`rule`** `integer`, possible values: `1, 2` — The SMS etiquette policy rule, \`1\` - Keywords, \`2\` - Regular Expression. - **`sms_template`** `object` — Uses pre-defined templates to help users compose messages. Power Pack license is required for this feature to work. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`sms_template_list`** `array` — The SMS template list. **Items:** - **`active`** `boolean` — Whether it is active. - **`content`** `string` — Text to Display. This text will be editable by users. Customer input fields may be added by using the buttons below. Customer information will be removed if not available. - **`description`** `string` — The SMS template description. - **`name`** `string` — The SMS template name. - **`sms_template_id`** `string` — The SMS template ID. - **`use_callkit_for_incoming_call_notifications_in_ios`** `object` — Always uses CallKit for Incoming call notifications on iOS/iPadOS devices. When this feature is enabled for a user or common area, their iOS/iPadOS device will always use CallKit for incoming call notifications no matter if the Zoom App is running in the foreground or background, preventing interruptions when receiving inbound calls on the device. This setting only applies to iOS/iPadOS devices with CallKit enabled. If a user modifies this setting on their client, the value will be updated on this policy. Locking this policy will prevent users from making changes to the setting. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`voicemail`** `object` - **`allow_delete`** `boolean` — Whether to allow users to delete their own voicemail. - **`allow_download`** `boolean` — Whether to allow users to download their own voicemail. - **`allow_share`** `boolean` — Whether to allow user to share their own voicemail. - **`allow_videomail`** `boolean` — Whether to allow users to access, share, download or delete video mail. - **`allow_virtual_background`** `boolean` — Whether to allow virtual background for videomail or video greeting. - **`enable`** `boolean` — Whether to allow users to access, receive or share voicemail and video mail. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`voicemail_intent_based_prioritization`** `object` — The voicemail prioritization with AI Companion. - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`voicemail_notification_by_email`** `object` — Once enabled, users receive email notifications when there is a new voicemail from users, call queues, auto receptionists, or shared line groups. Users who disabled the shared voicemail notification by email policy do not receive notifications. - **`enable`** `boolean` - **`forward_voicemail_to_email`** `boolean` — Whether to forward the voicemail to email. - **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`voicemail_tasks`** `object` — Voicemail tasks with AI Companion - **`enable`** `boolean` — Whether this policy is enabled - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`voicemail_transcription`** `object` - **`enable`** `boolean` — Whether to enable voicemail or videomail transcription feature for user, auto receptionist, call queue, and shared line groups. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`zoom_phone_on_desktop`** `object` — Allows users to use Zoom Phone on desktop clients (Mac OS, Windows, VDI client, and Linux). - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is mac\_os windows vdi\_client linux. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is: mac\_os windows vdi\_client linux. - **`enable`** `boolean` — Whether to allow users to use Zoom Phone on desktop clients (Mac OS, Windows, VDI clinet and Linux). - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, you can reset settings to display when using the new policy framework. - **`zoom_phone_on_mobile`** `object` - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is: ios android intune blackberry. - **`allow_calling_sms_mms`** `boolean` — This field allows calling and SMS/MMS functions on mobile. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is: ios android intune blackberry. - **`enable`** `boolean` — This field allows users to use Zoom Phone on mobile clients (iOS, iPad OS, and Android). - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`zoom_phone_on_pwa`** `object` — Whether to allow user to use Zoom Phone on Zoom Progressive Web App. - **`allow_calling`** `boolean` — This field allows users to use calling on Zoom Progressive Web App - **`allow_sms_mms`** `boolean` — This field allows users to use sms/mms on Zoom Progressive Web App - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). **Example:** ```json { "call_live_transcription": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "transcription_start_prompt": { "enable": true, "audio_id": "yCT14TwySDGVUypVlKNEyA", "audio_name": "example.mp3" } }, "local_survivability_mode": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "select_outbound_caller_id": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "allow_hide_outbound_caller_id": true }, "personal_audio_library": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "allow_music_on_hold_customization": true, "allow_voicemail_and_message_greeting_customization": true }, "voicemail": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "allow_delete": true, "allow_download": false, "allow_videomail": true, "allow_share": false, "allow_virtual_background": false }, "voicemail_transcription": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": false, "forward_voicemail_to_email": true, "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "shared_voicemail_notification_by_email": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "restricted_call_hours": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "time_zone": { "id": "America/Adak", "name": "(GMT-9:00) Adak" }, "restricted_hours_applied": false, "restricted_holiday_hours_applied": false, "allow_internal_calls": true }, "allowed_call_locations": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "locations_applied": false, "allow_internal_calls": true }, "check_voicemails_over_phone": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "auto_call_recording": { "enable": true, "locked": true, "locked_by": "user_group", "recording_calls": "inbound", "recording_transcription": true, "allow_stop_resume_recording": true, "disconnect_on_recording_failure": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "inbound_audio_notification": { "recording_start_prompt": true, "recording_start_prompt_audio_id": "ySMexBgBQsioV8KKCUybTA", "recording_explicit_consent": true }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_start_prompt_audio_id": "ySMexBgBQsioV8KKCUybTA", "recording_explicit_consent": true } }, "ad_hoc_call_recording": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "recording_transcription": true, "allow_download": true, "allow_delete": true, "recording_start_prompt": true, "recording_explicit_consent": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" } }, "zoom_phone_on_mobile": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "allow_calling_clients": [ "ios" ], "allow_sms_mms_clients": [ "ios" ] }, "zoom_phone_on_pwa": { "allow_calling": true, "allow_sms_mms": true, "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "sms_etiquette_tool": { "enable": true, "modified": true, "sms_etiquette_policy": [ { "id": "PdPtFFDbQhKr05WepCHhWQ", "name": "invalid symbol", "description": "invalid symbol", "rule": 1, "content": "test", "action": 1, "active": true } ] }, "outbound_calling": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "outbound_sms": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "allow_copy": true, "allow_paste": true }, "international_calling": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "sms": { "enable": true, "international_sms": true, "locked": true, "locked_by": "user_group", "modified": true, "allow_copy": true, "allow_paste": true }, "e2e_encryption": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "call_handling_forwarding": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "call_forwarding_type": 1 }, "call_overflow": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "call_overflow_type": 1 }, "call_transferring": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "call_transferring_type": 1 }, "elevate_to_meeting": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "call_park": { "enable": true, "expiration_period": 3, "call_not_picked_up_action": 50, "forward_to": { "display_name": "ZOOM_API Test", "extension_id": "TO586CYlQFC_WCUvPRXytA", "extension_number": 100014, "extension_type": "user", "id": "oG_nYRFuTJiY1tu0Fur_4Q" }, "sequence": 1, "music_on_park": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "audio_name": "example.mp3" }, "locked": false, "locked_by": "user_group", "modified": true }, "hand_off_to_room": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "mobile_switch_to_carrier": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "delegation": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "audio_intercom": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "block_list_for_inbound_calls_and_messaging": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "block_calls_without_caller_id": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "block_external_calls": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "block_business_hours": true, "block_closed_hours": true, "block_holiday_hours": true, "block_call_action": 0 }, "auto_delete_data_after_retention_duration": { "enable": true, "locked": false, "locked_by": "account", "modified": true, "items": [ { "type": "callLog", "duration": -1, "time_unit": "year" } ], "delete_type": 1, "permanently_delete_after_days": -1 }, "peer_to_peer_media": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true }, "advanced_encryption": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "disable_incoming_unencrypted_voicemail": true }, "display_call_feedback_survey": { "enable": true, "locked": true, "locked_by": "user_group", "modified": true, "feedback_type": 1, "feedback_mos": { "enable": true, "min": "1.1", "max": "3.0" }, "feedback_duration": { "enable": true, "min": 0, "max": 60 } }, "zoom_phone_on_desktop": { "allow_calling_clients": [ "mac_os" ], "allow_sms_mms_clients": [ "mac_os" ], "enable": true, "locked": true, "locked_by": "site", "modified": true }, "allow_emergency_calls": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "allow_emergency_calls_from_clients": true, "allow_emergency_calls_from_deskphones": true }, "online_fax": { "enable": true, "locked": false, "locked_by": "account", "modified": true, "enable_new_fax_email_notifications": true, "include_fax_as_attachment": false }, "sms_template": { "enable": true, "locked": false, "locked_by": "account", "modified": true, "sms_template_list": [ { "sms_template_id": "0qWIP8S8QXmo6KShUIyvZA", "name": "name", "description": "description", "content": "content", "active": true } ] }, "call_screening": { "enable": true, "locked": false, "locked_by": "account", "modified": true, "exclude_user_company_contacts": true }, "sms_auto_reply": { "enable": true, "locked": false, "locked_by": "account", "modified": true }, "allow_end_user_edit_call_handling": { "enable": true, "locked": false, "locked_by": "account", "modified": true }, "connect_to_operator": { "enable": true, "locked": false, "locked_by": "account", "modified": true }, "no_hold_conference": { "enable": true, "locked": false, "locked_by": "account", "modified": true }, "conference_dtmf": { "enable": true, "locked": false, "locked_by": "account", "modified": true }, "desk_phone_smart_key_positions_layout": { "enable": true, "locked": false, "locked_by": "account", "modified": true }, "auto_opt_out_in_call_queue": { "enable": false, "locked": false, "locked_by": "account", "modified": true, "prompt_before_opt_out_call_queue": true }, "allow_mobile_home_phone_callout": { "enable": true, "locked": false, "locked_by": "account", "modified": true }, "use_callkit_for_incoming_call_notifications_in_ios": { "enable": false, "locked": false, "locked_by": "account", "modified": true }, "hide_phone_call_history_in_ios": { "enable": false, "locked": false, "locked_by": "account", "modified": true }, "obfuscate_sensitive_data_during_call": { "enable": false, "locked": false, "locked_by": "account", "modified": true }, "prevent_users_upload_audio_files": { "enable": false, "locked": false, "locked_by": "account", "modified": true }, "voicemail_tasks": { "enable": false, "locked": false, "locked_by": "account", "modified": true }, "voicemail_intent_based_prioritization": { "enable": false, "locked": false, "locked_by": "account", "modified": true }, "show_custom_disclaimer_when_using_zoom_phone": { "enable": false, "locked": false, "locked_by": "account", "modified": true, "display_frequency": "first_time_only", "custom_disclaimer_list": [ { "language": "en-GB", "title": "tilte", "body": "body" } ] } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Setting type(s) \`{settingTypes}\` supplied in query parameter setting\_types is invalid \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2040\` \
User group does not exist: {groupId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get auto receptionist IVR - **Method:** `GET` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/ivr` - **Tags:** IVR Gets an [interactive voice response (IVR) system](https://support.zoom.us/hc/en-us/articles/360038601971) of the specified auto receptionist. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:auto_receptionist_ivr:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Get an interactive voice response (IVR) system of an auto receptionist. ###### Content-Type: application/json - **`audio_prompt`** `object` - **`id`** `string` — The audio prompt file ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The audio prompt file name. - **`caller_enters_no_action`** `object` — The action if caller enters no action after the prompt played. - **`action`** `integer` — The action if the caller enters no action after the prompt played. \`-1\` Disconnect the call \`2\` Forward to the user \`4\` Forward to the common area \`5\` Forward to Cisco/Polycom Room \`6\` Forward to the auto receptionist \`7\` Forward to the call queue \`8\` Forward to the shared line group \`15\` Forward to the Contact Center - **`audio_prompt_repeat`** `integer`, possible values: `1, 2, 3` — The number of times to repeat the audio prompt. - **`forward_to`** `object` - **`display_name`** `string` — The display name. - **`extension_id`** `string` — The extension ID or contact center setting ID. - **`extension_number`** `string` — The extension number. - **`id`** `string` — The user, common area, Zoom Room, Cisco/Polycom room, auto receptionist, call queue, or shared line group ID. - **`key_actions`** `array` — IVR routing options. **Items:** - **`action`** `integer` — The action after clicking the key. For key \`0\`-\`9\` \`100\` Leave voicemail to the current extension \`200\` Leave voicemail to the user \`300\` Leave voicemail to the auto receptionist \`400\` Leave voicemail to the call queue \`500\` Leave voicemail to the shared line group \`2\` Forward to the user \`3\` Forward to Zoom Room \`4\` Forward to the common area \`5\` Forward to Cisco/Polycom Room \`6\` Forward to the auto receptionist \`7\` Forward to the call queue \`8\` Forward to the shared line group \`9\` Forward to external contacts \`10\` Forward to a phone number \`15\` Forward to the contact center \`16\` Forward to the meeting service \`17\` Forward to the meeting service number \`-1\` Disabled For key \* or # \`21\` Repeat menu greeting \`22\` Return to the root menu \`23\` Return to the previous menu \`-1\` Disabled - **`key`** `string` — The key. The following values are supported: numeric('0'-'9'), \*, #. - **`target`** `object` — The route to an extension, phone number, or a contact center. - **`display_name`** `string` — The display name. - **`extension_id`** `string` — The extension ID or contact center setting ID. - **`extension_number`** `string` — The extension number. - **`id`** `string` — The user, common area, Zoom Room, Cisco/Polycom room, auto receptionist, call queue, or shared line group ID. - **`phone_number`** `string` — The phone number to forward to in E164 format. - **`voicemail_greeting`** `object` — The voicemail greeting. - **`id`** `string` — The voicemail greeting file ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The voicemail greeting file name. **Example:** ```json { "audio_prompt": { "id": "yCT14TwySDGVUypVlKNEyA", "name": "example.mp3" }, "caller_enters_no_action": { "action": 15, "audio_prompt_repeat": 3, "forward_to": { "display_name": "ZOOM_API Test", "extension_id": "z97zV9NsSoa846i-ag3uEw", "extension_number": "101021", "id": "EVqEKnrMRWyPr705Fk5h2w" } }, "key_actions": [ { "action": 200, "key": "0", "target": { "display_name": "ZOOM_API Test", "extension_id": "TO586CYlQFC_WCUvPRXytA", "extension_number": "101002", "id": "oG_nYRFuTJiY1tu0Fur_4Q", "phone_number": "+12055437350" }, "voicemail_greeting": { "id": "j2IsurWLRR-yWcbNGqPnaA", "name": "custom.wav" } } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Auto Receptionist does not exist: {0}. Holiday hours handling does not exist: {0}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update auto receptionist IVR - **Method:** `PATCH` - **Path:** `/phone/auto_receptionists/{autoReceptionistId}/ivr` - **Tags:** IVR Updates the [interactive voice response (IVR) system](https://support.zoom.us/hc/en-us/articles/360038601971) of the specified auto receptionist. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:auto_receptionist_ivr:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`audio_prompt_id`** `string` — The audio prompt file ID. - **`caller_enters_no_action`** `object` — The action if caller enters no action after the prompt played. - **`action`** `integer` — The action if caller enters no action after the prompt played. -1 Disconnect the call 2 Forward to the user 4 Forward to the common area 5 Forward to Cisco/Polycom Room 6 Forward to the auto receptionist 7 Forward to the call queue 8 Forward to the shared line group 15 Forward to the Contact Center - **`audio_prompt_repeat`** `integer`, possible values: `1, 2, 3` — The number of times to repeat the audio prompt. - **`forward_to_extension_id`** `string` — The extension ID or contact center setting ID. - **`holiday_id`** `string` — The auto receptionist holiday hours ID. If both \`holiday\_id\` and \`hours\_type\` are passed, \`holiday\_id\` has a high priority and \`hours\_type\` is invalid. - **`hours_type`** `string` — Hours type: \`business\_hours\` (default) or \`closed\_hours\`. - **`key_action`** `object` - **`action`** `integer` — The action after clicking the key. For key \`0\`-\`9\` 100 Leave voicemail to the current extension 200 Leave voicemail to the user 300 Leave voicemail to the auto receptionist 400 Leave voicemail to the call queue 500 Leave voicemail to the shared line group 2 Forward to the user 3 Forward to Zoom Room 4 Forward to the common area 5 Forward to Cisco/Polycom Room 6 Forward to the auto receptionist 7 Forward to the call queue 8 Forward to the shared line group 9 Forward to external contacts 10 Forward to a phone number 15 Forward to the contact center 16 Forward to the meeting service 17 Forward to the meeting service number -1 Disabled For key \* or # 21 Repeat menu greeting 22 Return to the root menu 23 Return to the previous menu -1 Disabled - **`key`** `string` — The key. The following values are supported: numeric('0'-'9'), \*, #. - **`target`** `object` - **`extension_id`** `string` — The extension ID or contact center setting ID. - **`phone_number`** `string` — The phone number to forward. - **`voicemail_greeting_id`** `string` — The voicemail greeting file ID. **Example:** ```json { "audio_prompt_id": "j2IsurWLRR-yWcbNGqPnaA", "caller_enters_no_action": { "action": 200, "audio_prompt_repeat": 2, "forward_to_extension_id": "z97zV9NsSoa846i-ag3uEw" }, "holiday_id": "YpLBylKbQKe1vEB1iSGatQ", "hours_type": "closed_hours", "key_action": { "action": 200, "key": "0", "target": { "extension_id": "CQLPaj0oSCC0olJLmAfgwQ", "phone_number": "+12055437350" }, "voicemail_greeting_id": "z97zV9NsSoa846i-ag3uEw" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Auto Receptionist IVR updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Auto Receptionist does not exist: {0}. Holiday hours handling does not exist: {0}. \*\*Error Code:\*\* \`300\` \
The number of times to repeat the audio prompt is required and can not be greater than 3. The action value set for if caller enters no action after the prompt played is not correct. The action value is not correct. The id for noAction to forward to is not correct. Voicemail greeting file id is required. The phone number to forward to is required. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List an extension's inbound block rules - **Method:** `GET` - **Path:** `/phone/extension/{extensionId}/inbound_blocked/rules` - **Tags:** Inbound Blocked List Returns a list of the given extension's block rule for inbound calls and messaging. it lists inbound block rule for the given Call Queue, Auto Receptionist, Shared Line Group, Common Area, Zoom Room, or User. **Prerequisites:** - Pro or a higher account with Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_extension_inbound_block_rules:admin`,`phone:read:list_extension_inbound_block_rules` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* List inbound calls block rules successfully. ###### Content-Type: application/json - **`extension_blocked_rules`** `array` — The inbound blocked rules. **Items:** - **`blocked_number`** `string` — The block rule phone number prefix, SMS short code, or pure phone number without the country code. - **`country`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). This field is required when the value is as follows: \* \`match\_type\` is \`phoneNumber\` or \`prefix\` - **`id`** `string` — The unique identifier of the block rule. - **`match_type`** `string`, possible values: `"prefix", "phoneNumber", "SMS-shortCodes"` — The match type for the block rule: \* \`phoneNumber\`: Indicates that only a specific phone number that is shown in the \`blocked\_number\` field is blocked. \* \`prefix\`: Indicates that all numbers starting with the prefix that is shown in the \`blocked\_number\` field are blocked. \* \`SMS-shortCodes\`: Indicates that only a specific sms short code that is shown in the \`blocked\_number\` field is blocked. - **`phone_number`** `string` — The phone number of the block rule, the value is a combination of the \`country\` and \`prefix\_number\` values. \* when the value of the \`match\_type\` is \`phoneNumber\`, the value of \`phone\_number\` is displayed in E164 format. \* when the value of the \`match\_type\` is \`prefix\`, the value of \`phone\_number\` is appended with the \`country\` code. - **`type`** `string`, possible values: `"block_for_other_reasons", "block_as_threat"` — The block type for the block rule: \* block\_for\_other\_reasons \* block\_as\_threat - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer`, default: `30` — The total number of records returned from a single API call. **Example:** ```json { "extension_blocked_rules": [ { "id": "N9vmnIOHQMSWSL9mrz9jTw", "match_type": "phoneNumber", "phone_number": "+120665558945", "type": "block_for_other_reasons", "blocked_number": "20665558945", "country": "US" } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
You do not enable the block list for inbound calls and messaging policy setting. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Extension does not exist: {extensionId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add an extension's inbound block rule - **Method:** `POST` - **Path:** `/phone/extension/{extensionId}/inbound_blocked/rules` - **Tags:** Inbound Blocked List Adds the given extension's block rule for inbound calls and messaging. It adds the inbound block rule for the given Call Queue, Auto Receptionist, Shared Line Group, Common Area, Zoom Room or User. **Prerequisites:** - Pro or a higher account with Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:extension_inbound_block_rule:admin`,`phone:write:extension_inbound_block_rule` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`blocked_number` (required)** `string` — The block rule phone number prefix, SMS short code, or pure phone number without the country code. \* When the value of the \`match\_type\` is \`prefix\`, enter the prefix of the phone number without the country code. \* When the value of the \`match\_type\` is \`phoneNumber\`, enter the phone number without the country code. \* When the value of the \`match\_type\` is \`SMS-shortCodes\`, enter the SMS short code. - **`match_type` (required)** `string`, possible values: `"prefix", "phoneNumber", "SMS-shortCodes"` — The match type for the block rule: \* \`phoneNumber\`: Only a specific phone number that is shown in the \`blocked\_number\` field is blocked. \* \`prefix\`: All numbers starting with the prefix that is shown in the \`blocked\_number\` field are blocked. \* \`SMS-shortCodes\`: Only a specific SMS short code that is shown in the \`blocked\_number\` field is blocked. - **`type` (required)** `string`, possible values: `"block_for_other_reasons", "block_as_threat"` — The block type for the block rule: \* block\_for\_other\_reasons \* block\_as\_threat \*\*Note\*\*: the value of \`block\_as\_threat\` can be available if the \`block\_calls\_as\_threat\` setting is enabled in \[account setting API]\(https\://developers.zoom.us/docs/zoom-phone/apis/#operation/listZoomPhoneAccountSettings). - **`country`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). This field is required when the value is the following: \* \`match\_type\` is \`phoneNumber\` or \`prefix\` **Example:** ```json { "match_type": "phoneNumber", "blocked_number": "20665558945", "type": "block_for_other_reasons", "country": "US" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Created successfully. ###### Content-Type: application/json - **`id`** `string` — The unique identifier of the blocked rule. **Example:** ```json { "id": "N9vmnIOHQMSWSL9mrz9jTw" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
The block list for inbound calls and messaging policy setting is not enabled. \
\*\*Error Code:\*\* \`13601\` \
Blocked phone number already exists:{blocked\_number}. \
\*\*Error Code:\*\* \`13605\` \
The block calls as threat policy setting is not enabled, it is not allowed selecting 'type' as 'block\_as\_threat. \
\*\*Error Code:\*\* \`400\` \
Invalid country. \
\*\*Error Code:\*\* \`13604\` \
Blocked number:{blocked\_number} does not match the country:{country}. \
\*\*Error Code:\*\* \`7015\` \
The phone number {blocked\_number} is invalid. \
\*\*Error Code:\*\* \`13606\` \
The match type:{match\_type} does not support the type:{type} in extension level. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Extension does not exist: {extensionId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an extension's inbound block rule - **Method:** `DELETE` - **Path:** `/phone/extension/{extensionId}/inbound_blocked/rules` - **Tags:** Inbound Blocked List Deletes the given extension's blocked rule for inbound calls and messaging. Use this API to delete inbound blocked rule for the given Call Queue, Auto Receptionist, Shared Line Group, Common Area, Zoom Room or User. **Prerequisites:** - Pro or a higher account with Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:extension_inbound_block_rule:admin`,`phone:delete:extension_inbound_block_rule` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* The blocked rule deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
The block list for inbound calls and messaging policy setting is not enabled. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Blocked rule does not exist: {blocked\_rule\_id}. \
\*\*Error Code:\*\* \`404\` \
Extension does not exist: {extensionId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List an account's inbound blocked statistics - **Method:** `GET` - **Path:** `/phone/inbound_blocked/extension_rules/statistics` - **Tags:** Inbound Blocked List Returns the list of the statistics of the extensions blocked rule for inbound calls and messaging. (e.g. Call Queue, Auto Receptionist, Shared Line Group, Common Area, Zoom Room and User) **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:list_extension_inbound_block_rules_stat:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Get inbound blocked statistics successfully. ###### Content-Type: application/json - **`blocked_statistic`** `array` — The inbound blocked extension rule statistics. **Items:** - **`block_count`** `integer` — This field counts the number of extensions (phone users, Zoom rooms, common area phones, call queues, etc.) that have marked the \`phone\_number\` as \`type\` = \`block\_for\_other\_reasons\`. - **`blocked_number`** `string` — The block rule phone number prefix, SMS short code, or pure phone number without the country code. - **`country`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). This field is required when the value is as follows: \* \`match\_type\` is \`phoneNumber\` or \`prefix\` - **`id`** `string` — The unique identifier of the blocked statistic. - **`match_type`** `string`, possible values: `"prefix", "phoneNumber", "SMS-shortCodes"` — The match type for the block rule: \* \`phoneNumber\`: Indicates that only a specific phone number that is shown in the \`blocked\_number\` field is blocked. \* \`prefix\`: Indicates that all numbers starting with the prefix that is shown in the \`blocked\_number\` field are blocked. \* \`SMS-shortCodes\`: Indicates that only a specific sms short code that is shown in the \`blocked\_number\` field is blocked. - **`phone_number`** `string` — The phone number of the block rule, the value is a combination of the \`country\` and \`blocked\_number\` values. \* when the value of the \`match\_type\` is \`phoneNumber\`, the value of \`phone\_number\` is displayed in E164 format. \* when the value of the \`match\_type\` is \`prefix\`, the value of \`phone\_number\` is appended with the \`country\` code. - **`threat_count`** `integer` — This field counts the number of extensions (phone users, Zoom rooms, common area phones, call queues, etc.) that have marked the \`phone\_number\` as \`type\` = \`block\_as\_threat\`. - **`type`** `string`, possible values: `"block_for_other_reasons", "block_as_threat"` — The block type for the block rule: \* block\_for\_other\_reasons \* block\_as\_threat - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer` — The total number of records returned from a single API call. **Example:** ```json { "blocked_statistic": [ { "id": "2Iq1GeCiR5WczhV9QgXwFA", "match_type": "phoneNumber", "phone_number": "+120665558945", "type": "1", "block_count": 3, "threat_count": 2, "blocked_number": "20665558945", "country": "US" } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
You do not enable the block list for inbound calls and messaging policy setting. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an account's inbound blocked statistics - **Method:** `DELETE` - **Path:** `/phone/inbound_blocked/extension_rules/statistics` - **Tags:** Inbound Blocked List Deletes the statistic of extensions blocked rule for inbound calls and messaging. (e.g. Call Queue, Auto Receptionist, Shared Line Group, Common Area, Zoom Room and User) **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:delete:extension_inbound_block_rule_stat:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* The blocked statistics deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
The block list for inbound calls and messaging policy setting is not enabled. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Blocked statistic does not exist: {blocked\_statistic\_id}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Mark a phone number as blocked for all extensions - **Method:** `PATCH` - **Path:** `/phone/inbound_blocked/extension_rules/statistics/blocked_for_all` - **Tags:** Inbound Blocked List Promotes and applies the phone number blocked from the extension level blocked rule to the account level blocked rule. This action is contingent on the statistics of extensions blocked rule. All extensions under the current account block this phone number. **Prerequisites:** - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:inbound_blocked_for_all:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`blocked_statistic_id` (required)** `string` — The unique identifier of the blocked statistic. **Example:** ```json { "blocked_statistic_id": "2Iq1GeCiR5WczhV9QgXwFA" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Blocked for all extensions successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
The block list for inbound calls and messaging policy setting is not enabled. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Blocked statistic does not exist: {blocked\_statistic\_id}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List an account's inbound block rules - **Method:** `GET` - **Path:** `/phone/inbound_blocked/rules` - **Tags:** Inbound Blocked List Returns a list of account level inbound block rule for inbound calls and messaging. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_inbound_block_rules:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* List inbound calls block rules successfully. ###### Content-Type: application/json - **`account_blocked_rules`** `array` — The inbound blocked rules. **Items:** - **`blocked_number`** `string` — The block rule phone number prefix or sms short code or pure phone number without the country code. - **`comment`** `string` — The comment of the block rule. Enter a comment to help you identify the blocked number or prefix. - **`country`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). This field is required when the value is as follows: \* \`match\_type\` is \`phoneNumber\` or \`prefix\` - **`id`** `string` — The unique identifier of the block rule. - **`match_type`** `string`, possible values: `"prefix", "phoneNumber", "SMS-shortCodes"` — The match type for the block rule: \* \`phoneNumber\`: Indicates that only a specific phone number that is shown in the \`blocked\_number\` field is blocked. \* \`prefix\`: Indicates that all numbers starting with the prefix that is shown in the \`blocked\_number\` field are blocked. \* \`SMS-shortCodes\`: Indicates that only a specific sms short code that is shown in the \`blocked\_number\` field is blocked. - **`phone_number`** `string` — The phone number of the block rule, the value is a combination of the \`country\` and \`blocked\_number\` values. \* when the value of the \`match\_type\` is \`phoneNumber\`, the value of \`phone\_number\` is displayed in E164 format. \* when the value of the \`match\_type\` is \`prefix\`, the value of \`phone\_number\` is appended with the \`country\` code. - **`status`** `string`, possible values: `"active", "inactive"` — Whether the block rule is active or inactive. \* \`active\`: The block rule is active. \* \`inactive\`: The block rule is inactive. - **`type`** `string`, possible values: `"block_for_other_reasons", "block_as_threat"` — The block type for the block rule: \* block\_for\_other\_reasons \* block\_as\_threat - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer`, default: `30` — The total number of records returned from a single API call. **Example:** ```json { "account_blocked_rules": [ { "id": "N9vmnIOHQMSWSL9mrz9jTw", "match_type": "phoneNumber", "phone_number": "+120665558945", "type": "block_for_other_reasons", "status": "active", "comment": "test inbound block comment.", "blocked_number": "20665558945", "country": "US" } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
You do not enable the block list for inbound calls and messaging policy setting. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add an account's inbound block rule - **Method:** `POST` - **Path:** `/phone/inbound_blocked/rules` - **Tags:** Inbound Blocked List Adds an account level block rule for inbound calls and messaging from a phone number. As a result, all extensions block calls and messages to the phone number. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:inbound_block_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`blocked_number` (required)** `string` — The block rule phone number prefix or SMS short code or pure phone number without the country code. \* When the value of the \`match\_type\` is \`prefix\`, enter the prefix of the phone number without the country code. \* When the value of the \`match\_type\` is \`phoneNumber\`, enter the phone number without the country code. \* When the value of the \`match\_type\` is \`SMS-shortCodes\`, enter the SMS short code. - **`match_type` (required)** `string`, possible values: `"prefix", "phoneNumber", "SMS-shortCodes"` — The match type for the block rule: \* \`phoneNumber\`: Only a specific phone number that is shown in the \`blocked\_number\` field is blocked. \* \`prefix\`: All numbers starting with the prefix that is shown in the \`blocked\_number\` field are blocked. \* \`SMS-shortCodes\`: Only a specific SMS short code that is shown in the \`blocked\_number\` field is blocked. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the block rule is active or inactive. \* \`active\`: The block rule is active. \* \`inactive\`: The block rule is inactive. - **`type` (required)** `string`, possible values: `"block_for_other_reasons", "block_as_threat"` — The block type for the block rule: \* \`block\_for\_other\_reasons\` \* \`block\_as\_threat\` \*\*Note\*\*: The value of \`block\_as\_threat\` can be available if the \`block\_calls\_as\_threat\` setting is enabled in \[account setting API]\(https\://developers.zoom.us/docs/zoom-phone/apis/#operation/listZoomPhoneAccountSettings). - **`comment`** `string` — The comment of the block rule. Enter a comment to help you identify the blocked number, prefix, or SMS short codes. - **`country`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). This field is required when the value is the following: \* \`match\_type\` is \`phoneNumber\` or \`prefix\` **Example:** ```json { "match_type": "phoneNumber", "blocked_number": "20665558945", "type": "block_for_other_reasons", "comment": "test inbound block comment.", "status": "active", "country": "US" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Created successfully. ###### Content-Type: application/json - **`id`** `string` — The unique identifier of the blocked rule. **Example:** ```json { "id": "N9vmnIOHQMSWSL9mrz9jTw" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
The block list for inbound calls and messaging policy setting is not enabled. \
\*\*Error Code:\*\* \`13601\` \
Blocked phone number already exists:{blocked\_number}. \
\*\*Error Code:\*\* \`13605\` \
The block calls as threat policy setting is not enabled. It is not allowed selecting 'type' as 'block\_as\_threat. \
\*\*Error Code:\*\* \`400\` \
Invalid country. \
\*\*Error Code:\*\* \`7015\` \
The phone number {blocked\_number} is invalid. \
\*\*Error Code:\*\* \`13604\` \
Blocked number:{blocked\_number} does not match the country:{country}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an account's inbound block rule - **Method:** `DELETE` - **Path:** `/phone/inbound_blocked/rules` - **Tags:** Inbound Blocked List Deletes the account level blocked rule for inbound calls and messaging. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:inbound_block_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* The blocked rule deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
You do not enable the block list for inbound calls and messaging policy setting. \
\*\*Error Code:\*\* \`13602\` \
You can't delete or change the number, because it is marked as Blocked Number more than the 'Automatic Blocking Threshold'. \
\*\*Error Code:\*\* \`13603\` \
You can't delete or change the number, because it is marked as Threat Number more than the 'Automatic Threat Blocking Threshold'. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Blocked rule does not exist: {blocked\_rule\_id}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update an account's inbound block rule - **Method:** `PATCH` - **Path:** `/phone/inbound_blocked/rules/{blockedRuleId}` - **Tags:** Inbound Blocked List Updates the account level block rule for inbound calls and messaging. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:inbound_block_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`blocked_number` (required)** `string` — The block rule phone number prefix or SMS short code or pure phone number without the country code. - **`match_type` (required)** `string`, possible values: `"prefix", "phoneNumber", "SMS-shortCodes"` — The match type for the block rule: \* \`phoneNumber\`: Indicates that only a specific phone number that is shown in the \`blocked\_number\` field is blocked. \* \`prefix\`: Indicates that all numbers starting with the prefix that is shown in the \`blocked\_number\` field are blocked. \* \`SMS-shortCodes\`: Indicates that only a specific SMS short code that is shown in the \`blocked\_number\` field is blocked. - **`type` (required)** `string`, possible values: `"block_for_other_reasons", "block_as_threat"` — The block type for the block rule: \* block\_for\_other\_reasons \* block\_as\_threat \*\*Note\*\*: The value of \`block\_as\_threat\` can be available if the \`block\_calls\_as\_threat\` setting is enabled in \[account setting API]\(https\://developers.zoom.us/docs/zoom-phone/apis/#operation/listZoomPhoneAccountSettings). - **`comment`** `string` — The comment of the block rule. Enter a comment to help you identify the blocked number or prefix. - **`country`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). This field is required when the value is as follows: \* \`match\_type\` is \`phoneNumber\` or \`prefix\` - **`status`** `string`, possible values: `"active", "inactive"` — Whether the block rule is active or inactive. \* \`active\`: The block rule is active. \* \`inactive\`: The block rule is inactive. **Example:** ```json { "match_type": "phoneNumber", "blocked_number": "20665558945", "type": "block_for_other_reasons", "comment": "test update inbound block comment.", "status": "active", "country": "US" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* The blocked rule updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13600\` \
The block list for inbound calls and messaging policy setting is not enabled. \
\*\*Error Code:\*\* \`13601\` \
Blocked phone number already exists:{blocked\_number}. \
\*\*Error Code:\*\* \`13602\` \
You can't delete or change the number, because it is marked as Blocked Number more than the 'Automatic Blocking Threshold'. \
\*\*Error Code:\*\* \`13603\` \
You can't delete or change the number, because it is marked as Threat Number more than the 'Automatic Threat Blocking Threshold'. \
\*\*Error Code:\*\* \`400\` \
Invalid country. \
\*\*Error Code:\*\* \`7015\` \
The phone number {blocked\_number} is invalid. \
\*\*Error Code:\*\* \`13604\` \
Blocked number:{blocked\_number} does not match the country:{country}. \
\*\*Error Code:\*\* \`13605\` \
The block calls as threat policy setting is not enabled, it is not allowed selecting 'type' as 'block\_as\_threat. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Blocked rule does not exist: {blocked\_rule\_id}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get line key position and settings information - **Method:** `GET` - **Path:** `/phone/extension/{extensionId}/line_keys` - **Tags:** Line Keys Use this API to get the Zoom Phone [line key settings](https://support.zoom.us/hc/en-us/articles/360040587552) information. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:line_keys`,`phone:read:line_keys:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Line key and position setting object returned. ###### Content-Type: application/json - **`line_keys`** `array` — The line key position. **Items:** - **`alias`** `string` — The user-defined display name for each line key of the device. The alias can be up to 32 characters in length. - **`index`** `integer` — The order of the line key on the phone. - **`key_assignment`** `object` — The line key assignment information. - **`display_name`** `string` — The display name of the line assigned to the line key. - **`extension_id`** `string` — The extension ID of the line assigned to the line key. - **`extension_number`** `string` — The extension number of the line assigned to the line key. - **`phone_number`** `string` — The phone number of the line assigned to the line key. - **`retrieval_code`** `string` — The call park retrieval code for \`call\_park\` line key type. - **`speed_dial_number`** `string` — The speed dial number used for \`speed\_dial\_number\` line key type. - **`line_key_id`** `string` — The line key ID. - **`outbound_caller_id`** `string` — The outbound caller number for the line. - **`type`** `string`, possible values: `"line", "blf", "speed_dial", "zoom_meeting", "call_park", "group_call_pickup"` — The line key type. \`line\`: Line/Shared line access/ Shared line group. \`blf\`: Busy lamp field. \`speed\_dial\`: Speed-dial a phone number. \`zoom\_meeting\`: Desk phone companion mode. \`call\_park\`: Call park. Users don't need to dial the retrieval codes with this setting. \`group\_call\_pickup\`: Pick up inbound calls for call pickup groups. **Example:** ```json { "line_keys": [ { "alias": "Line1", "index": 1, "key_assignment": { "display_name": "Test 123", "extension_id": "TO586CYlQFC_WCUvPRXytA", "extension_number": "1000001004", "phone_number": "+12058945795", "retrieval_code": "*801", "speed_dial_number": "123456" }, "line_key_id": "BH9SHc4YTnWqQ9u0LC3kkg", "outbound_caller_id": "+18108001001", "type": "line" } ] } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Batch update line key position and settings information - **Method:** `PATCH` - **Path:** `/phone/extension/{extensionId}/line_keys` - **Tags:** Line Keys Use this API to batch update the Zoom Phone [line key settings](https://support.zoom.us/hc/en-us/articles/360040587552) information. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:line_keys`,`phone:update:line_keys:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`line_keys`** `array` — The line key position. **Items:** - **`alias`** `string` — The user-defined display name for each line key of the device. The alias can be up to 32 characters in length. - **`index`** `integer` — The order of the line key on the phone. - **`key_assignment`** `object` — The line key assignment information. - **`extension_id`** `string` — The extension ID of the line assigned to the line key. - **`retrieval_code`** `string` — The call park retrieval code for \`call\_park\` line key type. - **`speed_dial_number`** `string` — The speed dial number used for \`speed\_dial\_number\` line key type. - **`line_key_id`** `string` — The line key ID. - **`outbound_caller_id`** `string` — The mapping ID of the parameter \`outbound\_caller\_number\`. Hides the caller ID if set to \`anonymous\`. - **`type`** `string`, possible values: `"line", "blf", "speed_dial", "zoom_meeting", "call_park", "group_call_pickup"` — The line key type. \`line\`: Line/Shared line access/Shared line group. \`blf\`: Busy lamp field. \`speed\_dial\`: Speed-dial a phone number. \`zoom\_meeting\`: Desk phone companion mode. \`call\_park\`: Call park. Users don't need to dial the retrieval codes with this setting. \`group\_call\_pickup\`: Pick up inbound calls for call pickup groups. **Example:** ```json { "line_keys": [ { "line_key_id": "BH9SHc4YTnWqQ9u0LC3kkg", "index": 1, "type": "line", "key_assignment": { "extension_id": "TO586CYlQFC_WCUvPRXytA", "speed_dial_number": "123456", "retrieval_code": "*802" }, "alias": "Line 1", "outbound_caller_id": "+18108001001" } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Line keys and positions updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Line key ID does not exist: {0}. \
Line key type is invalid: {0}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a line key setting. - **Method:** `DELETE` - **Path:** `/phone/extension/{extensionId}/line_keys/{lineKeyId}` - **Tags:** Line Keys Use this API to delete the Zoom Phone [line key settings](https://support.zoom.us/hc/en-us/articles/360040587552) information. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:line_keys`,`phone:delete:line_keys:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* The line key has been deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Line key ID does not exist: {0}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a list of monitoring groups on an account - **Method:** `GET` - **Path:** `/phone/monitoring_groups` - **Tags:** Monitoring Groups Returns an account's [monitoring group](https://support.zoom.us/hc/en-us/articles/360044804711) list. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:list_monitoring_groups:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Account monitoring groups list returned. ###### Content-Type: application/json - **`monitoring_groups`** `array` **Items:** - **`id`** `string` — The monitoring group ID. - **`monitor_members_count`** `integer` — The number of monitors. - **`monitored_members_count`** `integer` — The number of monitored users. - **`monitoring_privileges`** `array` — This field sets the group's monitoring privileges. **Items:** `string`, possible values: `"listen", "whisper", "barge", "take_over"` - **`name`** `string` — The monitoring instance name. - **`prompt`** `boolean` — Whether to play a disclaimer prompt to the call participants - **`site`** `object` — The site of the monitoring group. - **`id`** `string` — The site ID. - **`name`** `string` — The site name. - **`type`** `integer`, possible values: `1, 2, 3, 4` — The monitoring type. \* \`1\` \— Users \& Common Areas. \* \`2\` \— Call Queues. \* \`3\` \— Shared Line Group. \* \`4\` \— Shared Line Appearance. - **`next_page_token`** `string` — The current page number of returned records. - **`page_size`** `integer` — The size of the page. - **`total_records`** `integer` — The total number of records available across all pages. **Example:** ```json { "monitoring_groups": [ { "id": "oDmRjKVTRymXGMtgtBK2Sg", "monitor_members_count": 1, "monitored_members_count": 1, "monitoring_privileges": [ "listen" ], "name": "pbx_api_test_uacap", "prompt": true, "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "type": 1 } ], "next_page_token": "ICF5K4lVmGG4kyIyGxSfBU2LH4QQG95cn32", "page_size": 30, "total_records": 1 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
The next page token is invalid or expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create a monitoring group - **Method:** `POST` - **Path:** `/phone/monitoring_groups` - **Tags:** Monitoring Groups Creates a [monitoring group](https://support.zoom.us/hc/en-us/articles/360044804711). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:write:monitoring_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`monitoring_privileges`** `array` — This field sets monitoring group's privileges. **Items:** `string`, possible values: `"listen", "whisper", "barge", "take_over"` - **`name`** `string` — The monitoring group's name. - **`prompt`** `boolean` — Whether to play a disclaimer prompt to the call participants. - **`site_id`** `string` — The unique identifier of the monitoring group's site. - **`type`** `integer`, possible values: `1, 2, 3, 4` — The monitoring type. \* \`1\` \— Users \& Common Areas. \* \`2\` \— Call Queues. \* \`3\` \— Shared Line Group. \* \`4\` \— Shared Line Appearance. **Example:** ```json { "monitoring_privileges": [ "listen" ], "name": "pbx_api_test_uacap", "prompt": true, "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "type": 1 } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Monitoring created. ###### Content-Type: application/json - **`id`** `string` — The monitoring group ID. - **`name`** `string` — The monitoring group's name. **Example:** ```json { "id": "oDmRjKVTRymXGMtgtBK2Sg", "name": "pbx_api_test_uacap" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Name is required. Type is required Site ID is required. The privilege does not exist. Type should be \`1\`, \`2\`, or \`3\`. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get monitoring group by ID - **Method:** `GET` - **Path:** `/phone/monitoring_groups/{monitoringGroupId}` - **Tags:** Monitoring Groups Returns a [monitoring group](https://support.zoom.us/hc/en-us/articles/360044804711) for the specified ID. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:monitoring_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Monitoring returned. ###### Content-Type: application/json - **`id`** `string` — The monitoring group ID. - **`monitor_members_count`** `integer` — The number of monitors. - **`monitored_members_count`** `integer` — The number of monitored users. - **`monitoring_privileges`** `array` — This field sets the group's monitoring privileges. **Items:** `string`, possible values: `"listen", "whisper", "barge", "take_over"` - **`name`** `string` — The monitoring group's name. - **`prompt`** `boolean` — Whether to play a disclaimer prompt to the call participants. - **`site`** `object` — The site of monitoring group. - **`id`** `string` — The site ID. - **`name`** `string` — The site name. - **`type`** `integer`, possible values: `1, 2, 3, 4` — The monitoring type. \* \`1\` \— Users \& Common Areas. \* \`2\` \— Call Queues. \* \`3\` \— Shared Line Group. \* \`4\` \— Shared Line Appearance. **Example:** ```json { "id": "oDmRjKVTRymXGMtgtBK2Sg", "monitor_members_count": 1, "monitored_members_count": 1, "monitoring_privileges": [ "listen" ], "name": "pbx_api_test_uacap", "prompt": true, "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "type": 1 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The group does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a monitoring group - **Method:** `DELETE` - **Path:** `/phone/monitoring_groups/{monitoringGroupId}` - **Tags:** Monitoring Groups Use this API to delete a [Monitoring Group](https://support.zoom.us/hc/en-us/articles/360044804711). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:delete:monitoring_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Monitoring group deleted. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The group does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a monitoring group - **Method:** `PATCH` - **Path:** `/phone/monitoring_groups/{monitoringGroupId}` - **Tags:** Monitoring Groups Use this API to update a [Monitoring Group](https://support.zoom.us/hc/en-us/articles/360044804711). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:monitoring_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`monitoring_privileges`** `array` — Set of monitoring group's privileges. **Items:** `string`, possible values: `"listen", "whisper", "barge", "take_over"` - **`name`** `string` — Monitoring group's name. - **`prompt`** `boolean` — Whether Play a disclaimer prompt to the call participants - **`site_id`** `string` — Unique identifier of the monitoring group's site. **Example:** ```json { "monitoring_privileges": [ "take_over" ], "name": "testUpdateName", "prompt": false, "site_id": "NjHmTu16Qfe8yOiNJuekXA" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Monitoring group updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
The privilege does not exist. \*\*Error Code:\*\* \`404\` \
The group does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get members of a monitoring group - **Method:** `GET` - **Path:** `/phone/monitoring_groups/{monitoringGroupId}/monitor_members` - **Tags:** Monitoring Groups Use this API to return members list of a [Monitoring Group](https://support.zoom.us/hc/en-us/articles/360044804711). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:list_monitoring_group_members:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Members in a monitoring group returned. ###### Content-Type: application/json - **`members`** `array` **Items:** - **`display_name`** `string` — Member name. - **`extension_id`** `string` — Extension ID. - **`extension_number`** `integer`, format: `int64` — Extension number. - **`extension_type`** `string`, possible values: `"user", "call_queue", "shared_line_group", "common_area_phone"` — Extension type - **`next_page_token`** `string` — The current page number of returned records. - **`page_size`** `integer` — The number of records returned within a single API call. - **`total_records`** `integer` — The number of records **Example:** ```json { "members": [ { "display_name": "testUser", "extension_id": "JpjPXizWTz-l35tFRUK3Gg", "extension_number": 10010, "extension_type": "user" } ], "next_page_token": "ICF5K4lVmGG4kyIyGxSfBU2LH4QQG95cn32", "page_size": 30, "total_records": 1 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Missing 'member\_type'. The next page token is invalid or expired. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add members to a monitoring group - **Method:** `POST` - **Path:** `/phone/monitoring_groups/{monitoringGroupId}/monitor_members` - **Tags:** Monitoring Groups Use this API to add members to a [Monitoring Group](https://support.zoom.us/hc/en-us/articles/360044804711). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:write:monitoring_group_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json **Array of:** `string` — Monitor's extension ID **Example:** ```json [ "JpjPXizWTz-l35tFRUK3Gg" ] ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Add members to a monitoring group. ###### Content-Type: application/json **Example:** ```json null ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The maximum number of monitors is 100. The maximum number of monitored is 100. The group does not exist. \*\*Error Code:\*\* \`409\` \
Cannot create group. 'member\_type' member(s) already exist(s) in current monitoring group. Cannot create group. 'member\_type' member(s) already exist(s) in other monitoring group. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove all monitors or monitored members from a monitoring group - **Method:** `DELETE` - **Path:** `/phone/monitoring_groups/{monitoringGroupId}/monitor_members` - **Tags:** Monitoring Groups Use this API to remove all monitor or monitored members from a [Monitoring Group](https://support.zoom.us/hc/en-us/articles/360044804711). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:delete:monitoring_group_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Remove all monitor or monitored members from a monitoring group. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The group does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove a member from a monitoring group - **Method:** `DELETE` - **Path:** `/phone/monitoring_groups/{monitoringGroupId}/monitor_members/{memberExtensionId}` - **Tags:** Monitoring Groups Use this API to remove a member from a [Monitoring Group](https://support.zoom.us/hc/en-us/articles/360044804711). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:delete:monitoring_group_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Remove a member from a monitoring group. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The group does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get common area level outbound calling countries and regions - **Method:** `GET` - **Path:** `/phone/common_areas/{commonAreaId}/outbound_calling/countries_regions` - **Tags:** Outbound Calling Returns the common area level outbound calling countries and regions. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:common_area_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Outbound calling country regions returned. ###### Content-Type: application/json - **`countries_regions`** `array` **Items:** - **`code`** `integer` — The country code. - **`enabled_carrier`** `array` — The enabled carrier, which could be "ZOOM" or "BYOC". **Items:** `string` - **`iso_code`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`name`** `string` — The country name. - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The default outbound calling rule. \`1\` Allowed \`2\` Blocked \`3\` Requires local number, caller ID, or plan \`4\` Requires the extension number and PIN code - **`next_page_token`** `string` — The next page token paginates through 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. - **`page_size`** `integer`, default: `30` — The total number of records from a single API call. **Example:** ```json { "countries_regions": [ { "name": "United States", "code": 1, "iso_code": "US", "rule": 1, "enabled_carrier": [ "ZOOM" ] } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update common area level outbound calling countries or regions - **Method:** `PATCH` - **Path:** `/phone/common_areas/{commonAreaId}/outbound_calling/countries_regions` - **Tags:** Outbound Calling Updates the common area level outbound calling policy country or region. **Prerequisite:** - Account must have a Pro or a higher plan with a Zoom Phone license. **[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:common_area_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`country_regions`** `array` **Items:** - **`delete_existing_exception_rules`** `boolean` — Whether to delete existing exception rules. This field only appears when the default outbound calling rule is changed. The default value is \`false\`. - **`iso_code`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The default outbound calling rule. \`1\` - Allowed \`2\` - Blocked \`3\` - Requires local number, caller ID, or plan \`4\` - Requires the extension number and PIN code **Example:** ```json { "country_regions": [ { "iso_code": "US", "rule": 1, "delete_existing_exception_rules": false } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List common area level outbound calling exception rules - **Method:** `GET` - **Path:** `/phone/common_areas/{commonAreaId}/outbound_calling/exception_rules` - **Tags:** Outbound Calling Lists the common area level outbound calling policy exception rules. **Prerequisite:** - Pro or higher account plan with Zoom phone license **[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:common_area_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* List outbound calling exception rules successfully. ###### Content-Type: application/json - **`exception_rules`** `array` **Items:** - **`comment`** `string` — A comment to help identify the exception rule number or prefix. - **`id`** `string` — The exception rule ID. - **`match_type`** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule: \`phoneNumber\`and \`prefix\`. - **`prefix_number`** `string` — The exception rule phone number prefix or the phone number without country code. - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The exception rule type \`1\` - allowed, \`2\` - blocked, \`3\` - require local number, caller ID or plan, \`4\` - require to enter the extension number and PIN code. - **`status`** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer`, default: `30` — The total number of records in a single API call. **Example:** ```json { "exception_rules": [ { "id": "2ypsHHwTTFK-fzZJkudYwA", "match_type": "prefix", "prefix_number": "20665558945", "rule": 1, "comment": "test", "status": "active" } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13000\` \
The common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add common area level outbound calling exception rule - **Method:** `POST` - **Path:** `/phone/common_areas/{commonAreaId}/outbound_calling/exception_rules` - **Tags:** Outbound Calling Adds the common area level outbound calling policy exception rule for the country region. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:common_area_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`exception_rule`** `object` - **`country` (required)** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`match_type` (required)** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule: \`phoneNumber\` \`prefix\` - **`prefix_number` (required)** `string` — The exception rule for the phone number prefix or the phone number without the country code. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`comment`** `string` — A comment that identifies the exception rule number or the prefix. **Example:** ```json { "exception_rule": { "match_type": "prefix", "prefix_number": "20665558945", "comment": "test", "status": "active", "country": "US" } } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Created successfully. ###### Content-Type: application/json - **`exception_rule_id`** `string` — The IDs of the exception rules. **Example:** ```json { "exception_rule_id": "jE1rtyf0Tx6N86L4pBYV4Q" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete common area level outbound calling exception rule - **Method:** `DELETE` - **Path:** `/phone/common_areas/{commonAreaId}/outbound_calling/exception_rules/{exceptionRuleId}` - **Tags:** Outbound Calling Deletes the common area level outbound calling exception rule. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:common_area_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
\*\*Error Code:\*\* \`13508\` \
The exception rule ID has one more record in the DB: {exceptionRuleId}. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The common area does not exist: {commonAreaId}. \
\*\*Error Code:\*\* \`13507\` \
The exception rule does not exist: {exceptionRuleId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update common area level outbound calling exception rule - **Method:** `PATCH` - **Path:** `/phone/common_areas/{commonAreaId}/outbound_calling/exception_rules/{exceptionRuleId}` - **Tags:** Outbound Calling Updates the common area level outbound calling policy for the country region exception rule. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:common_area_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`exception_rule`** `object` - **`country` (required)** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`match_type` (required)** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule. The values are \`phoneNumber\` or \`prefix\`. - **`prefix_number` (required)** `string` — The exception rule phone number prefix or the phone number without the country code. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`comment`** `string` — A comment to identify the exception rule number or prefix. **Example:** ```json { "exception_rule": { "match_type": "prefix", "prefix_number": "20665558945", "comment": "test", "status": "active", "country": "US" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The common area does not exist: {commonAreaId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get account level outbound calling countries and regions - **Method:** `GET` - **Path:** `/phone/outbound_calling/countries_regions` - **Tags:** Outbound Calling Returns the account level outbound calling countries and regions. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:list_outbound_calling_rules:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Outbound calling country regions returned. ###### Content-Type: application/json - **`countries_regions`** `array` **Items:** - **`code`** `integer` — The country code. - **`enabled_carrier`** `array` — The enabled carrier, which could be "ZOOM" or "BYOC". **Items:** `string` - **`iso_code`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`name`** `string` — The country name. - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The default outbound calling rule. \`1\` Allowed \`2\` Blocked \`3\` Requires local number, caller ID, or plan \`4\` Requires the extension number and PIN code - **`next_page_token`** `string` — The next page token paginates through large set of results. 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. - **`page_size`** `integer`, default: `30` — The total number of records in a single API call. **Example:** ```json { "countries_regions": [ { "name": "United States", "code": 1, "iso_code": "US", "rule": 1, "enabled_carrier": [ "ZOOM" ] } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update account level outbound calling countries or regions - **Method:** `PATCH` - **Path:** `/phone/outbound_calling/countries_regions` - **Tags:** Outbound Calling Updates the account level outbound calling policy country or region. **Prerequisite:** - Account must have a Pro or a higher plan with a Zoom Phone license. **[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:outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`country_regions`** `array` **Items:** - **`delete_existing_exception_rules`** `boolean` — Whether to delete existing exception rules. This field only appears when the default outbound calling rule is changed. The default value is \`false\`. - **`iso_code`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The default outbound calling rule. \`1\` - Allowed \`2\` - Blocked \`3\` - Requires local number, caller ID, or plan \`4\` - Requires the extension number and PIN code **Example:** ```json { "country_regions": [ { "iso_code": "US", "rule": 1, "delete_existing_exception_rules": false } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List account level outbound calling exception rules - **Method:** `GET` - **Path:** `/phone/outbound_calling/exception_rules` - **Tags:** Outbound Calling Lists the account level outbound calling policy exception rules. **Prerequisite:** - Pro or higher account plan with Zoom phone license **[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:list_outbound_calling_rules:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* List outbound calling exception rules successfully. ###### Content-Type: application/json - **`exception_rules`** `array` **Items:** - **`comment`** `string` — A comment to identify the exception rule number or the prefix. - **`id`** `string` — The exception rule ID. - **`match_type`** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule. The values are \`phoneNumber\`or \`prefix\`. - **`prefix_number`** `string` — The exception rule phone number prefix or the phone number without the country code. - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The exception rule type. \`1\` - Allowed \`2\` - Blocked \`3\` - Requires local number, caller ID, or plan \`4\` - Requires the extension number and PIN code - **`status`** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`next_page_token`** `string` — 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. - **`page_size`** `integer`, default: `30` — The total number of records in a single API call. **Example:** ```json { "exception_rules": [ { "id": "2ypsHHwTTFK-fzZJkudYwA", "match_type": "prefix", "prefix_number": "20665558945", "rule": 1, "comment": "test", "status": "active" } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add account level outbound calling exception rule - **Method:** `POST` - **Path:** `/phone/outbound_calling/exception_rules` - **Tags:** Outbound Calling Adds the account level outbound calling policy exception rule for country region. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`exception_rule`** `object` - **`country` (required)** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`match_type` (required)** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule: \`phoneNumber\` \`prefix\` - **`prefix_number` (required)** `string` — The exception rule phone number prefix or phone number without the country code. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`comment`** `string` — A comment that identifies the exception rule number or prefix. **Example:** ```json { "exception_rule": { "match_type": "prefix", "prefix_number": "20665558945", "comment": "test", "status": "active", "country": "US" } } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Created successfully. ###### Content-Type: application/json - **`exception_rule_id`** `string` — The IDs of the exception rules. **Example:** ```json { "exception_rule_id": "jE1rtyf0Tx6N86L4pBYV4Q" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete account level outbound calling exception rule - **Method:** `DELETE` - **Path:** `/phone/outbound_calling/exception_rules/{exceptionRuleId}` - **Tags:** Outbound Calling Deletes the account level outbound calling exception rule. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
\*\*Error Code:\*\* \`13508\` \
The exception rule ID has one more record in the DB: {exceptionRuleId}. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13507\` \
The exception rule does not exist: {exceptionRuleId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update account level outbound calling exception rule - **Method:** `PATCH` - **Path:** `/phone/outbound_calling/exception_rules/{exceptionRuleId}` - **Tags:** Outbound Calling Updates the account level outbound calling policy for the country region exception rule. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`exception_rule`** `object` - **`country` (required)** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`match_type` (required)** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule, The values are \`phoneNumber\` or \`prefix\`. - **`prefix_number` (required)** `string` — The exception rule phone number prefix or the phone number without country code. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`comment`** `string` — A comment to identify the exception rule number or prefix. **Example:** ```json { "exception_rule": { "match_type": "prefix", "prefix_number": "20665558945", "comment": "test", "status": "active", "country": "US" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get site level outbound calling countries and regions - **Method:** `GET` - **Path:** `/phone/sites/{siteId}/outbound_calling/countries_regions` - **Tags:** Outbound Calling Returns the site level outbound calling countries and regions. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:site_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Outbound calling country regions returned. ###### Content-Type: application/json - **`countries_regions`** `array` **Items:** - **`code`** `integer` — The country code. - **`enabled_carrier`** `array` — The enabled carrier, which could be "ZOOM" or "BYOC". **Items:** `string` - **`iso_code`** `string` — The country ISO code. - **`name`** `string` — The country name. - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The default outbound calling rule. \`1\` Allowed \`2\` Blocked \`3\` Requires local number, caller ID, or plan \`4\` Requires the extension number and PIN code - **`next_page_token`** `string` — The next page token paginates through 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. - **`page_size`** `integer`, default: `30` — The total number of records in a single API call. **Example:** ```json { "countries_regions": [ { "name": "United States", "code": 1, "iso_code": "US", "rule": 1, "enabled_carrier": [ "ZOOM" ] } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The site does not exist: {siteId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update site level outbound calling countries or regions - **Method:** `PATCH` - **Path:** `/phone/sites/{siteId}/outbound_calling/countries_regions` - **Tags:** Outbound Calling Updates the site level outbound calling policy country or region. **Prerequisites:** - Account must have a Pro or a higher plan with a Zoom Phone license. **[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:site_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`country_regions`** `array` **Items:** - **`delete_existing_exception_rules`** `boolean` — Whether to delete existing exception rules. This field only appears when the default outbound calling rule is changed. The default value is \`false\`. - **`iso_code`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The default outbound calling rule. \`1\` - Allowed \`2\` - Blocked \`3\` - Requires local number, caller ID, or plan \`4\` - Requires the extension number and PIN code **Example:** ```json { "country_regions": [ { "iso_code": "US", "rule": 1, "delete_existing_exception_rules": false } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The site does not exist: {siteId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List site level outbound calling exception rules - **Method:** `GET` - **Path:** `/phone/sites/{siteId}/outbound_calling/exception_rules` - **Tags:** Outbound Calling Returns a list of site level outbound calling policy exception rules. **Prerequisite:** - Pro or higher account plan with Zoom phone license **[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:site_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* List outbound calling exception rules successfully. ###### Content-Type: application/json - **`exception_rules`** `array` **Items:** - **`comment`** `string` — A comment to help you identify the exception rule number or prefix. - **`id`** `string` — The exception rule ID. - **`match_type`** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule: \`phoneNumber\`and \`prefix\`. - **`prefix_number`** `string` — The exception rule phone number prefix or phone number without country code. - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The exception rule type \`1\` - allowed, \`2\` - blocked, \`3\` - require local number, caller ID or plan, \`4\` - require to enter the extension number and PIN code. - **`status`** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer`, default: `30` — The total number of records in single API call. **Example:** ```json { "exception_rules": [ { "id": "2ypsHHwTTFK-fzZJkudYwA", "match_type": "prefix", "prefix_number": "20665558945", "rule": 1, "comment": "test", "status": "active" } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13000\` \
The site does not exist: {siteId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add site level outbound calling exception rule - **Method:** `POST` - **Path:** `/phone/sites/{siteId}/outbound_calling/exception_rules` - **Tags:** Outbound Calling Adds the site level outbound calling policy exception rule for the country region. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:site_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`exception_rule`** `object` - **`country` (required)** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`match_type` (required)** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule. \`phoneNumber\` \`prefix\` - **`prefix_number` (required)** `string` — The exception rule phone number prefix or the phone number without country code. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`comment`** `string` — A comment that identifies the exception rule number or the prefix. **Example:** ```json { "exception_rule": { "match_type": "prefix", "prefix_number": "20665558945", "comment": "test", "status": "active", "country": "US" } } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Created successfully. ###### Content-Type: application/json - **`exception_rule_id`** `string` — The IDs of the exception rules. **Example:** ```json { "exception_rule_id": "jE1rtyf0Tx6N86L4pBYV4Q" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The site does not exist: {siteId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete site level outbound calling exception rule - **Method:** `DELETE` - **Path:** `/phone/sites/{siteId}/outbound_calling/exception_rules/{exceptionRuleId}` - **Tags:** Outbound Calling Deletes the site level outbound calling exception rule. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:site_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
\*\*Error Code:\*\* \`13508\` \
The exception rule ID has one more record in the DB: {exceptionRuleId}. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The site does not exist: {siteId}. \
\*\*Error Code:\*\* \`13507\` \
The exception rule does not exist: {exceptionRuleId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update site level outbound calling exception rule - **Method:** `PATCH` - **Path:** `/phone/sites/{siteId}/outbound_calling/exception_rules/{exceptionRuleId}` - **Tags:** Outbound Calling Updates the site level outbound calling policy for the country region exception rule. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:site_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`exception_rule`** `object` - **`country` (required)** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`match_type` (required)** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule. The values are \`phoneNumber\` or \`prefix\`. - **`prefix_number` (required)** `string` — The exception rule phone number prefix or the phone number without the country code. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`comment`** `string` — A comment to identify the exception rule number or prefix. **Example:** ```json { "exception_rule": { "match_type": "prefix", "prefix_number": "20665558945", "comment": "test", "status": "active", "country": "US" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The site does not exist: {siteId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get user level outbound calling countries and regions - **Method:** `GET` - **Path:** `/phone/users/{userId}/outbound_calling/countries_regions` - **Tags:** Outbound Calling Returns the user level outbound calling countries and regions. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:user_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Outbound calling country regions returned. ###### Content-Type: application/json - **`countries_regions`** `array` **Items:** - **`code`** `integer` — The country code. - **`enabled_carrier`** `array` — The enabled carrier, which could be "ZOOM" or "BYOC". **Items:** `string` - **`iso_code`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`name`** `string` — The country name. - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The default outbound calling rule. \`1\` Allowed \`2\` Blocked \`3\` Requires local number, caller ID, or plan \`4\` Requires the extension number and PIN code - **`next_page_token`** `string` — The next page token paginates through large set of results. The next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer`, default: `30` — The total number of records in a single API call. **Example:** ```json { "countries_regions": [ { "name": "United States", "code": 1, "iso_code": "US", "rule": 1, "enabled_carrier": [ "ZOOM" ] } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The user does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update user level outbound calling countries or regions - **Method:** `PATCH` - **Path:** `/phone/users/{userId}/outbound_calling/countries_regions` - **Tags:** Outbound Calling Updates the user level outbound calling policy country or region. **Prerequisite:** - Account must have a Pro or a higher plan with a Zoom Phone license. **[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:user_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`country_regions`** `array` **Items:** - **`delete_existing_exception_rules`** `boolean` — Whether to delete existing exception rules. This field only appears when the default outbound calling rule is changed. The default value is \`false\`. - **`iso_code`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The default outbound calling rule. \`1\` - Allowed \`2\` - Blocked \`3\` - Requires local number, caller ID, or plan \`4\` - Requires the extension number and PIN code **Example:** ```json { "country_regions": [ { "iso_code": "US", "rule": 1, "delete_existing_exception_rules": false } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The user does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List user level outbound calling exception rules - **Method:** `GET` - **Path:** `/phone/users/{userId}/outbound_calling/exception_rules` - **Tags:** Outbound Calling Returns a list of the user level outbound calling policy exception rules. **Prerequisite:** - Pro or higher account plan with Zoom phone license **[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:user_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* List outbound calling exception rules successfully. ###### Content-Type: application/json - **`exception_rules`** `array` **Items:** - **`comment`** `string` — A comment to identify the exception rule number or prefix. - **`id`** `string` — The exception rule ID. - **`match_type`** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule: \`phoneNumber\`and \`prefix\`. - **`prefix_number`** `string` — The exception rule phone number prefix or phone number without country code. - **`rule`** `integer`, possible values: `1, 2, 3, 4` — The exception rule type \`1\` - allowed, \`2\` - blocked, \`3\` - require local number, caller ID or plan, \`4\` - require to enter the extension number and PIN code. - **`status`** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer`, default: `30` — The total number of records returned from a single API call. **Example:** ```json { "exception_rules": [ { "id": "2ypsHHwTTFK-fzZJkudYwA", "match_type": "prefix", "prefix_number": "20665558945", "rule": 1, "comment": "test", "status": "active" } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13000\` \
The user does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add user level outbound calling exception rule - **Method:** `POST` - **Path:** `/phone/users/{userId}/outbound_calling/exception_rules` - **Tags:** Outbound Calling Adds an user level outbound calling policy exception rule for the country region. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:user_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`exception_rule`** `object` - **`country` (required)** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`match_type` (required)** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule. \`phoneNumber\` \`prefix\` - **`prefix_number` (required)** `string` — The exception rule phone number prefix or the phone number without country code. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`comment`** `string` — A comment that identifies the exception rule number or the prefix. **Example:** ```json { "exception_rule": { "match_type": "prefix", "prefix_number": "20665558945", "comment": "test", "status": "active", "country": "US" } } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Created successfully. ###### Content-Type: application/json - **`exception_rule_id`** `string` — The IDs of the exception rules. **Example:** ```json { "exception_rule_id": "jE1rtyf0Tx6N86L4pBYV4Q" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The user does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete user level outbound calling exception rule - **Method:** `DELETE` - **Path:** `/phone/users/{userId}/outbound_calling/exception_rules/{exceptionRuleId}` - **Tags:** Outbound Calling Deletes the user level outbound calling exception rule. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:delete:user_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
\*\*Error Code:\*\* \`13508\` \
The exception rule ID has one more record in the DB: {exceptionRuleId}. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The user does not exist: {userId}. \
\*\*Error Code:\*\* \`13507\` \
The exception rule does not exist: {exceptionRuleId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update user level outbound calling exception rule - **Method:** `PATCH` - **Path:** `/phone/users/{userId}/outbound_calling/exception_rules/{exceptionRuleId}` - **Tags:** Outbound Calling Updates the user level outbound calling policy for the country region exception rule. **Prerequisites:** - Pro or a higher account with Zoom Phone license. - Account owner or admin permissions. **[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:user_outbound_calling_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`exception_rule`** `object` - **`country` (required)** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`match_type` (required)** `string`, possible values: `"phoneNumber", "prefix"` — The match type for the exception rule, The values are \`phoneNumber\` or \`prefix\`. - **`prefix_number` (required)** `string` — The exception rule phone number prefix or the phone number without country code. - **`status` (required)** `string`, possible values: `"active", "inactive"` — Whether the exception rule is active or inactive. \`active\`: The exception rule is active. \`inactive\`: The exception rule is inactive. - **`comment`** `string` — A comment to identify the exception rule number or prefix. **Example:** ```json { "exception_rule": { "match_type": "prefix", "prefix_number": "20665558945", "comment": "test", "status": "active", "country": "US" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13504\` \
You do not enable the outbound calling policy setting. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Requires an access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`13500\` \
The user does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List devices - **Method:** `GET` - **Path:** `/phone/devices` - **Tags:** Phone Devices Lists all the [desk phone devices](https://support.zoom.us/hc/en-us/articles/360021119092) that are configured with Zoom Phone on an account. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_devices:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Devices listed successfully. ###### Content-Type: application/json - **`devices`** `array` **Items:** - **`assignee`** `object` - **`extension_number`** `integer`, format: `int64` — The extension number of the Zoom Phone the \`user\` or \`commonArea\`uses. - **`extension_type`** `string`, possible values: `"user", "commonArea"` — The type of the assignee. It's available only if the device is assigned. - **`id`** `string` — The ID of the user or commonArea to whom the device has been assigned. - **`name`** `string` — Name. - **`assignees`** `array` **Items:** - **`extension_id`** `string` — The extension ID of the \`user\` or \`common area\`. - **`extension_number`** `integer`, format: `int64` — The extension number of the Zoom Phone the \`user\` or \`commonArea\`uses. - **`extension_type`** `string`, possible values: `"user", "commonArea"` — The type of the assignee. It's available only if the device is assigned. - **`id`** `string` — The ID of the user or commonArea to whom the device has been assigned. - **`name`** `string` — Name. - **`description`** `string` — The description of the device. - **`device_type`** `string` — This field provides the manufacturer name and the model name. - **`display_name`** `string` — Display name of the device. - **`firmware_version`** `string` — The firmware version of the device. - **`id`** `string` — The device ID. - **`mac_address`** `string` — The MAC address or serial number of the device. - **`policy`** `object` — The device policy. - **`call_control`** `object` - **`status`** `string`, possible values: `"unsupported", "on", "off"` — This field enables the call control feature to the current device. It configures the desk phone devices to enable call control, which allows users to perform desk phone's call control actions from the Zoom desktop client, including making and accepting calls. Options include: \* \`unsupported\` \* \`on\` \* \`off\` - **`hot_desking`** `object` - **`status`** `string`, possible values: `"unsupported", "on", "off"` — This field enables the hot desking feature to the current device. It lets the guest user sign in to the desk phone. You can't use the desk phone until the guest user signs out. Options include: \* \`unsupported\` \* \`on\` \* \`off\` - **`private_ip`** `string` — The private IP of the registered device. - **`provision_template_id`** `string` — The provision template ID. It's supported only by some devices. An empty string represents 'No value set' - **`public_ip`** `string` — The public IP of the registered device. - **`site`** `object` - **`id`** `string` — The \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672) of the phone user. - **`name`** `string` — The name of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672). - **`status`** `string`, possible values: `"online", "offline"` — The status of the device. The value is either \`online\` or \`offline\`. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer` — The number of records returned with a single API call. - **`total_records`** `integer` — The total number of records found for the query across all pages. **Example:** ```json { "devices": [ { "assignee": { "extension_number": 123, "id": "-tDdYIstSumpA0L13GztIQ", "name": "Pooja", "extension_type": "user" }, "assignees": [ { "extension_number": 123, "id": "-tDdYIstSumpA0L13GztIQ", "name": "Pooja", "extension_type": "user", "extension_id": "MjGXQfCxShapaxJDka7" } ], "device_type": "AudioCodes405", "display_name": "Pooja's Phone", "id": "-tDdYIstSumpA0L13GztIQ", "mac_address": "203a07240534", "site": { "id": "NjHmTu16Qfe8yOiNJuekXA", "name": "HQ site" }, "status": "online", "provision_template_id": "Ke5Ghevvoo001hr", "description": "This device is used for testing.", "firmware_version": "108.86.3.9", "private_ip": "192.168.10.13", "public_ip": "220.143.231.126", "policy": { "call_control": { "status": "off" }, "hot_desking": { "status": "off" } } } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30, "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a device - **Method:** `POST` - **Path:** `/phone/devices` - **Tags:** Phone Devices [Adds an unassigned desk phone or an assigned (to a user or a common area) desk phone.](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0061431#h_5ca07504-68a8-4c3d-ad0e-c1d3594436da) **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions - [Supported device](https://support.zoom.us/hc/en-us/articles/360001299063-Zoom-Voice-Supported-Devices) **[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:write:device:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`display_name` (required)** `string` — The display name of the desk phone. - **`mac_address` (required)** `string` — The MAC address of the desk phone. Note: If you're using a wireless phone, enter the wired MAC address, not the wireless MAC address. - **`type` (required)** `string` — The manufacturer (brand) name of the device. - **`assigned_to`** `string` — The user ID or email address of the user to whom this device will be assigned. - **`assignee_extension_ids`** `array` — An array of extension IDs for users or common areas. **Items:** `string` - **`model`** `string` — The model name of the device. - **`provision_template_id`** `string` — The provision template ID. Supported only by some devices. Empty string represents 'No value set'. - **`site_id`** `string` — The site ID required when adding an unassigned device with multi-site functionality enabled. **Example:** ```json { "assigned_to": "-tDdYIstSumpA0L13GztIQ", "assignee_extension_ids": [ "dsH7FaYRHy9gV4Qb8ecku" ], "display_name": "Desk Phone", "mac_address": "543968a78ee7", "model": "testModel", "type": "DeviceBrand", "provision_template_id": "Ke5Ghevvoo001hr", "site_id": "9gCxz-nKTzuLBWrMx3lNQw" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Device added successfully. ###### Content-Type: application/json - **`display_name`** `string` — The display name of the desk phone. - **`id`** `string` — The unique identifier of the desk phone. **Example:** ```json { "id": "Q3ECfhVES-uS4mew-161rg", "display_name": "Desk Phone" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Sync deskphones - **Method:** `POST` - **Path:** `/phone/devices/sync` - **Tags:** Phone Devices Use this API to resync all online zero-touch or assisted-provisioning devices in an account or a site. Only allows sending one request every 15 minutes. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:write:sync_device:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy` #### Request Body ##### Content-Type: application/json - **`level` (required)** `integer` — Deskphone sync level: 1 - account level, 2 - site level. - **`site_id`** `string` — Site ID. **Example:** ```json { "level": 2, "site_id": "NjHmTu16Qfe8yOiNJuekXA" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Device resync command issued. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\*\*Error Code:\*\* \`429\` \
Too many concurrent requests. A request has already been made. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get device details - **Method:** `GET` - **Path:** `/phone/devices/{deviceId}` - **Tags:** Phone Devices Returns detailed information about a specific [desk phone device](https://support.zoom.us/hc/en-us/articles/360021119092). **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:device:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Device information retrieved successfully. ###### Content-Type: application/json - **`assignee`** `object` — The user to whom the device has been assigned. - **`extension_number`** `integer`, format: `int64` — The extension number of the Zoom Phone the \`user\` or \`commonArea\` uses. - **`extension_type`** `string`, possible values: `"user", "commonArea"` — The type of the assignee. It's available only if the device is assigned. - **`id`** `string` — The ID of the user or common area to whom the device has been assigned. - **`name`** `string` — Name. - **`assignees`** `array` **Items:** - **`extension_id`** `string` — The extension ID of the \`user\` or \`common area\`. - **`extension_number`** `integer`, format: `int64` — The extension number of the Zoom Phone the \`user\` or \`commonArea\` uses. - **`extension_type`** `string`, possible values: `"user", "commonArea"` — The type of the assignee. It's available only if the device is assigned. - **`id`** `string` — The ID of the user or common area to whom the device has been assigned. - **`name`** `string` — The name. - **`device_type`** `string` — This field includes the manufacturer name and the model name. - **`display_name`** `string` — The display name of the device. - **`id`** `string` — The unique identifier of the device. - **`mac_address`** `string` — The MAC address or serial number of the device. - **`policy`** `object` — The device policy. - **`call_control`** `object` - **`status`** `string`, possible values: `"unsupported", "on", "off"` — This field enables the call control feature to the current device. It configures the desk phone devices to enable call control, which allows users to perform desk phone's call control actions from the Zoom desktop client, including making and accepting calls. Options include: \* \`unsupported\` \* \`on\` \* \`off\` - **`hot_desking`** `object` - **`status`** `string`, possible values: `"unsupported", "on", "off"` — This field enables the hot desking feature to the current device. It lets the guest user sign in to the desk phone. You can't use the desk phone until the guest user signs out. Options include: \* \`unsupported\` \* \`on\` \* \`off\` - **`private_ip`** `string` — The private IP of the registered device - **`provision`** `object` — The provisioning information of a device. - **`sip_accounts`** `array` — The SIP Account details registered during the device provisioning process. This object will only be returned if manual provisioning was used for the device. **Items:** - **`authorization_id`** `string` — The authorization ID of the SIP account provided in the provisioning process. - **`outbound_proxy`** `string` — The outbound proxy provided in the provisioning process. - **`password`** `string` — The password entered during the provisioning process. - **`secondary_outbound_proxy`** `string` — The secondary outbound proxy provided in the provisioning process. - **`shared_line`** `object` — This field returns additional provisioning information with generic device SIP credentials. - **`alias`** `string` — The alias. - **`line_subscription`** `object` — Line subscription. - **`display_name`** `string` — The display name. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`phone_number`** `string` — The phone number. - **`outbound_caller_id`** `string` — The outbound caller ID. - **`sip_domain`** `string` — The SIP domain provided in the provisioning process. - **`user_name`** `string` — The user name of the SIP account provided in the provisioning process. - **`type`** `string`, possible values: `"assisted", "ztp", "manual"` — The \[provisioning type]\(https\://support.zoom.us/hc/en-us/articles/360033223411). The value can be one of the following: \* \`ztp\` : Zero touch provisioning. \* \`assisted\`: Assisted provisioning. \* \`manual\`: Manual provisioning. - **`url`** `string` — The provisioning URL. This field will only be returned for devices that were provisioned via \`assisted\` provisioning type. - **`provision_template_id`** `string` — The provision template ID. Supported only by some devices. Empty string represents 'No value set' - **`public_ip`** `string` — The public IP of the registered device - **`site`** `object` - **`id`** `string` — The \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672) of the phone user. - **`name`** `string` — The name of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672). - **`status`** `string`, possible values: `"online", "offline"` — The status of the device. The value is either \`online\` or \`offline\`. **Example:** ```json { "assignee": { "extension_number": 123, "id": "i242djsgrg", "name": "Pooja", "extension_type": "user" }, "assignees": [ { "extension_number": 123, "id": "i242djsgrg", "name": "Pooja", "extension_type": "user", "extension_id": "bdkfdler" } ], "device_type": "Ribbon EdgeMarc302", "display_name": "Pooja's Phone", "id": "1234324", "mac_address": "203a07240534", "provision": { "sip_accounts": [ { "authorization_id": "123123", "outbound_proxy": "123123", "password": "1123", "secondary_outbound_proxy": "proxy.example.com:5555", "shared_line": { "alias": "additional information", "line_subscription": { "display_name": "Pooja", "extension_number": 123123, "phone_number": "12059535689" }, "outbound_caller_id": "+123123123" }, "sip_domain": "123.zoom.us", "user_name": "123123" } ], "type": "manual", "url": "wwww.example.com" }, "site": { "id": "123123", "name": "Main Site" }, "status": "offline", "provision_template_id": "Ke5Ghevvoo001hr", "private_ip": "192.168.10.13", "public_ip": "220.148.231.126", "policy": { "call_control": { "status": "off" }, "hot_desking": { "status": "off" } } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Device does not exist in the system. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a device - **Method:** `DELETE` - **Path:** `/phone/devices/{deviceId}` - **Tags:** Phone Devices Remove a [desk phone device or ATA (Analog Telephone Adapter)](https://support.zoom.us/hc/en-us/articles/360021119092) from the Zoom Phone System Management. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions - Device must not have been assigned to a user. **[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:delete:device:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Device deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a device - **Method:** `PATCH` - **Path:** `/phone/devices/{deviceId}` - **Tags:** Phone Devices Updates the information of a [desk phone device](https://support.zoom.us/hc/en-us/articles/360021119092). **Prerequisites:** - Pro or a higher account with Zoom Phone license\* Account owner or admin permissions **[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:device:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`assigned_to`** `string` — The user ID or email address of the user assigned to this device. To retrieve the user ID and the email of the user, use the \[List Users]\(https\://marketplace.zoom.us/docs/api-reference/zoom-api/methods#operation/users) API. - **`display_name`** `string` — The display name of the desk phone. - **`provision_template_id`** `string` — The provision template ID. It's supported only by some devices. An empty string represents 'No value set' **Example:** ```json { "assigned_to": "DnEopNmXQEGU2uvvzjgojw", "display_name": "testUser", "provision_template_id": "Ke5Ghevvoo001hr" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Device updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation failed. Device does not exist in the system. Invalid userId. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User not found: {userId} The user extension does not exist, extensionId: {extensionId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign an entity to a device - **Method:** `POST` - **Path:** `/phone/devices/{deviceId}/extensions` - **Tags:** Phone Devices By default, all Zoom Phone users can make and receive calls using the Zoom desktop and mobile applications. Additionally, if a desk phone is required, use this API to [add a desk phone and assign it to a user](https://support.zoom.us/hc/en-us/articles/360021119092#h_5ca07504-68a8-4c3d-ad0e-c1d3594436da). **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions - [Supported device](https://support.zoom.us/hc/en-us/articles/360001299063-Zoom-Voice-Supported-Devices) **[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:write:device_extension:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`assignee_extension_ids` (required)** `array` — Available only for the account that has enabled the common area feature. Extension ID of the \[\`user\`]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods/#operation/phoneUser) or \[\`common area\` ID]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods/#operation/listCommonAreas). **Items:** `string` **Example:** ```json { "assignee_extension_ids": [ "dsH7FaYRHy9gV4Qb8ecku" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Assignees assigned successfully. ###### Content-Type: application/json **Example:** ```json null ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User extension ID or common area extension ID not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign an entity from the device - **Method:** `DELETE` - **Path:** `/phone/devices/{deviceId}/extensions/{extensionId}` - **Tags:** Phone Devices Use this API to unassign a specific assignee from the device. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions. **[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:delete:device_extension:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Assignee unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update provision template of a device - **Method:** `PUT` - **Path:** `/phone/devices/{deviceId}/provision_templates` - **Tags:** Phone Devices Use this API to [assign a provision template to a device](https://support.zoom.us/hc/en-us/articles/360035817952#h_6b52ef26-d070-40ed-a3fa-520571944afc) or [remove a provision template from the device](https://support.zoom.us/hc/en-us/articles/360035817952#h_7b34cd1d-5ae6-4a23-bd04-454a6ad8cb3e) by leaving `templateId` empty. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions - [Supported device](https://support.zoom.us/hc/en-us/articles/360029698771#note) **[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:device_provision_template:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`provision_template_id`** `string` — The provision template ID. The provision template will be removed when this field is left empty. **Example:** ```json { "provision_template_id": "AbSORcqsSnqqrMD3jmZ8yw" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Provision template updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\*\*Error Code:\*\* \`404\` \
Provision template does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Reboot a desk phone - **Method:** `POST` - **Path:** `/phone/devices/{deviceId}/reboot` - **Tags:** Phone Devices Use this API to reboot an online zero-touch or assisted-provisioning device. You can only send one request every second. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions. **[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:write:reboot_device:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy` #### Responses ##### Status: 202 \*\*HTTP Status Code:\*\* \`202\` \*\*Accepted\*\* Device reboot command issued. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The given device type does not support this action\
\*The given device is offline\
Operation is too frequent. Please try again in a few minutes.\
\
\*\*Error Code:\*\* \`404\` \
Device does not exist: {accountId}.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List Smartphones - **Method:** `GET` - **Path:** `/phone/smartphones` - **Tags:** Phone Devices Returns a list of all the [smartphones](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0074058) configured with Zoom Phone on an account. **Prerequisites** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_devices:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` **Not supported in Gov cluster** #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Smartphone listed successfully. ###### Content-Type: application/json - **`smartphones` (required)** `array` — The array of the smartphones **Items:** - **`activation_status`** `string`, possible values: `"Activated"` — The activation status of the smartphone. The values of this field can be \`Activated\`. - **`activation_time`** `string` — The time of smartphone activation. If this field is null, the date not available, else this field can format: 'yyyy-MM-ddThh:dd:ssZ'. - **`assignee`** `object` — The assignee of the smartphone. - **`common_area_id`** `string` — The common area ID or common area extension ID. - **`extension_number`** `integer` — The extension number of the common area. - **`name`** `string` — The display name of the common area. - **`device_name`** `string` — The name of the smartphone. - **`device_type`** `string` — The device type of the smartphone. - **`public_ip`** `string` — The public IPv4 or IPv6 of the smartphone. - **`serial_number`** `string` — The serial number of the smartphone. - **`site`** `object` — The \[site]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0069716) of the smartphone. - **`name`** `string` — The name of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672). - **`site_id`** `string` — The ID of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672). - **`smartphone_id`** `string` — The ID of the smartphone. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer` — The number of records returned with a single API call. - **`total_records`** `integer` — The total number of records found for the query across all pages. **Example:** ```json { "smartphones": [ { "smartphone_id": "3WWAEiEjTj2IQuyDiKMd_A", "device_name": "EC50", "device_type": "Zebra TechnologiesEC50S", "serial_number": "202355225D0174", "public_ip": "38.99.100.2", "activation_status": "Activated", "activation_time": "2021-10-08T16:12:04Z", "assignee": { "common_area_id": "JOZmuJ30Spyrw-v9vUzIrA", "name": "test_ca", "extension_number": 123 }, "site": { "site_id": "NjHmTu16Qfe8yOiNJuekXA", "name": "HQ site" } } ], "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2", "page_size": 30, "total_records": 1 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`403\` \
You do not have permission, because the current site \`{site\_id}\` does not belong to the target sites. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add BYOC phone numbers ⚠️ Deprecated - **Method:** `POST` - **Path:** `/phone/byoc_numbers` - **Tags:** Phone Numbers Adds BYOC (Bring Your Own Carrier) phone numbers to Zoom Phone. **Prerequisites** - A Business or Enterprise plan - A Zoom Phone license **[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:write:byo_carrier_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`carrier` (required)** `string` — Name of the carrier. - **`phone_numbers` (required)** `array` — Phone number(s) to be added to Zoom. The value should be in e164 format. **Items:** `string` - **`sip_group_id`** `string` — Sip group id. - **`site_id`** `string` — Unique identifier of the site. This field is only required if you have enabled multiple sites in the account. See \[Managing multiple sites]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) or \[Adding a site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites#h\_05c88e35-1593-491f-b1a8-b7139a75dc15) for details. **Example:** ```json { "carrier": "Bandwidth", "phone_numbers": [ "+8618251885564" ], "sip_group_id": "GgyGPoRESCKAD8JpGXjJ8w", "site_id": "8f71O6rWT8KFUGQmJIFAdQ" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* ###### Content-Type: application/json - **`phone_numbers`** `array` **Items:** - **`id`** `string` — Unique identifier of the phone number. - **`number`** `string` — Phone number in e164 format. **Example:** ```json { "phone_numbers": [ { "id": "LzPlp8GwR6iytydAq2luIg", "number": "8618251885565" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List phone numbers ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/numbers` - **Tags:** Phone Numbers Returns a list all Zoom Phone numbers in a Zoom account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:list_numbers:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Phone numbers listed successfully. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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.) - **`page_size`** `integer` — The number of records returned within a single API call. - **`phone_numbers`** `array` **Items:** - **`assignee`** `object` - **`extension_number`** `integer`, format: `int64` — The extension number of the phone. - **`id`** `string` — The unique identifier of the user to whom the number has been assigned. - **`name`** `string` — The name of the user to whom the number has been assigned. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "emergencyNumberPool", "companyLocation", "meetingService", "sharedLineGroup"` — This field indicates to whom the phone number belongs. \`user\`: Number has been assigned to an existing phone user that allows them to receive calls through their extension number or direct phone number. \`callQueue\`: Phone number has been assigned to a \[call queue]\(https\://support.zoom.us/hc/en-us/articles/360021524831-Managing-Call-Queues). \`autoReceptionist\`: Phone number has been assigned to an \[auto receptionist]\(https\://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Integrated-Voice-Response-IVR-). \`commonArea\`: Phone number has been assigned to a \[common area]\(https\://support.zoom.us/hc/en-us/articles/4481136653709-May-2022-New-Common-Area-Experience). \`emergencyNumberPool\` \`companyLocation\` \`meetingService\` - **`capability`** `array` — The capability for the phone number, whether it can take incoming calls, make outgoing calls, or both. Values include \`incoming\`, \`outgoing\`, or both values. **Items:** `string` - **`carrier`** `object` — This field displays when the \`type\` request parameter is \`byoc\`. - **`code`** `integer` — The carrier code. - **`name`** `string` — The name of the carrier to which the phone number is assigned. - **`display_name`** `string` — The display name for the phone number. - **`emergency_address`** `object` — This field displays when the \`type\` request parameter is \`byoc\`. - **`address_line1`** `string` — The address Line 1 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that consists of the house number and street name. - **`address_line2`** `string` — Address Line 2 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that consists of building number, floor number, unit and so on. - **`city`** `string` — The city of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`country`** `string` — The two-lettered country code (Aplha-2 code in ISO-3166 format) standard of the site's \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`state_code`** `string` — The state code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`zip`** `string` — The zip code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`emergency_address_status`** `integer`, possible values: `1, 2` — This field displays when the \`type\` request parameter is \`byoc\`. The emergency address status: \`1\`-carrier update required, \`2\`-confirmed - **`emergency_address_update_time`** `string` — This field displays when the \`type\` request parameter is \`byoc\`. The time of emergency address information update (format: 'yyyy-MM-ddThh:dd:ssZ'). - **`id`** `string` — The unique identifier of the phone number. - **`location`** `string` — The location (city, state and country) where the phone number is assigned. - **`number`** `string` — The phone number in E164 format. - **`number_type`** `string`, possible values: `"toll", "tollfree"` — The type of number. Values can be one of the following: \`toll\`, \`tollfree\` - **`sip_group`** `object` — This field displays when the \`type\` request parameter is \`byoc\`. - **`display_name`** `string` — The name of the SIP group. - **`id`** `string` — The ID of the SIP group. See the \*\*Creating SIP groups\*\* section in \[Creating a shared directory of external contacts]\(https\://support.zoom.us/hc/en-us/articles/360037050092-Creating-a-shared-directory-of-external-contacts) for details. - **`site`** `object` - **`id`** `string` — The target \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) in which the phone number was assigned. Sites allow you to organize the phone users in your organization. For example, you sites could be created based on different office locations. - **`name`** `string` — The name of the site where the phone number is assigned. - **`source`** `string`, possible values: `"internal", "external"` — The source of the phone number. - **`status`** `string`, possible values: `"pending", "available"` — The status of the number. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "next_page_token": "bkOcmnm6mn6ioYAi10BcgRiEL38WzAo6jP2", "page_size": 30, "phone_numbers": [ { "assignee": { "extension_number": 1000001101, "id": "Y40mS72DRamFgGh0V1Ul_Q", "name": "User Name", "type": "user" }, "capability": [ "incoming" ], "carrier": { "code": 1, "name": "Bandwidth" }, "display_name": "abc", "emergency_address": { "address_line1": "55 ALMADEN BLVD", "address_line2": "test 7", "city": "SAN JOSE", "country": "US", "state_code": "CA", "zip": "95113" }, "emergency_address_status": 1, "emergency_address_update_time": "2022-02-18T07:20:19Z", "id": "aMy7P9DMS9iNRkpwXNfRbw", "location": "United States", "number": "+12008001005", "number_type": "toll", "sip_group": { "display_name": "RRRR", "id": "8MhK7ea4Q4ihIQ4TD_g0kw" }, "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "source": "external", "status": "available" } ], "total_records": 50 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete unassigned phone numbers ⚠️ Deprecated - **Method:** `DELETE` - **Path:** `/phone/numbers` - **Tags:** Phone Numbers Deletes unassigned [phone numbers](https://support.zoom.us/hc/en-us/articles/360020808292-Managing-Phone-Numbers#h_38ba8b01-26e3-4b1b-a9b5-0717c00a7ca6). Up to 20 phone numbers can be removed in a single request. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license - The user must have been previously assigned a Zoom Phone number **[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:delete:number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` The Phone numbers successfully removed. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a site's unassigned phone numbers - **Method:** `PATCH` - **Path:** `/phone/numbers/sites/{siteId}` - **Tags:** Phone Numbers Updates a site's unassigned [phone numbers](https://support.zoom.us/hc/en-us/articles/360020808292-Managing-Phone-Numbers#h_38ba8b01-26e3-4b1b-a9b5-0717c00a7ca6). Up to 20 phone numbers can be updated in a single request. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:site_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Request Body ##### Content-Type: application/json - **`phone_numbers`** `array` — The phone number ID or a phone number in E164 format. **Items:** `string` **Example:** ```json { "phone_numbers": [ "8_RkKw9OQ42oYsXqJJjs4A" ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Site successfully updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a phone number ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/numbers/{phoneNumberId}` - **Tags:** Phone Numbers Returns information about an account's Zoom Phone number. **Prerequisites:** - A Pro or higher account plan - A Zoom phone license **[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:numbers:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Phone number details retrieved successfully. ###### Content-Type: application/json - **`assignee`** `object` - **`audio_prompt_language`** `string` - **`display_number`** `string` — This field indicates the meeting service, defines the format, and displays the number in meeting invitations and emails. - **`extension_number`** `integer`, format: `int64` — The extension number of the phone. - **`greeting`** `object` — This field indicates the meeting service. You can only upload one audio file. The accepted format is .wav (also 8k, mono, ULAW or ALAW). If no audio file uploads, Zoom uses the \"Telephone welcome message\" setting in account settings. - **`id`** `string` — The audio prompt file ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in the \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The audio prompt file name. - **`id`** `string` — The ID of the user. The following are assigned: emergency number pool (if the account has multiple sites enabled, the ID is \`siteId\`, else \`accountId\`), and company location. - **`label`** `string` — Optional. This field indicates the meeting service. This label will be appended to the number in parentheses, and will appear in meeting invitations and the zoom client. Formatting rules: Maximum 32 characters Do not use digits Do not use characters \"(\" \")\" \",\" \";\" or \":\" - **`meeting_id`** `string` — The meeting ID for the meeting service. - **`name`** `string` — The name of the user to whom the number, emergency number pool, and company location are assigned. - **`on_hold_music`** `object` — This field indicates the meeting service. You can only upload one audio file. The accepted format is .wav (also 8k, mono, ULAW or ALAW). If no audio file uploads, Zoom uses the \"Telephone on-hold music\" setting in account settings. - **`id`** `string` — The audio prompt file ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can use this audio ID to get the audio information in the \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The audio prompt file name. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "emergencyNumberPool", "companyLocation", "meetingService"` — This field indicates to whom the phone number belongs. \`user\`: Number has been assigned to an existing phone user and allows them to receive calls through their extension number or direct phone number. \`callQueue\`: Phone number has been assigned to a \[call queue]\(https\://support.zoom.us/hc/en-us/articles/360021524831-Managing-Call-Queues). \`autoReceptionist\`: Phone number has been assigned to an \[auto receptionist]\(https\://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Integrated-Voice-Response-IVR-). \`commonArea\`: Phone number has been assigned to a common area(https\://support.zoom.us/hc/en-us/articles/4481136653709-May-2022-New-Common-Area-Experience). \`emergencyNumberPool\` \`companyLocation\` \`meetingService\` - **`capability`** `array` — The capability of the phone number to receive incoming calls, make outgoing calls, or both. Values are \`incoming\`, \`outgoing\`, or both values. **Items:** `string` - **`carrier`** `object` - **`code`** `integer` — The carrier code. - **`name`** `string` — The carrier name. - **`display_name`** `string` — The display name of the phone number. - **`emergency_address`** `object` — This field displays when the number is a \`byoc\` number. - **`address_line1`** `string` — The address Line 1 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that consists of the house number and street name. - **`address_line2`** `string` — The address Line 2 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that consists of the building number, floor number, unit, and so on. - **`city`** `string` — The city of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`country`** `string` — The two-lettered country code (Alpha-2 code in ISO-3166 format) standard of the site's \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`state_code`** `string` — The state code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`zip`** `string` — The zip Code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`emergency_address_status`** `integer`, possible values: `1, 2` — This field displays when the number is a \`byoc\` number. The emergency address status: 1-carrier update required, 2-confirmed - **`emergency_address_update_time`** `string` — Thia fieild displays when the number is a \`byoc\` number. The emergency address information update time(format: 'yyyy-MM-ddThh:dd:ssZ'). - **`id`** `string` — The unique identifier of the phone number. - **`location`** `string` — The assigned location (city, state and country) of the phone number. - **`number`** `string` — The phone number in E164 format. - **`number_type`** `string`, possible values: `"toll", "tollfree"` — The type of number. The values can be one of the following: \`toll\`, \`tollfree\` - **`sip_group`** `object` - **`display_name`** `string` — The SIP group display name. - **`id`** `string` — The SIP group ID. - **`site`** `object` - **`id`** `string` — The target \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) assigned to the phone number. Sites allow you to organize phone users in your organization. For example, your sites could be created based on different office locations. - **`name`** `string` — The name of the site where the phone number is assigned. - **`source`** `string`, possible values: `"internal", "external"` — The source of phone number. - **`status`** `string`, possible values: `"pending", "available"` — The status of the number. **Example:** ```json { "assignee": { "audio_prompt_language": "en-GB", "display_number": "display_name_123", "extension_number": 1000001101, "greeting": { "id": "4CRwFZtVTa67JcfO37iQqA", "name": "TestName" }, "id": "rYgfsrduSXWCxr94poMN5g", "label": "abcd", "meeting_id": "abcd", "name": "Test name", "on_hold_music": { "id": "4CRwFZtVTa67JcfO37iQqA", "name": "Audio1" }, "type": "user" }, "capability": [ "incoming" ], "carrier": { "code": 2, "name": "Inteliquent" }, "display_name": "Display name", "emergency_address": { "address_line1": "55 ALMADEN BLVD", "address_line2": "test 7", "city": "SAN JOSE", "country": "US", "state_code": "CA", "zip": "95113" }, "emergency_address_status": 1, "emergency_address_update_time": "2022-02-18T07:20:19Z", "id": "iHE1MQAET2iV85MbfaQmwg", "location": "Mz83e03MT1efcUvxdKlq3w", "number": "+18886510412", "number_type": "toll", "sip_group": { "display_name": "RRRR", "id": "8MhK7ea4Q4ihIQ4TD_g0kw" }, "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "source": "external", "status": "available" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Phone number does not exist, phonenumberId:{phoneNumberId} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a phone number ⚠️ Deprecated - **Method:** `PATCH` - **Path:** `/phone/numbers/{phoneNumberId}` - **Tags:** Phone Numbers Updates a Zoom Phone number's information. **Prerequisites:** - A Paid account **[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:number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`capability`** `array` — THe phone number's capability. Values: \`outgoing\` or \`incoming\`. Add one or both. **Items:** `string` - **`display_name`** `string` — The phone number display name. - **`emergency_address_status`** `integer` — This field confirms BYOC phone number's emergency address status. 2-confirmed - **`sip_group_id`** `string` — The SIP group ID, only used for BYOC phone number update. **Example:** ```json { "capability": [ "incoming" ], "display_name": "Display Name", "emergency_address_status": 1, "sip_group_id": "8MhK7ea4Q4ihIQ4TD_g0kw" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
The value of capability is invalid. Provide a valid capability and try again. You cannot update it to a non-BYOC trunk group, because some BYOC numbers are using the SIP Group. The phone number is not in binding. The phone number is not BYOC phone number. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign a phone number to a user - **Method:** `POST` - **Path:** `/phone/users/{userId}/phone_numbers` - **Tags:** Phone Numbers Assigns a [phone number](https://support.zoom.us/hc/en-us/articles/360020808292-Managing-Phone-Numbers) to a user who has already enabled Zoom Phone.**Prerequisites:** \* A Business or Enterprise account \* A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:user_number`,`phone:write:user_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`phone_numbers`** `array` **Items:** - **`id`** `string` — ID for phone number - **`number`** `string` — Phone number in E164 format. **Example:** ```json { "phone_numbers": [ { "id": "iHE1MQAET2iV85MbfaQmwg", "number": "+18887193005" } ] } ``` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Phone number assigned successfully. ###### Content-Type: application/json - **`phone_numbers`** `array` — Assigned phone number **Items:** - **`id`** `string` — ID of the phone number - **`number`** `string` — The phone number that is assigned to the user. **Example:** ```json { "phone_numbers": [ { "id": "iHE1MQAET2iV85MbfaQmwg", "number": "+18887193005" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
This user does not exist: {userId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign a phone number - **Method:** `DELETE` - **Path:** `/phone/users/{userId}/phone_numbers/{phoneNumberId}` - **Tags:** Phone Numbers Unassigns Zoom Phone user's [phone number](https://support.zoom.us/hc/en-us/articles/360020808292-Managing-Phone-Numbers#h_38ba8b01-26e3-4b1b-a9b5-0717c00a7ca6). After assigning a phone number, you can remove it if you do not want it to be assigned to anyone. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license - The user must have been previously assigned a Zoom Phone number **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:user_number`,`phone:delete:user_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` The phone number has been unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`400\` \
Invalid query parameter "phone\_number". \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List calling plans - **Method:** `GET` - **Path:** `/phone/calling_plans` - **Tags:** Phone Plans Returns all of an account's Zoom Phone [calling plans](https://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans). **Prerequisites** - A Pro or a higher account - A Zoom Phone license **[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:list_calling_plans:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Calling plans listed successfully. ###### Content-Type: application/json - **`calling_plans`** `array` **Items:** - **`assigned`** `integer` — The total number of plan used. - **`available`** `integer` — The remaining number of calling plans that can be assigned. - **`billing_account_id`** `string` — The billing account ID. It displays when the account is an Indian account. - **`billing_account_name`** `string` — The billing account name. It displays when the account is an Indian account. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions. - **`billing_subscription_name`** `string` — The billing subscription name. It displays when the account supports billing multiple subscriptions. It can be edited through the Billing page. - **`name`** `string` — The name of the plan. - **`subscribed`** `integer` — The total number of plan subscriptions bought. - **`type`** `integer` — The type of plan. Refer to the Plan Number section \[here]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans). **Example:** ```json { "calling_plans": [ { "assigned": 28, "available": 72, "name": "US/CA Metered Calling Plan", "subscribed": 100, "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_account_name": "Delhi billing", "billing_subscription_id": "FT-SUBREF-21168178", "billing_subscription_name": "My Subscription" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List plan information ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/plans` - **Tags:** Phone Plans Returns all of an account's Zoom Phone [plan package](https://marketplace.zoom.us/docs/api-reference/other-references/plans#additional-zoom-phone-plans-and-codes), phone number usage, and availability. **Prerequisites** - A Pro or a higher account - A Zoom Phone license **[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:list_calling_plans:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Phone plans listed successfully. ###### Content-Type: application/json - **`calling_plans`** `array` — The information about unprocessed phone numbers. **Items:** - **`assigned`** `integer` — Total number of plans used. - **`available`** `integer` — Remaining number of calling plans that can be assigned. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions. - **`billing_subscription_name`** `string` — The billing subscription name. It displays when the account supports billing multiple subscriptions. It can be edited through the Billing page. - **`name`** `string` — Name of the plan. - **`subscribed`** `integer` — Total number of plan subscriptions bought. - **`type`** `integer` — Plan type. Refer to the phone plan code in the \[Zoom Phone calling plans]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans). - **`phone_numbers`** `array` **Items:** - **`assigned`** `integer` — Total number of phone number plans used. - **`available`** `integer` — Remaining number of phone number plans that can be assigned. - **`name`** `string` — Name of the phone number plan. - **`subscribed`** `integer` — Total number of phone number plan subscriptions bought. **Example:** ```json { "calling_plans": [ { "assigned": 28, "available": 72, "name": "US/CA Metered Calling Plan", "subscribed": 100, "type": 100, "billing_subscription_id": "FT-SUBREF-21168178", "billing_subscription_name": "My Subscription" } ], "phone_numbers": [ { "assigned": 28, "available": 72, "name": "US/CA Included Phone Numbers", "subscribed": 100 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`403\` \
You do not have permission. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List phone roles - **Method:** `GET` - **Path:** `/phone/roles` - **Tags:** Phone Roles Returns the phone roles. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:list_roles:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully listed phone roles. ###### Content-Type: application/json - **`roles`** `array` — The phone role list. **Items:** - **`description`** `string` — The role description. - **`id`** `string` — The unique identifier of the \[role]\(https\://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management) assigned to the user. - **`is_default`** `boolean` — Whether the role is default or not. - **`name`** `string` — The user's \[role]\(https\://support.zoom.us/hc/en-us/articles/115001078646-Role-Based-Access-Control) name. - **`total_members`** `integer` — The total members assigned to the role. **Example:** ```json { "roles": [ { "id": "MRNStlOVS02fJ6pOAzrh0A", "name": "Phone Super Admin", "description": "Admin has full privileges to access and manage the Zoom Phone (default).", "total_members": 1, "is_default": true } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`401\` \
Invalid access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Duplicate a phone role - **Method:** `POST` - **Path:** `/phone/roles` - **Tags:** Phone Roles Use this API to duplicate a phone role. **Prerequisites:** - Business or Education account - Zoom Phone license **[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:write:role:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`role_id` (required)** `string` — Unique identifier of the source \[role]\(https\://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management) assigned to the user. - **`description`** `string` — Role description. - **`name`** `string` — User's \[role]\(https\://support.zoom.us/hc/en-us/articles/115001078646-Role-Based-Access-Control) name. **Example:** ```json { "role_id": "MRNStlOVS02fJ6pOAzrh0B", "name": "Phone Super Admin", "description": "Admin has full privileges to access and manage the Zoom Phone (default)." } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Successfully duplicated a phone role. ###### Content-Type: application/json - **`id`** `string` — Unique identifier of the newly duplicated \[role]\(https\://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management) assigned to the user. - **`name`** `string` — User's \[role]\(https\://support.zoom.us/hc/en-us/articles/115001078646-Role-Based-Access-Control) name. **Example:** ```json { "id": "MRNStlOVS02fJ6pOAzrh0A", "name": "Compliance Admin (Copy)" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get role information - **Method:** `GET` - **Path:** `/phone/roles/{roleId}` - **Tags:** Phone Roles Use this API to get information on a phone [role](https://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management). **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:role:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*Status Code:\*\* \`200\` Information about a specific role returned. ###### Content-Type: application/json - **`description`** `string` — Description of the role. - **`id`** `string` — The role ID. - **`is_default`** `boolean` — Indicates whether it is a default role. - **`name`** `string` — Name of the role. - **`total_members`** `integer` — Total members assigned to that role. **Example:** ```json { "description": "Admin has full privileges to access and manage the Zoom Phone (default).", "id": "MRNStlOVS02fJ6pOAzrh0A", "name": "Phone Super Admin", "total_members": 1, "is_default": true } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a phone role - **Method:** `DELETE` - **Path:** `/phone/roles/{roleId}` - **Tags:** Phone Roles Use this API to delete a phone [role](https://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management). **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:delete:role:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully deleted a phone role. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a phone role - **Method:** `PATCH` - **Path:** `/phone/roles/{roleId}` - **Tags:** Phone Roles Use this API to update a role. **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:role:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`description`** `string` — Role description. Description length can be up to 255 characters - **`name`** `string` — User's \[role]\(https\://support.zoom.us/hc/en-us/articles/115001078646-Role-Based-Access-Control) name. Name length can be up to 128 characters **Example:** ```json { "name": "Phone Super Admin", "description": "Admin has full privileges to access and manage the Zoom Phone (default)." } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully updated a role. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List members in a role - **Method:** `GET` - **Path:** `/phone/roles/{roleId}/members` - **Tags:** Phone Roles Use this API to get members (not) in a [role](https://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:role_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully listed members (not) in the role. ###### Content-Type: application/json - **`members`** `array` — Member list. **Items:** - **`display_name`** `string` — Display name. - **`email`** `string` — Email. - **`extension_number`** `integer`, format: `int64` — Extension number. - **`site`** `object` — Site. - **`id`** `string` — Unique identifier of the site. - **`name`** `string` — Site name. - **`user_id`** `string` — The user ID. **Example:** ```json { "members": [ { "user_id": "1PXbl7s6Q52nbePrUxUZTg", "display_name": "ZOOM_API Test", "email": "2020042400000003@qq.com", "extension_number": 1000123460, "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" } } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add members to roles - **Method:** `POST` - **Path:** `/phone/roles/{roleId}/members` - **Tags:** Phone Roles Use this API to add members to [roles](https://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management#h_01EFHY1R4QWAYTA6Z661NM9Q27). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:write:role_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`copy_all_members`** `boolean`, default: `false` — Whether to copy all members with the role: used when copying members' role. - **`copy_targets`** `boolean`, default: `false` — Whether to copy the target: used when copying members' role. - **`role_id`** `string` — Unique identifier of the existing \[role]\(https\://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management) assigned to the user: used when copying members' role. - **`user_ids`** `array` — The user IDs or email addresses of the user **Items:** `string` **Example:** ```json { "role_id": "Ft0H7NYlSX6EeO-rwaZW-Q", "copy_targets": true, "copy_all_members": true, "user_ids": [ "1PXbl7s6Q52nbePrUxUZTg" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*No Content\*\* Successfully added members to a role. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\*\*Error Code:\*\* \`400\` \
There are invalid emails:{0} There are invalid user ids:{0} ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete members in a role - **Method:** `DELETE` - **Path:** `/phone/roles/{roleId}/members` - **Tags:** Phone Roles Use this API to delete member(s) in a [role](https://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:delete:role_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully deleted members in a role. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
There are invalid emails:{0} There are invalid user ids:{0} \*\*Error Code:\*\* \`300\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List phone role targets - **Method:** `GET` - **Path:** `/phone/roles/{roleId}/targets` - **Tags:** Phone Roles Targets of a phone [role](https://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:list_roles:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully listed the role targets. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The number of records returned from a single API call. - **`targets`** `array` — The list of role member targets. **Items:** - **`extension_number`** `integer` — The extension number of the target. - **`site_id`** `string` — The unique identifier of the site. - **`site_name`** `string` — The site name. - **`target_id`** `string` — The target ID. - **`target_name`** `string` — The target name. - **`target_type`** `string`, possible values: `"site", "callQueue", "autoReceptionist", "user", "group", "sharedLineGroup", "commonArea"` — The target type. Different types of roles manage different types of targets: \* super\_admin: need not manage targets. \* site\_admin: support site type. \* callQueue\_admin: support callQueue type. \* autoReceptionist\_admin: support autoReceptionist type. \* sharedLineGroup\_admin: support sharedLineGroup type. \* commonArea\_admin: support site type. \* recording\_admin: support site, callQueue, autoReceptionist, user, group types. \* compliance\_admin: support site, callQueue, user, group, sharedLineGroup, commonArea types. - **`total_records`** `integer` — The total records found for this query. **Example:** ```json { "next_page_token": "nav48KOj42vYPSG4f0cCdT575bZ980did22", "page_size": 30, "total_records": 45, "targets": [ { "target_id": "zSBIkYJzS6KkQqu5nFxvgg", "target_type": "user", "target_name": "Test name", "extension_number": 1234503, "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "site_name": "Main Site" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed { "field": "target\_type", "message": "Invalid field." } \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Phone role does not exist for role Id: {roleId}. \
\*\*Error Code:\*\* \`1001\` \
User does not exist for user id: {user\_id}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add phone role targets - **Method:** `POST` - **Path:** `/phone/roles/{roleId}/targets` - **Tags:** Phone Roles Adds targets to phone [roles](https://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:write:role:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`targets` (required)** `array` — The targets you want to add. **Items:** - **`target_ids` (required)** `array` — The list of target IDs. **Items:** `string` — The target ID. - **`target_type`** `string`, possible values: `"site", "callQueue", "autoReceptionist", "user", "group", "sharedLineGroup", "commonArea"` — The target type. Different types of roles manage different types of targets: \* super\_admin: need not manage targets. \* site\_admin: support site type. \* callQueue\_admin: support callQueue type. \* autoReceptionist\_admin: support autoReceptionist type. \* sharedLineGroup\_admin: support sharedLineGroup type. \* commonArea\_admin: support site type. \* recording\_admin: support site, callQueue, autoReceptionist, user, group types. \* compliance\_admin: support site, callQueue, user, group, sharedLineGroup, commonArea types. - **`is_default`** `boolean`, default: `false` — If \`is\_default\`=\`true\`, then it manages the role default targets. If \`is\_default\`=\`false\`, then it manages the role member targets. - **`user_id`** `string` — The role member ID. It's required if \`is\_default\`=\`false\`. **Example:** ```json { "is_default": false, "user_id": "1PXbl7s6Q52nbePrUxUZTg", "targets": [ { "target_type": "user", "target_ids": [ "GP2lPCb_Tm2j9uJwmgsMBQ" ] } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*OK\*\* Successfully added the role targets. ###### Content-Type: application/json - **`is_default`** `boolean`, default: `false` — \`is\_default\`=\`true\`, manage the role default targets; \`is\_default\`=\`false\`, manage the role member targets. - **`targets`** `array` — The targets you want to add. **Items:** - **`target_ids`** `array` — If the target type is site, then the target ID refers to the site ID; otherwise, it refers to the extension ID. **Items:** `string` — The target id. - **`target_type`** `string`, possible values: `"site", "callQueue", "autoReceptionist", "user", "group", "sharedLineGroup", "commonArea"` — The target type. Different types of roles manage different types of targets. \* super\_admin: need not manage targets. \* site\_admin: support site type. \* callQueue\_admin: support callQueue type. \* autoReceptionist\_admin: support autoReceptionist type. \* sharedLineGroup\_admin: support sharedLineGroup type. \* commonArea\_admin: support site type. \* recording\_admin: support site, callQueue, autoReceptionist, user, group types. \* compliance\_admin: support site, callQueue, user, group, sharedLineGroup, commonArea types. - **`user_id`** `string` — The member ID. Required if \`is\_default\`=\`false\`. **Example:** ```json { "is_default": false, "user_id": "1PXbl7s6Q52nbePrUxUZTg", "targets": [ { "target_type": "user", "target_ids": [ "GP2lPCb_Tm2j9uJwmgsMBQ" ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed \
\*\*Error Code:\*\* \`400\` \
There are invalid target ids: {target\_ids}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Phone role does not exist for role id: {roleId}. \
\*\*Error Code:\*\* \`1001\` \
User does not exist for user id: {user\_id}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete phone role targets - **Method:** `DELETE` - **Path:** `/phone/roles/{roleId}/targets` - **Tags:** Phone Roles Deletes the targets of a phone [role](https://support.zoom.us/hc/en-us/articles/360042099012-Using-Zoom-Phone-role-management). **Prerequisites:** - Business or Education account - Zoom Phone license **[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:delete:role:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Request Body ##### Content-Type: application/json - **`targets` (required)** `array` — The targets you want to delete. **Items:** - **`target_ids` (required)** `array` — The list of target ID. **Items:** `string` — The target ID. - **`target_type`** `string`, possible values: `"site", "callQueue", "autoReceptionist", "user", "group", "sharedLineGroup", "commonArea"` — The target type. Different types of roles manage different types of targets: \* super\_admin: need not manage targets. \* site\_admin: support site type. \* callQueue\_admin: support callQueue type. \* autoReceptionist\_admin: support autoReceptionist type. \* sharedLineGroup\_admin: support sharedLineGroup type. \* commonArea\_admin: support site type. \* recording\_admin: support site, callQueue, autoReceptionist, user, group types. \* compliance\_admin: support site, callQueue, user, group, sharedLineGroup, commonArea types. - **`is_default`** `boolean`, default: `false` — If\`is\_default\`=\`true\`, then it manages the role default targets. If \`is\_default\`=\`false\`, then it manages the role member targets. - **`user_id`** `string` — The role member ID. It's required if \`is\_default\`=\`false\`. **Example:** ```json { "is_default": false, "user_id": "1PXbl7s6Q52nbePrUxUZTg", "targets": [ { "target_type": "user", "target_ids": [ "GP2lPCb_Tm2j9uJwmgsMBQ" ] } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`201\` \*\*OK\*\* Successfully deleted the role targets. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Phone role does not exist for role Id: {roleId}. \
\*\*Error Code:\*\* \`1001\` \
User does not exist for user id: {user\_id}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List private directory members - **Method:** `GET` - **Path:** `/phone/private_directory/members` - **Tags:** Private Directory Returns the member list of a [private directory](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0063992). **[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:list_private_directory_members:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Private direcotry member list returned. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through large set of results. - **`page_size`** `integer` — The number of records returned within a single API call. - **`private_directory_members`** `array` **Items:** - **`extension_display_name` (required)** `string` — The member's display name. - **`extension_id` (required)** `string` — The member's extension ID. - **`extension_number` (required)** `integer` — The member's extension number. - **`extension_type` (required)** `string`, possible values: `"user", "zoom_room", "common_area", "auto_receptionist", "call_queue", "shared_line_group"` — The member extension's type. The valid value is: \* user \* zoom\_room \* common\_area \* auto\_receptionist \* call\_queue \* shared\_line\_group - **`searchable_on_web_portal` (required)** `string`, possible values: `"everybody", "admins_only", "nobody"` — The value indicates who is allowed to access to this member, valid value is: \* everybody \* admins\_only \* nobody - **`extension_email`** `string` — The member's email address, this field should be returned when "extension\_type" is user. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the push to talk channel. You will only be able to add members that belong to this site to the push to talk channel. This field is required only if the \[multiple sites]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) option has been enabled for the account. - **`site_name`** `string` — The name of the site to which the private directory belongs. This field is required only if the \[multiple sites]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) option has been enabled for the account. - **`total_records`** `integer` — The total number of records available across all pages. **Example:** ```json { "next_page_token": "ICF5K4lVmGG4kyIyGxSfBU2LH4QQG95cn32", "page_size": 30, "total_records": 1, "private_directory_members": [ { "extension_id": "JpjPXizWTz-l35tFRUK3Gg", "extension_type": "user", "extension_number": 800, "extension_display_name": "sample extension", "extension_email": "sample@zooom.us", "searchable_on_web_portal": "everybody", "site_id": "vkBoHKaRTxeBiTLRsdEwTQ", "site_name": "sample site" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`8001\` \
Site does not exist: {siteId} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add members to a private directory - **Method:** `POST` - **Path:** `/phone/private_directory/members` - **Tags:** Private Directory Adds members to a [private directory](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0063992). **[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:write:private_directory_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`members` (required)** `array` **Items:** - **`extension_id` (required)** `string` — The member's extension ID. - **`searchable_on_web_portal` (required)** `string`, possible values: `"everybody", "admins_only", "nobody"` — The value indicates who can have access to this member. The valid value is: \* everybody \* admins\_only \* nobody - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the private directory. You will only be able to add members that belong to this site to the private directory. This field is required only if the \[multiple sites]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) option has been enabled for the account. **Example:** ```json { "site_id": "vkBoHKaRTxeBiTLRsdEwTQ", "members": [ { "extension_id": "JpjPXizWTz-l35tFRUK3Gg", "searchable_on_web_portal": "everybody" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Members added successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`8001\` \
Site does not exist: {siteId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove a member from a private directory - **Method:** `DELETE` - **Path:** `/phone/private_directory/members/{extensionId}` - **Tags:** Private Directory Removes a member from a [private directory](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0063992). **[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:delete:private_directory_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* A member was removed successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`8001\` \
Site does not exist: {siteId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Extension does not exist: {extensionId} \
\*\*Error Code:\*\* \`404\` \
Extension does not exist in the private directory: {extensionId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a private directory member - **Method:** `PATCH` - **Path:** `/phone/private_directory/members/{extensionId}` - **Tags:** Private Directory Updates a member of a [private directory](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0063992). **[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:private_directory_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`searchable_on_web_portal` (required)** `string`, possible values: `"everybody", "admins_only", "nobody"` — The value indicates who can access this member. The valid value is: \* everybody \* admins\_only \* nobody - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the private directory. This field is required only if the multiple sites option has been enabled for the account. **Example:** ```json { "site_id": "vkBoHKaRTxeBiTLRsdEwTQ", "searchable_on_web_portal": "everybody" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Members updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`8001\` \
Site does not exist: {siteId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Extension does not exist: {extensionId} \
\*\*Error Code:\*\* \`404\` \
Extension does not exist in the private directory: {extensionId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List carrier peering phone numbers. ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/carrier_peering/numbers` - **Tags:** Provider Exchange Returns phone numbers that the carrier pushed to different customers. To become a peering provider/ carrier, submit your [request](https://docs.google.com/forms/d/e/1FAIpQLSewkY6ixVyKVNkWC-vgmejC16gigxsJWXji3dWzE3XlWtjsgg/viewform). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_peering:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_peering_numbers:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Carrier peering numbers successfully returned. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`numbers`** `array` — The information about the phone numbers pushed by the carrier to different customers. **Items:** - **`assigned` (required)** `integer` — Whether the phone number is assigned: \* \`0\` \— Unassigned. \* \`1\` \— Assigned. - **`phone_number` (required)** `string` — The phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164). - **`sip_trunk_name` (required)** `string` — The phone number's \[SIP trunk]\(https\://en.wikipedia.org/wiki/SIP\_trunking). - **`status` (required)** `integer` — The phone number's status: \* \`0\` \— Inactive. \* \`1\` \— Active. - **`billing_reference_id`** `string` — The carrier's billing reference ID. - **`customer_account_name`** `string` — The customer's account name. - **`customer_account_number`** `string` — The customer's account number. - **`service_info`** `string` — The carrier's service information. - **`total_records`** `integer` — The total number of records returned for this API call. **Example:** ```json { "next_page_token": "8X8xSdRVKHsabD6Im4tIPODq6GzDOvV5fO1", "numbers": [ { "customer_account_name": "Some customer's account name", "customer_account_number": "Some customer's account number", "assigned": 1, "billing_reference_id": "Some billing referenceId", "phone_number": "+18108001001", "service_info": "Some service info", "sip_trunk_name": "test-carrier-sip-trunk", "status": 0 } ], "total_records": 20 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List peering phone numbers ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/peering/numbers` - **Tags:** Provider Exchange Returns phone numbers to Zoom through the Provider Exchange. **Note**: Phone peering API and events are for partners who have completed the MoU to peer with Zoom. To become a peering provider/ carrier, submit your [request](https://docs.google.com/forms/d/e/1FAIpQLSewkY6ixVyKVNkWC-vgmejC16gigxsJWXji3dWzE3XlWtjsgg/viewform). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_peering:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_peering_numbers:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Carrier peering numbers successfully returned. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`numbers`** `array` — The information about the carrier's phone numbers. **Items:** - **`assigned` (required)** `integer` — Whether the phone number is assigned: \* \`0\` \— Unassigned. \* \`1\` \— Assigned. - **`phone_number` (required)** `string` — The phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164). - **`sip_trunk_name` (required)** `string` — The phone number's \[SIP trunk]\(https\://en.wikipedia.org/wiki/SIP\_trunking). - **`status` (required)** `integer` — The phone number's status: \* \`0\` \— Inactive. \* \`1\` \— Active. - **`billing_reference_id`** `string` — The carrier's billing reference ID. - **`service_info`** `string` — The carrier's service information. - **`total_records`** `integer` — The total number of records returned for this API call. **Example:** ```json { "next_page_token": "8X8xSdRVKHsabD6Im4tIPODq6GzDOvV5fO1", "numbers": [ { "assigned": 1, "billing_reference_id": "Some billing referenceId", "phone_number": "+18108001001", "service_info": "Some service info", "sip_trunk_name": "test-carrier-sip-trunk", "status": 0 } ], "total_records": 20 } ``` ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add peering phone numbers ⚠️ Deprecated - **Method:** `POST` - **Path:** `/phone/peering/numbers` - **Tags:** Provider Exchange Adds phone numbers to Zoom through the Provider Exchange. **Note**: Phone peering API and events are for partners who have completed the MoU to peer with Zoom. To become a peering provider/ carrier, submit your [request](https://docs.google.com/forms/d/e/1FAIpQLSewkY6ixVyKVNkWC-vgmejC16gigxsJWXji3dWzE3XlWtjsgg/viewform). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone_peering:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:peering_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`carrier_code`** `integer` — The carrier's code. The \`clientId\` maps to a carrier peered with Zoom. This parameter is required if you do \*\*not\*\* use an OAuth token or the OAuth token does not contain the \`clientId\`. - **`phone_numbers`** `array` — The information about the added phone numbers. Maximum of 200. **Items:** - **`phone_number` (required)** `string` — The phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164). - **`sip_trunk_name` (required)** `string` — The phone number's \[SIP trunk]\(https\://en.wikipedia.org/wiki/SIP\_trunking). - **`status` (required)** `integer` — The phone number's status: \* \`0\` \— Inactive. \* \`1\` \— Active. - **`billing_reference_id`** `string` — The carrier's billing reference ID. Maximum of 32 characters - **`service_info`** `string` — The carrier's service information. Maximum of 255 characters **Example:** ```json { "carrier_code": 3456, "phone_numbers": [ { "billing_reference_id": "Some billing referenceId", "phone_number": "+18008001011", "service_info": "Some service info", "sip_trunk_name": "first-markert-carrier-trunk", "status": 1 } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Peering phone numbers successfully added. Check the API response for any failures. ###### Content-Type: application/json - **`unprocessed_numbers`** `array` — The information about unprocessed phone numbers. **Items:** - **`failure_reason`** `string` — The processing failure reason. - **`phone_number`** `string` — The phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164). **Example:** ```json { "unprocessed_numbers": [ { "failure_reason": "Invalid status", "phone_number": "+15556660100" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`124\` \
Account does not exist: "{accountId}". \
\*\*Error Code:\*\* \`300\` \
Validation Failed. Batch adding phone numbers is limited to 200 per request. \
\*\*Error Code:\*\* \`404\` \
Unknown carrier. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove peering phone numbers ⚠️ Deprecated - **Method:** `DELETE` - **Path:** `/phone/peering/numbers` - **Tags:** Provider Exchange Removes phone numbers added to Zoom through the provider exchange. **Note**: Phone peering API and events are for partners who have completed the MoU to peer with Zoom. To become a peering provider or carrier, submit your [request](https://docs.google.com/forms/d/e/1FAIpQLSewkY6ixVyKVNkWC-vgmejC16gigxsJWXji3dWzE3XlWtjsgg/viewform). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone_peering:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:peering_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*Created\*\* Phone number successfully deleted. Check the API response for any failures. ###### Content-Type: application/json - **`unprocessed_numbers`** `array` — The information about unprocessed phone numbers. **Items:** - **`failure_reason`** `string` — The reason for processing failures. - **`phone_number`** `string` — The phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164). **Example:** ```json { "unprocessed_numbers": [ { "failure_reason": "Number not exist.", "phone_number": "+15556660100" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`124\` \
Account does not exist: "{accountId}". \
\*\*Error Code:\*\* \`300\` \
Validation Failed. Batch adding phone numbers is limited to 200 per request. \
\*\*Error Code:\*\* \`404\` \
Unknown carrier. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update peering phone numbers ⚠️ Deprecated - **Method:** `PATCH` - **Path:** `/phone/peering/numbers` - **Tags:** Provider Exchange Updates phone numbers to Zoom through the Provider Exchange. **Note**: Phone peering API and events are for partners that have completed the MoU to peer with Zoom. To become a peering provider/ carrier, submit your [request](https://docs.google.com/forms/d/e/1FAIpQLSewkY6ixVyKVNkWC-vgmejC16gigxsJWXji3dWzE3XlWtjsgg/viewform). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone_peering:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:peering_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`carrier_code`** `integer` — The carrier's code. The \`clientId\` maps to a carrier peered with Zoom. This parameter is required if you do \*\*not\*\* use an OAuth token or the OAuth token does not contain the \`clientId\`. - **`phone_numbers`** `array` — A maximum of 200. **Items:** - **`phone_number` (required)** `string` — The phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164). - **`billing_reference_id`** `string` — The carrier's billing reference ID. Maximum of 32 characters. - **`service_info`** `string` — The carrier's service information. Maximum of 255 characters. - **`sip_trunk_name`** `string` — The SIP trunk for the number - **`status`** `integer` — The phone number's status: \* \`0\` \— Inactive. \* \`1\` \— Active. **Example:** ```json { "carrier_code": 1234, "phone_numbers": [ { "billing_reference_id": "Some billing referenceId", "phone_number": "+18008001000", "service_info": "The encoding used to copy filtered properties files have not been set.", "sip_trunk_name": "first-markert-carrier-trunk", "status": 0 } ] } ``` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Phone number successfully updated. Check the API response for any failures. ###### Content-Type: application/json - **`unprocessed_numbers`** `array` — The information about unprocessed phone numbers. **Items:** - **`failure_reason`** `string` — The reason for processing failures. - **`phone_number`** `string` — The phone number in \[E.164 format]\(https\://en.wikipedia.org/wiki/E.164). **Example:** ```json { "unprocessed_numbers": [ { "failure_reason": "Invalid status", "phone_number": "+15556660100" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`124\` \
Account does not exist: "{accountId}". \
\*\*Error Code:\*\* \`300\` \
Validation Failed. Batch adding phone numbers is limited to 200 per request. \
\*\*Error Code:\*\* \`404\` \
Unknown carrier. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List provision templates - **Method:** `GET` - **Path:** `/phone/provision_templates` - **Tags:** Provision Templates Use this API to list all [provision templates](https://support.zoom.us/hc/en-us/articles/360035817952) in a Zoom account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:list_provision_templates:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Provision template listed successfully. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through 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.) - **`page_size`** `integer` — The number of records returned within a single API call. - **`provision_templates`** `array` **Items:** - **`bound_device_count`** `integer` — The number of devices using the provision template. - **`description`** `string` — The description for the provision template. - **`id`** `string` — The provision template ID. - **`name`** `string` — The display name for the provision template. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "next_page_token": "bkOcmnm6mn6ioYAi10BcgRiEL38WzAo6jP2", "page_size": 30, "provision_templates": [ { "id": "CLbU64xzTzCUXz58e2Lo-w", "name": "Test Provision Template", "description": "provision template", "bound_device_count": 2 } ], "total_records": 1 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a provision template - **Method:** `POST` - **Path:** `/phone/provision_templates` - **Tags:** Provision Templates Use this API to [create a provision template](https://support.zoom.us/hc/en-us/articles/360035817952#h_8266cb40-58fc-4c1a-8da2-885d72167234) in a Zoom account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:write:provision_template:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`name` (required)** `string` — The template name. - **`content`** `string` — The \[content of the provision template]\(https\://support.zoom.us/hc/en-us/articles/360035817952#h\_6ef0cbf5-8d10-4237-91f0-e70f7b73a590). - **`description`** `string` — The provision template description. **Example:** ```json { "name": "test-provision-template", "description": "Test provision template created by API.", "content": "provisioning/firmware/url=https://..." } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Template added successfully. ###### Content-Type: application/json - **`id`** `string` — The template ID. - **`name`** `string` — The template name. **Example:** ```json { "id": "q5C69v95SPKsZ5uUi-Xbcw", "name": "test-provision-template" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\*\*Error Code:\*\* \`400\` \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a provision template - **Method:** `GET` - **Path:** `/phone/provision_templates/{templateId}` - **Tags:** Provision Templates Use this API to get a specific [provision template](https://support.zoom.us/hc/en-us/articles/360035817952). **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:provision_template:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Provision template details retrieved successfully. ###### Content-Type: application/json - **`bound_device_count`** `integer` — The number of devices using the provision template. - **`content`** `string` — The \[content of the provision template]\(https\://support.zoom.us/hc/en-us/articles/360035817952#h\_6ef0cbf5-8d10-4237-91f0-e70f7b73a590). - **`description`** `string` — The description for the provision template. - **`id`** `string` — The provision template ID. - **`name`** `string` — The display name for the provision template. **Example:** ```json { "id": "CLbU64xzTzCUXz58e2Lo-w", "name": "Test provision template", "description": "provision template", "content": "provisioning/firmware/url=https://...", "bound_device_count": 2 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a provision template - **Method:** `DELETE` - **Path:** `/phone/provision_templates/{templateId}` - **Tags:** Provision Templates Use this API to [delete a provision template](https://support.zoom.us/hc/en-us/articles/360035817952#h_7b34cd1d-5ae6-4a23-bd04-454a6ad8cb3e) in a Zoom account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:delete:provision_template:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Template deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Provision template does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a provision template - **Method:** `PATCH` - **Path:** `/phone/provision_templates/{templateId}` - **Tags:** Provision Templates Use this API to update a [provision template](https://support.zoom.us/hc/en-us/articles/360035817952#h_7b34cd1d-5ae6-4a23-bd04-454a6ad8cb3e) in a Zoom account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:provision_template:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`content`** `string` — The \[provision template content]\(https\://support.zoom.us/hc/en-us/articles/360035817952#h\_6ef0cbf5-8d10-4237-91f0-e70f7b73a590). - **`description`** `string` — The provision template description. - **`name`** `string` — The name of the template. **Example:** ```json { "name": "test-provision-template-byAPI", "description": "test provision template by api.", "content": "static.firmware.url = https://..." } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Template details updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\*\*Error Code:\*\* \`404\` \
Provision template does not exist.\
\*\*Error Code:\*\* \`400\` \
Provision template name ({0}) already exists.\
template should not contain reserved parameters (Key: {0}).\
Provision template name ({0}) already exists.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get recording by call ID - **Method:** `GET` - **Path:** `/phone/call_logs/{id}/recordings` - **Tags:** Recordings Returns an account's [call recording](https://support.zoom.us/hc/en-us/articles/360038521091-Accessing-and-sharing-call-recordings) by the recording's `callId` or `callLogId`. **Note**: Returns the `file_url` in the JSON query results. **Prerequisites** - A Pro or higher account with Zoom Phone license - Account owner or admin privileges **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_recording:read`,`phone_recording:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:call_recording`,`phone:read:call_recording:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` OK. ###### Content-Type: application/json - **`accepted_by`** `object` — The call-receiving user. The current recording must belong to the receiver and call queue for it to be available. - **`extension_number`** `string` — The user's extension number. - **`name`** `string` — The user's name. - **`call_element_id`** `string` — The phone call element's unique ID. - **`call_history_id`** `string` — The phone call history's unique ID. - **`call_id`** `string` — The phone call's unique ID. - **`call_log_id`** `string` — The phone call log's unique ID. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_name`** `string` — The callee's contact name. - **`callee_number`** `string` — The callee's phone number. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` — Internal number. \* \`2\` — External number. \* \`3\` — Customized emergency number. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_name`** `string` — The caller's contact name. - **`caller_number`** `string` — The caller's phone number. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` — Internal number. \* \`2\` — External number. - **`date_time`** `string`, format: `date-time` — The date and time when the recording was received. - **`days_left_auto_permantely_delete`** `integer` — The number of days left until recording is permanently deleted. If the recording never auto deletes, the value is '-1'. It exists only when recording is from trash. - **`deleted_time`** `string`, format: `date-time` — The time and date the recording was deleted. It exists only when recording is from trash. - **`direction`** `string` — The call's direction: \* \`inbound\` \* \`outbound\` - **`disclaimer_status`** `integer`, possible values: `0, 1, 2` — The status of disclaimer for recording: \* \`0\` - passive/implicit \* \`1\` - agree (active/explicit and press 1) \* \`2\` - passive agree (active/explicit and no press) - **`download_url`** `string` — The URL from which to download the recording. For security purposes, you \*\*must\*\* provide an OAuth access token in the Authorization header to download the recording file using this URL. For example: \`\`\`curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token} \ --header 'content-type: application/json' \`\`\` - **`duration`** `integer` — The call recording's duration, in seconds. - **`end_time`** `string`, format: `date-time` — The recording's end time. - **`file_url`** `string` — The download URL for the recording. For security purposes, you must provide an OAuth access token in the auth header to download the recording file using this url. Example request: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token}' \ --header 'content-type: application/json' \`\`\` - **`id`** `string` — The recording's ID. - **`meeting_uuid`** `string` — The meeting ID associated with the recording, if any. - **`outgoing_by`** `object` — The user who initiates the call. The current recording must belong to the initiator and the call queue for it to be available. - **`extension_number`** `string` — The user's extension number. - **`name`** `string` — The user's name. - **`owner`** `object` — The owner of the recording. - **`extension_deleted_time`** `string` — The date time the extension was deleted. It exists only when extension\_status is \`deleted\`. - **`extension_number`** `integer`, format: `int64` — The extension number associated with the call number. - **`extension_status`** `string`, possible values: `"inactive", "deleted"` — This field indicates the status of extension. \* \`inactive\` \* \`deleted\` - **`id`** `string` — The owner's ID. - **`name`** `string` — The name of the owner. - **`type`** `string`, possible values: `"user", "callQueue", "commonArea"` — The owner's type, can be \`user\`, \`callQueue\`, or \`sharedOffice\`(deprecated and to be replaced by \`commonArea\` after the transition period.) - **`recording_type`** `string`, possible values: `"OnDemand", "Automatic"` — The recording type. The allowed value is \`OnDemand\` or \`Automatic\`. - **`soft_deleted_type`** `string`, possible values: `"Manual", "Data Retention"` — This field indicates how the recording was deleted. It exists only when the recording is from trash. **Example:** ```json { "call_id": "7069775907364530379", "call_element_id": "20210609-a297ae04-a875-4cfd-85ab-4adcead91edb", "callee_name": "User A", "callee_number": "1000001004", "callee_number_type": 1, "caller_name": "User B", "caller_number": "1000123476", "caller_number_type": 1, "outgoing_by": { "name": "User B", "extension_number": "123476" }, "accepted_by": { "name": "User A", "extension_number": "132001" }, "date_time": "2022-03-08T05:37:23Z", "direction": "inbound", "download_url": "https://domain/recording/download/EvVNLihbQ1WpeG_ALwnNzg", "duration": 115, "end_time": "2022-03-08T05:39:19Z", "id": "1dfe35c05f0f4bf1b2e4a8869a731178", "meeting_uuid": "egLSRuj2SlWet+wLi87LNA==", "owner": { "extension_number": 1000123476, "id": "NL3cEpSdRc-c2t8aLoZqiw", "name": "user@test.com", "type": "user", "extension_status": "deleted", "extension_deleted_time": "2022-10-14T22:10:54Z" }, "deleted_time": "2023-04-18T22:10:49.907Z", "days_left_auto_permantely_delete": 30, "soft_deleted_type": "Manual", "recording_type": "OnDemand", "file_url": "https://domain/recording/download/8f7345c50a654182ab1672fdb3be61ff", "disclaimer_status": 0, "caller_account_code": "111", "callee_account_code": "222" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: "{accountId}". \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
Recording does not exist: "{callId or callLogId}". \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Download a phone recording - **Method:** `GET` - **Path:** `/phone/recording/download/{fileId}` - **Tags:** Recordings Downloads the phone recording. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`,`phone_recording:read`,`phone_recording:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:call_recording`,`phone:read:call_recording:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
File does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Download a phone recording transcript - **Method:** `GET` - **Path:** `/phone/recording_transcript/download/{recordingId}` - **Tags:** Recordings Downloads the phone recording transcript. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`,`phone_recording:read`,`phone_recording:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:recording_transcript`,`phone:read:recording_transcript:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 302 \*\*HTTP Status Code:\*\* \`302\` \*\*OK\*\* You will be redirected to a download URL where you can access the transcript file in JSON format. The file will have a structure similar to the following \`\`\`json { "type": "zoom\_transcript", "ver": 1, "recording\_id": "RECORDING\_ID", "meeting\_id": "MEETING\_ID", "account\_id": "ACCOUNT\_ID", "host\_id": "HOST\_ID", "recording\_start": "YYYY-MM-DDThh:mm:ssZ", "recording\_end": "YYYY-MM-DDThh:mm:ssZ", "timeline": \[ { "text": "TRANSCRIPTED TEXT APPEARS HERE", "raw\_text": "TRANSCRIPTED RAW TEXT APPEARS HERE", "ts": "00:00:00.000", "end\_ts": "00:00:00.600", "users": \[], "userId": "USER PHONE EXTENSION NUMBER APPEARS HERE", "userIds": \[], "channelMark": "L" } ] } \`\`\` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
File does not exist.\
\
\*\*Error Code:\*\* \`12000\` \
Unable to transcribe this recording.\
\
\*\*Error Code:\*\* \`12001\` \
Admin has disabled this transcription.\
\
\*\*Error Code:\*\* \`12002\` \
This recording is still in the process of being transcribed. Reopen this recording in a few minutes.\
\
\*\*Error Code:\*\* \`12003\` \
Transcripts failed to download. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call recordings - **Method:** `GET` - **Path:** `/phone/recordings` - **Tags:** Recordings Returns an account's [call recordings](https://support.zoom.us/hc/en-us/articles/360038521091-Accessing-and-sharing-call-recordings). **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license - Account owner or admin privileges **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_recording:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_call_recordings:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code\*\* \`200\` OK. ###### Content-Type: application/json - **`next_page_token`** `string` — The current page number of returned records. - **`page_size`** `integer` — The number of records returned within a single API call. The default is \*\*30\*\*, and the maximum is \*\*300\*\*. - **`recordings`** `array` **Items:** - **`accepted_by`** `object` — The call-receiving user. The current recording must belong to the receiver and call queue for it to be available. - **`extension_number`** `string` — The user's extension number - **`name`** `string` — The user's name - **`auto_delete_enable`** `boolean` — This field indicates whether the recording has Auto Delete Data After Retention Duration setting enabled or not. - **`auto_delete_policy`** `string` — The time to allow Zoom to automatically delete recordings after retention duration. To see this field, the 'Auto Delete Data After Retention Duration' setting must be enabled in Account Settings . - **`call_element_id`** `string` — The phone call element's unique ID. - **`call_id`** `string` — The phone call's unique ID. - **`call_log_id`** `string` — The phone call log's unique ID. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_name`** `string` — The contact name of the callee. - **`callee_number`** `string` — The phone number of the callee. It could be an e164 number or an extension. The extension number is a combination of the site number and a short extension. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` — Internal number. \* \`2\` — External number. \* \`3\` — Customized emergency number. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_name`** `string` — The contact name of the caller. - **`caller_number`** `string` — The phone number associated with the caller. It could be an e164 number or an extension. The extension number is a combination of the site number and the short extension. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` — Internal number. \* \`2\` — External number. - **`date_time`** `string`, format: `date-time` — The date and time when the recording was received. - **`direction`** `string`, possible values: `"inbound", "outbound"` — The direction of the call. The values are \`inbound\` or \`outbound\`. - **`disclaimer_status`** `integer`, possible values: `0, 1, 2` — The status of disclaimer for recording: \* \`0\` - passive/implicit \* \`1\` - agree (active/explicit and press 1) \* \`2\` - passive agree (active/explicit and no press) - **`download_url`** `string` — The download URL for the recording. For security purposes, you must provide an OAuth access token in the auth header to download the recording file using this URL. Example request \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token}' \ --header 'content-type: application/json' \`\`\` - **`duration`** `integer` — The call recording's duration, in seconds. - **`end_time`** `string`, format: `date-time` — The recording's end time. - **`id`** `string` — The unique identifier of the recording. - **`meeting_uuid`** `string` — The meeting ID associated with the recording, if any. - **`outgoing_by`** `object` — The call-initiating user. The current recording must belong to the initiator and call queue for it to be available. - **`extension_number`** `string` — The user's extension number. - **`name`** `string` — The user's name. - **`owner`** `object` — The owner of the recording. - **`extension_deleted_time`** `string` — The date time the extension was deleted. It exists only when extension\_status is \`deleted\`. - **`extension_number`** `integer`, format: `int64` — The extension number associated to the call number. - **`extension_status`** `string`, possible values: `"inactive", "deleted"` — This field indicates the status of extension: \* \`inactive\` \* \`deleted\` - **`id`** `string` — The owner's ID. - **`name`** `string` — The name of the owner. - **`type`** `string`, possible values: `"user", "callQueue", "commonArea"` — The owner's type, can be \`user\`, \`callQueue\`, or \`sharedOffice\`(deprecated and to be replaced by \`commonArea\`. During the transition period, if \`sharedOffice\` is provided as the \`owner\_type\` parameter, \`sharedOffice\` is returned as a response. Conversely, if \`commonArea\` is provided, \`commonArea\` will be returned. If \`null\` is provided, \`sharedOffice\` will be returned temporarily, but it will be replaced by \`commonArea\` after the transition period). - **`recording_type`** `string` — The recording type. The allowed values are \`OnDemand\` or \`Automatic\`. - **`site`** `object` - **`id`** `string` — The site ID. - **`name`** `string` — The site name. - **`transcript_download_url`** `string` — The download URL for the recording transcript. For security purposes, you must provide an OAuth access token in the auth header to download the recording transcript file using this URL. Example request \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token}' \ --header 'content-type: application/json' \`\`\` - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "next_page_token": "cWiI3vTqdcENiV9RJz3Rh8iP1ksNPheW8c1", "page_size": 30, "recordings": [ { "auto_delete_policy": "1 year", "call_id": "7072598989368295984", "call_log_id": "6f9c2948-40ad-46bc-8700-34ca2d098098", "call_element_id": "20210609-a297ae04-a875-4cfd-85ab-4adcead91edb", "callee_name": "User A", "callee_number": "1000001004", "callee_number_type": 1, "caller_name": "User B", "caller_number": "1000123476", "caller_number_type": 1, "outgoing_by": { "name": "User B", "extension_number": "123476" }, "accepted_by": { "name": "User A", "extension_number": "10201" }, "date_time": "2022-03-08T05:37:23Z", "disclaimer_status": 0, "direction": "outbound", "download_url": "https://domain/recording/download/EvVNLihbQ1WpeG_ALwnNzg", "duration": 115, "end_time": "2022-03-08T05:39:19Z", "id": "6f9c294840ad46bc870034ca2d098098", "meeting_uuid": "egLSRuj2SlWet+wLi87LNA==", "owner": { "extension_number": 1000123476, "id": "NL3cEpSdRc-c2t8aLoZqiw", "name": "user@test.com", "type": "user", "extension_status": "deleted", "extension_deleted_time": "2022-10-14T22:10:54Z" }, "recording_type": "OnDemand", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "transcript_download_url": "https://domain/recording_transcript/download/8f7345c50a654182ab1672fdb3be61ff", "auto_delete_enable": true, "caller_account_code": "111", "callee_account_code": "222" } ], "total_records": 50 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation failed. You provided an incorrect value for the template type. Provide a valid value and try again. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a call recording - **Method:** `DELETE` - **Path:** `/phone/recordings/{recordingId}` - **Tags:** Recordings Deletes a call recording. **Prerequisites:** - User must belong to a Business or Enterprise account - User must have a Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write`,`phone_recording:write`,`phone_recording:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:call_recording`,`phone:delete:call_recording:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Recording deleted. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`124\` \
Invalid access token. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Recording does not exist: {recordingId}.\
\*\*Error Code:\*\* \`2001\` \
Account does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update auto delete field - **Method:** `PATCH` - **Path:** `/phone/recordings/{recordingId}` - **Tags:** Recordings Updates the auto delete field for recording. It only updates if you enable the **Auto Delete Data After Retention Duration** setting in the account settings for recordings. **Prerequisites:** - User must belong to a Business or Enterprise account - User must have a Zoom Phone license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write`,`phone_recording:write`,`phone_recording:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:call_recording`,`phone:update:call_recording:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`auto_delete_enable`** `boolean` — Whether to enable auto delete field in recording. **Example:** ```json { "auto_delete_enable": true } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Auto delete field updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`124\` \
Invalid access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Recording does not exist: {recordingId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update Recording Status - **Method:** `PUT` - **Path:** `/phone/recordings/{recordingId}/status` - **Tags:** Recordings Updates the status of a single recording in account. **Prerequisites:** - User must belong to a Business or Enterprise account. - User must have a Zoom Phone license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write`,`phone_recording:write`,`phone_recording:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:call_recording`,`phone:update:call_recording:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`action`** `string`, possible values: `"recover"` — This field corresponds to actions that you can use to update recording status. Example: Recovering recordings from trash. Allowed values: \`recover\`. **Example:** ```json { "action": "recover" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Recording recovered from trash. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`124\` \
Invalid access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Recording does not exist: {recordingId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get user's recordings - **Method:** `GET` - **Path:** `/phone/users/{userId}/recordings` - **Tags:** Recordings Gets a user's [Zoom Phone recordings](https://support.zoom.us/hc/en-us/articles/360021336671-Viewing-Call-History-and-Recordings). For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`,`phone_recording:read`,`phone_recording:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_recordings`,`phone:read:list_recordings:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` User object returned. ###### Content-Type: application/json - **`from`** `string`, format: `date` — The start time and date of the query. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_count`** `integer` — Total number of pages. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`recordings`** `array` — The recordings. **Items:** - **`accepted_by`** `object` — The call-receiving user. The current recording must belong to the receiver and call queue for it to be available. - **`extension_number`** `string` — The user's extension number. - **`name`** `string` — The user's name. - **`call_element_id`** `string` — The phone call element's unique ID. - **`call_history_id`** `string` — The phone call history's unique ID. - **`call_id`** `string` — The phone call's unique ID. - **`call_log_id`** `string` — The phone call log's unique ID. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_name`** `string` — The contact name of callee. - **`callee_number`** `string` — The number of callee. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` \— Internal number. \* \`2\` \— External number. \* \`3\` \— Customized emergency number. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_name`** `string` — The contact name of caller. - **`caller_number`** `string` — Number of caller. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` \— Internal number. \* \`2\` \— External number. - **`date_time`** `string` — The date and time at which the record is received - **`direction`** `string` — The direction of the call. \"inbound\" | \"outbound\" - **`download_url`** `string` — The download URL for the recording. For security purposes, you must provide an OAuth access token in the auth header to download the recording file using this url. Example request: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token} \ --header 'content-type: application/json' \`\`\` - **`duration`** `integer` — The call recording's duration, in seconds. - **`id`** `string` — The ID of recording. - **`meeting_uuid`** `string` — The meeting ID associated with the recording, if any. - **`outgoing_by`** `object` — The call-initiating user. The current recording must belong to the initiator and call queue for it to be available. - **`extension_number`** `string` — The user's extension number. - **`name`** `string` — The user's name. - **`transcript_download_url`** `string` — The download URL for the recording transcript. For security purposes, you must provide an OAuth access token in the auth header to download the recording transcript file using this url. Example request: \`\`\` curl --request GET \ --url {transcript\_download\_url} \ --header 'authorization: Bearer {access\_token} \ --header 'content-type: application/json' \`\`\` - **`to`** `string`, format: `date` — The end time and date of the query. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "from": "2021-11-01", "next_page_token": "6jqhz348c100oHbw6cVER45YderniREnwr1", "page_count": 1, "page_size": 30, "recordings": [ { "call_id": "7025841973929235024", "call_element_id": "20210609-a297ae04-a875-4cfd-85ab-4adcead91edb", "callee_name": "User A", "callee_number": "1000001004", "callee_number_type": 1, "caller_name": "User B", "caller_number": "1000001028", "caller_number_type": 1, "outgoing_by": { "name": "User B", "extension_number": "123476" }, "accepted_by": { "name": "User A", "extension_number": "101001" }, "date_time": "2021-11-02T05:35:20Z", "direction": "inbound", "download_url": "https://domain/recording/download/EvVNLihbQ1WpeG_ALwnNzg", "duration": 11, "id": "8f7345c50a654182ab1672fdb3be61ff", "meeting_uuid": "egLSRuj2SlWet+wLi87LNA==", "transcript_download_url": "https://domain/recording_transcript/download/8f7345c50a654182ab1672fdb3be61ff", "caller_account_code": "111", "callee_account_code": "222" } ], "to": "2021-11-03", "total_records": 50 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get call charges usage report - **Method:** `GET` - **Path:** `/phone/reports/call_charges` - **Tags:** Reports Retrieves the Phone Call Charges Report. The Call charges usage report allows account owners and admins to view monthly Zoom phone call charges. Account owners and admins can also access this information when they log into their Zoom accounts and navigate to [Call Charges Usage Report](https://zoom.us/pbx/page/report/system#/report/phone-system/charge?page_size=15\&chargeRestrict=0\&by=1). **Prerequisites:** - Account must be enrollled in Pro or a higher plan - Account must be enrolled in a [Zoom Phone](https://zoom.us/pricing/zoom-phone) plan **[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:call_charges:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Call charges returned. ###### Content-Type: application/json - **`call_charges`** `array` — An array of call charges **Items:** - **`billing_number`** `string` — The billing number. - **`call_log_id`** `string` — The ID of the call log. You can use this value to fetch the details of the call log using \[Get call log details]\(https\://developers.zoom.us/docs/api/rest/reference/phone/methods/#operation/getCallLogDetails). - **`call_type`** `string`, possible values: `"voip", "local", "tollfree", "international", "callCenter"` — The type of call: \* \`voip\` (Voice over IP) \* \`local\` (Public Switched Telephone Network) \* \`tollfree\` \* \`international\` \* \`callCenter\` - **`callee_billing_number`** `string` — The callee's billing phone number. - **`callee_number`** `string` — The callee's phone number. - **`caller_billing_number`** `string` — The caller's billing phone number. - **`caller_number`** `string` — The caller's phone number. - **`calling_party_name`** `string` — The name of the calling party. - **`charge_mode`** `string`, possible values: `"per_min", "per_call", "per_call_per_min", "per_min_after_t_duration", "per_call_per_min_after_t_duration"` — The mode of charging. - **`cost_center`** `string` — The name of the cost center. - **`currency`** `string` — The currency of the billed amount. - **`department`** `string` — The name of the department. - **`duration`** `integer` — The duration of the call in minutes. - **`employee_id`** `string` — The employee's ID. - **`end_time`** `string` — The call end time in GMT \`date-time\` format. - **`forward_number_billing`** `string` — The billing for the forward number. - **`rate`** `string` — The rate of billing. - **`service_type`** `string`, possible values: `"meeting", "call"` — The type of service: \* \`meeting\` \* \`call\` (normal call)\` - **`total_charge`** `string` — The total charge. - **`from`** `string` — The start time and date of the call. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer`, default: `30` — The given page size. - **`to`** `string` — The end time and date of the SMS/MMS. - **`total_records`** `integer` — The total number of records returned within a single API call. **Example:** ```json { "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 20, "total_records": 10, "from": "2021-10-01", "to": "2021-10-12", "call_charges": [ { "call_log_id": "1csf78-e9a8-4e14-859e-94ce323a9eef", "caller_number": "1001", "caller_billing_number": "+2100000980", "callee_number": "1008", "callee_billing_number": "+21058945728", "call_type": "voip", "service_type": "call", "calling_party_name": "User", "cost_center": "Phone cost center", "employee_id": "A9877", "department": "Engineering", "end_time": "2021-10-08T16:12:15Z", "duration": 1, "charge_mode": "per_min", "rate": "0.0205", "currency": "USD", "total_charge": "0", "billing_number": "2100000980 Ext. 1001", "forward_number_billing": "2100000980" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
\*\*Error Code:\*\* \`400\` \
The billing\_account\_id is invalid. \
\*\*Error Code:\*\* \`400\` \
Invalid start date. Report is provided only for recent 13 months. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get fax charges usage report - **Method:** `GET` - **Path:** `/phone/reports/fax_charges` - **Tags:** Reports Retrieves the Phone Fax Charges Report. The fax charges usage report allows account owners and admins to view monthly Zoom phone fax charges. Account owners and admins can also access this information when they log into their Zoom accounts and navigate to [Fax Charges Usage Report](https://zoom.us/pbx/page/report/system#/report/phone-system/charge?page_size=15\&by=3). **Prerequisites** - Account must be enrollled in Pro or a higher plan - Account must be enrolled in a [Zoom Phone](https://zoom.us/pricing/zoom-phone) plan **[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:fax_charges:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Fax charges returned. ###### Content-Type: application/json - **`fax_charges`** `array` — An array of fax charges. **Items:** - **`billing_number`** `string` — The billing phone number. - **`charge_mode`** `string`, possible values: `"per_page"` — The mode of charging. - **`charge_status`** `string`, possible values: `"pending", "calculated"` — The charge status. \* \`pending\`: the charge has not been calculated yet. The values of \`charged\_pages\` and \`total\_charge\` are not available. They will be determined at the end of the billing cycle. \* \`calculated\`: the charge has been calculated, and the values of \`charged\_pages\` and \`total\_charge\` are available. - **`charged_pages`** `integer` — The charged pages. Only present when \`charge\_status\` is 'calculated'. - **`currency`** `string` — The currency of the billed amount. Following the \[\[ISO 4217]\(https\://www\.iso.org/iso-4217-currency-codes.html)] standard, such as 'USD' for US dollars. - **`currency_sign`** `string` — The display symbol associated with the currency. It's used for presentation purposes only. This field is optional and should not be used for currency identification or calculation logic. - **`end_time`** `string` — The fax end time in ISO 8601 GMT (UTC) date-time format. - **`fax_id`** `string` — The fax ID. - **`fax_type`** `string`, possible values: `"local", "international"` — The type of fax. - **`rate`** `string` — The rate of billing. - **`receiver_number`** `string` — The receiver's phone number. - **`sender_number`** `string` — The sender's phone number. - **`total_charge`** `string` — The total charge. Only present when \`charge\_status\` is 'calculated'. - **`total_pages`** `integer` — The total pages. - **`unlimited`** `boolean` — Whether the fax usage for this record is included in unlimited faxing available with certain plans. More details: \[Understanding Online Fax licensing]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0080618#mcetoc\_1iq1lcq3n18) - **`from`** `string` — The start time and date of the fax. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer` — The given page size. - **`to`** `string` — The end time and date of the fax. - **`total_records`** `integer` — The total number of records returned within a single API call. **Example:** ```json { "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 30, "total_records": 10, "from": "2025-06-01", "to": "2025-06-30", "fax_charges": [ { "fax_id": "FD361623719B460388970623D2AB808A", "sender_number": "+2100000980", "receiver_number": "+21058945728", "billing_number": "+21058945728", "end_time": "2025-07-02T15:51:00Z", "charge_mode": "per_page", "fax_type": "international", "unlimited": false, "total_pages": 5, "rate": "0.0406", "currency": "USD", "currency_sign": "$", "charge_status": "calculated", "charged_pages": 5, "total_charge": "0.203" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
\*\*Error Code:\*\* \`400\` \
Invalid from/to time. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Get operation logs report - **Method:** `GET` - **Path:** `/phone/reports/operationlogs` - **Tags:** Reports Retrieves the phone system operation logs report. The phone system operation logs report allows account owners and admins to view monthly Zoom phone related admin operation details. Account owners and admins can also access this information by logging into their Zoom accounts and navigating to [Phone System Operation Logs](https://zoom.us/pbx/page/report/operations#/report/operation-logs). **Prerequisites:** - Account must be enrollled in Pro or a higher plan - Account must be enrolled in a [Zoom Phone](https://zoom.us/pricing/zoom-phone) plan **[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:operation_logs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Report returned. ###### Content-Type: application/json **All of:** - **`next_page_token`** `string` — The next page token paginates through a large set of result. A next page token returns whenever the set of the available result list exceeds the page size. The expiration period is 15 minutes. - **`page_size`** `integer`, default: `30` — The amount of records returns within a single API call. * **`from`** `string` — The start time and date of the log. * **`to`** `string` — The end time and date of the log. * **`total_records`** `integer` — The total number of records returned. - **`operation_logs`** `array` — The array of operation log objects. **Items:** - **`action`** `string` — The action that was performed. - **`category_type`** `string` — The category type of the operation. - **`operation_detail`** `string` — The Operation details. - **`operator`** `string` — The user who performed the operation. - **`time`** `string`, format: `date-time` — The time at which the operation was performed. **Example:** ```json { "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 20, "total_records": 10, "from": "2021-10-01", "to": "2021-10-12", "operation_logs": [ { "action": "ADD", "category_type": "Phone Number", "operation_detail": "Add BYOC +86 182 5188 5564", "operator": "user@test.com", "time": "" } ] } ``` ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get SMS/MMS charges usage report - **Method:** `GET` - **Path:** `/phone/reports/sms_charges` - **Tags:** Reports Retrieves the **SMS/MMS Charges Report**. The **SMS/MMS charges usage report** allows account owners and admins to view monthly Zoom phone SMS charges. Account owners and admins can also access this information by when they log into their Zoom accounts and navigate to [SMS/MMS Charges Usage Report](https://zoom.us/pbx/page/report/system#/report/phone-system/charge?page_size=15\&chargeRestrict=0\&by=2). **Prerequisites** \* Account must be enrolled in Pro or a higher plan \* Account must be enrolled in a [Zoom Phone](https://zoom.us/pricing/zoom-phone) plan **[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_charges:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` SMS/MMS charges successfully returned. ###### Content-Type: application/json - **`from`** `string` — The start time and date of the sms/mms - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer` — The given page size. - **`sms_charges`** `array` — An array of sms/mms charges **Items:** - **`billing_number`** `string` — The billing phone number. - **`cost_center`** `string` — The name of the cost center. - **`currency`** `string` — Currency of the billed amount. - **`delivery_detail`** `string` — The delivery detail. - **`delivery_status`** `string`, possible values: `"Sent", "Failed to send", "Delivered", "Failed to deliver", "Received", "Unknown"` — The delivery status. - **`department`** `string` — The name of the department. - **`from_display_name`** `string` — The sender's display name. - **`from_email`** `string` — The sender's email. - **`from_extension_number`** `string` — The sender's extension number. - **`from_number`** `string` — The sender's phone number. - **`message_id`** `string` — The message ID. You can use this value to fetch details about a specific message in an SMS session using \[Get SMS by message ID]\(https\://developers.zoom.us/docs/api/rest/reference/phone/methods/#operation/smsByMessageId). - **`message_type`** `string` — The message type - **`rate`** `string` — The rate of billing. - **`sent_time`** `string` — The UTC time the message was sent. - **`session_id`** `string` — The session ID. You can use this value to fetch the sms session details using \[Get SMS session details]\(https\://developers.zoom.us/docs/api/rest/reference/phone/methods/#operation/smsSessionDetails). - **`to_display_name`** `string` — The receiver's display name. - **`to_email`** `string` — The receiver's email. - **`to_extension_number`** `string` — The receiver's extension number. - **`to_number`** `string` — The receiver's phone number. - **`total_charge`** `string` — The total charge. - **`to`** `string` — The end time and date of the sms/mms - **`total_records`** `integer` — The total number of records returned within a single API call. **Example:** ```json { "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 20, "total_records": 10, "from": "2021-10-01", "to": "2021-10-12", "sms_charges": [ { "session_id": "da21222c4254690b545b305d6616e261", "message_id": "2159E06A-7195-4B54-831E-54DB8FDEC510", "message_type": "SMS", "from_number": "2019980987", "from_extension_number": "1008", "from_display_name": "Sender A", "from_email": "sender.a@gmail.com", "to_number": "2013450986", "to_extension_number": "1008", "to_display_name": "Receiver A", "to_email": "receiver.a@gmail.com", "sent_time": "2022-03-23T02:58:01Z", "billing_number": "+2100000980", "cost_center": "Phone cost center", "department": "Engineering", "rate": "0.0205", "currency": "USD", "total_charge": "0", "delivery_status": "Delivered", "delivery_detail": "The message was successfully delivered to the intended recipient(s) on the mobile operator's network." } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired \
\*\*Error Code:\*\* \`400\` \
Invalid start date. Report is provided only for recent 13 months \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List directory backup routing rules - **Method:** `GET` - **Path:** `/phone/routing_rules` - **Tags:** Routing Rules Returns a list of directory backup routing rules. The directory backup routing rules are a series of predefined Regular Expressions. These rules are used to route outgoing calls. If a dialed number does not match a Zoom Phone user, and does not match a defined External Contact, these rules are tested next. If a dialed number does not match any rules, the call will be routed via the PSTN. **Prerequisites:** \* A Business or Enterprise account \* A Zoom Phone license **[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:list_routing_rules:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List directory backup routing rules. ###### Content-Type: application/json **Array of:** - **`name`** `string` — The routing rule name. - **`number_pattern`** `string` — The Perl-compatible number\_pattern expression. - **`order`** `integer` — The rule order to be applied: '1' being the highest. - **`routing_path`** `object` - **`sip_group`** `object` — It cannot be null when 'type' = 'sip\_group'. - **`id`** `string` — The unique identifier of the SIP group. - **`name`** `string` — The SIP group name. - **`type`** `string`, possible values: `"other_sites", "pstn", "sip_group"` — The routing rule type. - **`routing_rule_id`** `string` — The Unique identifier of the routing rule. - **`site_id`** `string` — The unique identifier of the site: nullable if the routing rule is at an account level. - **`translation`** `string` — The optional replacement pattern: must be in E.164 format. **Example:** ```json [ { "name": "testRoutingRule", "number_pattern": "testNumberPattern", "order": 1, "routing_path": { "sip_group": { "id": "KrjExB4mSuWYkpIRLEjjpQ", "name": "sip_test_customer_id2" }, "type": "sip_group" }, "routing_rule_id": "LVkqTcxNQt6d-W45e0Jc6Q", "site_id": "NjHmTu16Qfe8yOiNJuekXA", "translation": "/[1-9]/" } ] ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add directory backup routing rule - **Method:** `POST` - **Path:** `/phone/routing_rules` - **Tags:** Routing Rules Creates a directory backup routing rule. The directory backup routing rules are a series of predefined regular expressions. These rules are used to route outgoing calls. If a dialed number does not match a Zoom Phone user, and does not match a defined external contact, these rules are tested next. If a dialed number does not match any rules, the call will be routed through the PSTN. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:write:routing_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`name`** `string` — The routing rule name. - **`number_pattern`** `string` — The Perl-compatible number\_pattern expression. - **`sip_group_id`** `string` — The unique identifier of the SIP group. it cannot be null when 'type' = 'sip\_group'. - **`site_id`** `string` — The unique identifier of the site.\`nullable\` - **`translation`** `string` — The optional replacement pattern. It must be in E.164 format.\`nullable\` - **`type`** `string`, possible values: `"other_sites", "pstn", "sip_group"` — The routing path type. **Example:** ```json { "name": "testRule", "number_pattern": "testPattern", "sip_group_id": "KrjExB4mSuWYkpIRLEjjpQ", "site_id": "aATWYNqFQDetJQ5tCX6d6g", "translation": "/[1-9]/", "type": "sip_group" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*No Content\*\* Directory backup routing rule added. ###### Content-Type: application/json - **`name`** `string` — The routing rule name. - **`routing_rule_id`** `string` — The unique identifier of the routing rule. **Example:** ```json { "name": "testRule", "routing_rule_id": "LVkqTcxNQt6d-W45e0Jc6Q" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Type does not exist. Type cannot be null. Number Pattern cannot be null. Number Pattern length can be up to 255 characters. SIP Group cannot be null. Number Pattern ({0}) already exists. Translation length can be up to 255 characters. Routing rule name cannot be blank. Routing rule name length can be up to 255 characters. \
\*\*Error Code:\*\* \`404\` \
SIP Group does not exist. Site does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get directory backup routing rule - **Method:** `GET` - **Path:** `/phone/routing_rules/{routingRuleId}` - **Tags:** Routing Rules Returns the directory backup routing rule. The directory backup routing rules are a series of predefined Regular Expressions. These rules are used to route outgoing calls. If a dialed number does not match a Zoom Phone user, and does not match a defined External Contact, these rules are tested next. If a dialed number does not match any rules, the call will be routed via the PSTN.**Prerequisites:** \* A Business or Enterprise account \* A Zoom Phone license **[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:routing_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Get directory backup routing rule. ###### Content-Type: application/json - **`name`** `string` — The routing rule name. - **`number_pattern`** `string` — The Perl-compatible number\_pattern expression. - **`order`** `integer` — The routing rule order to be applied: '1' being the highest. - **`routing_path`** `object` - **`sip_group`** `object` — It cannot be null when 'type' = 'sip\_group'. - **`id`** `string` — The unique identifier of the SIP group. - **`name`** `string` — The SIP group name. - **`type`** `string`, possible values: `"other_sites", "pstn", "sip_group"` — The routing rule type. - **`routing_rule_id`** `string` — The unique identifier of the routing rule. - **`site_id`** `string` — The unique identifier of the site. - **`translation`** `string` — The optional replacement pattern: must be in E.164 format. **Example:** ```json { "name": "testRule", "number_pattern": "testPattern", "order": 1, "routing_path": { "sip_group": { "id": "KrjExB4mSuWYkpIRLEjjpQ", "name": "sip_test_customer_id2" }, "type": "sip_group" }, "routing_rule_id": "LVkqTcxNQt6d-W45e0Jc6Q", "site_id": "aATWYNqFQDetJQ5tCX6d6g", "translation": "/[1-9]/" } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete directory backup routing rule - **Method:** `DELETE` - **Path:** `/phone/routing_rules/{routingRuleId}` - **Tags:** Routing Rules Deletes the directory backup routing rule. The directory backup routing rules are a series of predefined Regular Expressions. These rules are used to route outgoing calls. If a dialed number does not match a Zoom Phone user, and does not match a defined External Contact, these rules are tested next. If a dialed number does not match any rules, the call will be routed via the PSTN. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:delete:routing_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Directory backup routing rule deleted. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Routing rule does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update directory backup routing rule - **Method:** `PATCH` - **Path:** `/phone/routing_rules/{routingRuleId}` - **Tags:** Routing Rules Updates the directory backup routing rule. The directory backup routing rules are a series of predefined regular expressions. These rules are used to route outgoing calls. If a dialed number does not match a Zoom Phone user, and does not match a defined external contact, these rules are tested next. If a dialed number does not match any rules, the call will be routed through the PSTN. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:routing_rule:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`name`** `string` — The routing rule name. - **`number_pattern`** `string` — The Perl-compatible number\_pattern expression. - **`order`** `integer` — TherRouting rule order to be applied: '1' being the highest. Order inserting occurs when this field is filled. It will automatically readjust the order of rules between the target order and the current order. - **`sip_group_id`** `string` — The unique identifier of the SIP Group: must not be null when 'type' = 'sip\_group'. - **`translation`** `string` — Optional replacement pattern: must be in E.164 format. \`nullable\` - **`type`** `string`, possible values: `"other_sites", "pstn", "sip_group"` — The routing path type. **Example:** ```json { "name": "testRuleName", "number_pattern": "testNumberPattern", "order": 2, "sip_group_id": "fd9f", "translation": "/[1-9]/", "type": "other_sites" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Directory backup routing rule updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Type does not exist. SIP Group cannot be null. Number Pattern ({0}) already exists. Routing rule name length can be up to 255 characters. Number Pattern length can be up to 255 characters. Translation length can be up to 255 characters. \
\*\*Error Code:\*\* \`404\` \
Routing rule does not exist. SIP Group does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Post SMS message - **Method:** `POST` - **Path:** `/phone/sms/messages` - **Tags:** SMS Sends [SMS messages ](https://support.zoom.us/hc/en-us/articles/360054631031-Setting-up-SMS)to Zoom Phone accounts. **Prerequisites** - Zoom Phone license - SMS enabled for the account or admin privileges - User-enabled Zoom Phone **SMS and attachments - Size and limits** - SMS size with no media attachments: 2048 bytes - SMS size with attachments: 1000 bytes - Total attachments: 10 - Total attachments file size: 2MB **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write`,`phone_sms:write`,`phone_sms:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:sms_message`,`phone:read:sms_message:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Request Body ##### Content-Type: application/json - **`sender` (required)** `object` — The field that describes the sender's identity. - **`phone_number` (required)** `string` — 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. - **`id`** `string` — The sender's unique user ID. You can pass either \`id\` or \`user\_id\` in the parameters. - **`user_id`** `string` — The sender's unique user ID. You can pass either \`id\` or \`user\_id\` in the parameters. - **`to_members` (required)** `array` — 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:** - **`phone_number` (required)** `string` — 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. - **`attachments`** `array` — 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:** - **`base64_encoding`** `string` — The ASCII string to send \[Base64 encoded]\(https\://en.wikipedia.org/wiki/Base64) attachments as text, the size limit is 2MB. - **`type`** `string`, possible values: `"PNG", "JPEG", "JPG", "GIF", "PDF"` — The format of attachments. The following file formats are supported: JPG, PNG, JPEG, GIF, PDF. - **`message`** `string` — 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. - **`session_id`** `string` — 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:** ```json { "attachments": [ { "base64_encoding": "SUQzBAAAAAAAZ1RFTkMAAAAIAAADUkVBUEVSAFREUkMAAAAMAAADMjAyMS0w", "type": "JPG" } ], "message": "welcome", "sender": { "phone_number": "+18108001001" }, "session_id": "d39fc7e14ef9f2b6453f5f02524d79a2", "to_members": [ { "phone_number": "+12058945624" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` SMS sent successfully. ###### Content-Type: application/json - **`date_time`** `string` — The message creation time in UTC (Coordinated Universal Time). - **`message_id`** `string` — The message ID. - **`session_id`** `string` — The session ID. **Example:** ```json { "date_time": "2022-01-17T08:13:27Z", "message_id": "E14032F2-1EDE-4D8E-924B-C83A70CD2923", "session_id": "d39fc7e14ef9f2b6453f5f02524d79a2" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {id} \
\*\*Error Code:\*\* \`1024\` \
User does not exist due to missing required params. \
\*\*Error Code:\*\* \`7001\` \
Phone Number is not valid. \
\*\*Error Code:\*\* \`316\` \
The phone number does not conform to the E.164 standard. \
\*\*Error Code:\*\* \`300\` \
Unsupported Content Type. \
\*\*Error Code:\*\* \`135\` \
You cannot have access to another user. \
\*\*Error Code:\*\* \`121\` \
Unsupported content type for SMS attachments. \
\*\*Error Code:\*\* \`138\` \
Missing content type for SMS attachment. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get account's SMS sessions - **Method:** `GET` - **Path:** `/phone/sms/sessions` - **Tags:** SMS Returns details about SMS sessions for an account. **Prerequisites** - Paid account - User-enabled Zoom phone **[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` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The size of each page. - **`sms_sessions`** `array` **Items:** - **`last_access_time`** `string` — The last send or receive time in UTC. - **`participants`** `array` — The SMS members. **Items:** - **`display_name`** `string` — The participant name. - **`extension_deleted_time`** `string` — The date time the extension was deleted. It exists only when extension\_status is \`deleted\`. - **`extension_status`** `string`, possible values: `"inactive", "deleted"` — This field indicates the status of the extension. \* \`inactive\` \* \`deleted\` - **`is_session_owner`** `boolean` — Whether it is the owner of the session. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`phone_number`** `string` — The participant phone number. - **`session_id`** `string` — The SMS session ID. - **`session_type`** `string` — The session type. The value for this field can be one of the following: \`user\` \`call\_queue\` \`auto\_receptionist\` **Example:** ```json { "next_page_token": "2z0Ov7kngllAbfQi4ZR2eQTb3mFVYQpYAe3", "page_size": 30, "sms_sessions": [ { "last_access_time": "2022-03-25T02:11:27Z", "participants": [ { "display_name": "test api", "owner": { "id": "DnEopNmXQEGU2uvvzjgojw", "type": "user" }, "phone_number": "18108001001", "is_session_owner": true, "extension_status": "deleted", "extension_deleted_time": "2022-10-14T22:10:54Z" } ], "session_id": "d39fc7e14ef9f2b6453f5f02524d79a2", "session_type": "user" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
SMS session type is invalid. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`7012\` \
Error retrieving SMS. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get SMS session details - **Method:** `GET` - **Path:** `/phone/sms/sessions/{sessionId}` - **Tags:** SMS Returns details about an SMS session. **Prerequisites** - Paid account - User-enabled Zoom phone **[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` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The size of the page. - **`sms_histories`** `array` **Items:** - **`attachments`** `array` **Items:** - **`download_url`** `string` — The download link for the media file. - **`id`** `string` — The media file ID. - **`name`** `string` — The file name. - **`size`** `integer` — The file size. - **`type`** `string`, possible values: `"OTHER", "PNG", "GIF", "JPG", "AUDIO", "VIDEO"` — The file type: OTHER, PNG, GIF, JPG, AUDIO, VIDEO - **`date_time`** `string` — The UTC time the message was created. - **`delivery_status`** `string`, possible values: `"received", "delivered", "failed_to_send", "sent", "failed_to_deliver", "unknown"` — 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. - **`direction`** `string` — Whether the direction is In or Out. - **`message`** `string` — The contents of the SMS text. - **`message_id`** `string` — The message ID. - **`message_type`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The message type: 1 - SMS 2 - MMS 3 - GROUP\_SMS 4 - GROUP\_MMS 5 - SMS\_INTER 6 - MSG\_ON\_NET - **`sender`** `object` - **`phone_number` (required)** `string` — The sender's phone number. - **`display_name`** `string` — The sender's name. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`to_members`** `array` **Items:** - **`phone_number` (required)** `string` — The receiver's phone number. - **`display_name`** `string` — The participant's name. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` **Example:** ```json { "next_page_token": "2z0Ov7kngllAbfQi4ZR2eQTb3mFVYQpYAe4", "page_size": 30, "sms_histories": [ { "attachments": [ { "download_url": "https://exampleurl.us/file/download/x18dcVWxTcCzbp4zr2AT3A?jwt=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjcm9zc2ZpbGUiLCJhdWQiOiJmaWxlIiwiZGlnIjoiYTZkODE4NzQ2MDNmN2UzZWM4OThkNDMxM2IxNjNhNTQ4NGI4MjkxMTA0ZmQyYzc4MTg1NmY0MGUxY2FlOTI3YyIsImV4cCI6MTY0ODE5NDA1NH0.eCURcan9QOOw9wvBdSn_-TBzgT5HWBzp04IfsK19Oto", "id": "x18dcVWxTcCzbp4zr2AT3A", "name": "FWDHOMaNRaqIvNc3aIdisg.jpg", "size": 225740, "type": "JPG/JPEG" } ], "date_time": "2022-03-23T02:58:01Z", "direction": "In", "message": "welcome", "message_id": "IQ-cRH5P5EiTWCwpNzScnECJw", "delivery_status": "delivered", "message_type": 2, "sender": { "display_name": "test api", "owner": { "id": "DnEopNmXQEGU2uvvzjgojw", "type": "user" }, "phone_number": "18108001001" }, "to_members": [ { "display_name": "ezreal mao", "owner": { "id": "WeD59Hn7SvqNRB9jcxz5NQ", "type": "user" }, "phone_number": "12092693625" } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. Requires from and to page number should be > 0 \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Access token has expired. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`7013\` \
Error retrieving SMS history. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get SMS by message ID - **Method:** `GET` - **Path:** `/phone/sms/sessions/{sessionId}/messages/{messageId}` - **Tags:** SMS Returns details about a specific message in an SMS session. **Prerequisites** - Paid account - User-enabled Zoom phone **[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_message`,`phone:read:sms_message:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`attachments`** `array` **Items:** - **`download_url`** `string` — The download link for the media file. - **`id`** `string` — The media file ID. - **`name`** `string` — The file name. - **`size`** `integer` — The file size. - **`type`** `string`, possible values: `"OTHER", "PNG", "GIF", "JPG", "AUDIO", "VIDEO"` — The file type: OTHER, PNG, GIF, JPG, AUDIO, VIDEO - **`date_time`** `string` — The UTC time the message was created. - **`delivery_status`** `string`, possible values: `"received", "delivered", "failed_to_send", "sent", "failed_to_deliver", "unknown"` — 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. - **`direction`** `string` — The direction is either in or out - **`message`** `string` — The SMS text contents. - **`message_id`** `string` — The message ID. - **`message_type`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The message type: 1 - SMS 2 - MMS 3 - GROUP\_SMS 4 - GROUP\_MMS 5 - SMS\_INTER 6 - MSG\_ON\_NET - **`sender`** `object` - **`phone_number` (required)** `string` — The sender's phone number. - **`display_name`** `string` — The sender's name. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`to_members`** `array` **Items:** - **`phone_number` (required)** `string` — The receiver's phone number. - **`display_name`** `string` — The participant's name. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` **Example:** ```json { "attachments": [ { "download_url": "https://exampleurl.us/file/download/x18dcVWxTcCzbp4zr2AT3A?jwt=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjcm9zc2ZpbGUiLCJhdWQiOiJmaWxlIiwiZGlnIjoiYTZkODE4NzQ2MDNmN2UzZWM4OThkNDMxM2IxNjNhNTQ4NGI4MjkxMTA0ZmQyYzc4MTg1NmY0MGUxY2FlOTI3YyIsImV4cCI6MTY0ODE5NDA1NH0.eCURcan9QOOw9wvBdSn_-TBzgT5HWBzp04IfsK19Oto", "id": "x18dcVWxTcCzbp4zr2AT3A", "name": "FWDHOMaNRaqIvNc3aIdisg.jpg", "size": 225740, "type": "JPG/JPEG" } ], "date_time": "2022-03-23T02:58:01Z", "direction": "In", "message": "welcome", "delivery_status": "delivered", "message_id": "IQ-cRH5P5EiTWCwpNzScnECJw", "message_type": 2, "sender": { "display_name": "ezreal mao", "owner": { "id": "WeD59Hn7SvqNRB9jcxz5NQ", "type": "user" }, "phone_number": "12092693625" }, "to_members": [ { "display_name": "test api", "owner": { "id": "DnEopNmXQEGU2uvvzjgojw", "type": "user" }, "phone_number": "18108001001" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1004\` \
Not allow to access this account. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Access token has expired. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Sync SMS by session ID - **Method:** `GET` - **Path:** `/phone/sms/sessions/{sessionId}/sync` - **Tags:** SMS Syncs SMS messages in a session. **Prerequisites** - Paid account - User-enabled Zoom phone **[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` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`sms_histories`** `array` **Items:** - **`attachments`** `array` **Items:** - **`download_url`** `string` — The download link for the media file. - **`id`** `string` — The media file ID. - **`name`** `string` — The file's name. - **`size`** `integer` — The file's size. - **`type`** `string`, possible values: `"OTHER", "PNG", "GIF", "JPG", "AUDIO", "VIDEO"` — The file's type: OTHER, PNG, GIF, JPG, AUDIO, VIDEO - **`date_time`** `string` — The UTC time the message was created. - **`direction`** `string` — \`In\`(SMS received) or \`Out\`(SMS sent) - **`message`** `string` — The content of the SMS. - **`message_id`** `string` — The message ID. - **`message_type`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The message type: 1 - SMS 2 - MMS 3 - GROUP\_SMS 4 - GROUP\_MMS 5 - SMS\_INTER 6 - MSG\_ON\_NET - **`sender`** `object` - **`phone_number` (required)** `string` — The sender's phone number. - **`display_name`** `string` — The sender's name. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner's type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`to_members`** `array` **Items:** - **`phone_number` (required)** `string` — The SMS recipient phone number. - **`display_name`** `string` — The SMS recipient's name. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`sync_token`** `string` — The time range for returned records. It's used for locating where the next retrieval will begin. **Example:** ```json { "sms_histories": [ { "attachments": [ { "download_url": "https://exampleurl.us/file/download/x18dcVWxTcCzbp4zr2AT3A?jwt=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjcm9zc2ZpbGUiLCJhdWQiOiJmaWxlIiwiZGlnIjoiYTZkODE4NzQ2MDNmN2UzZWM4OThkNDMxM2IxNjNhNTQ4NGI4MjkxMTA0ZmQyYzc4MTg1NmY0MGUxY2FlOTI3YyIsImV4cCI6MTY0ODE5NDk4OH0.kAh1EnCkjpwAOX_GUfWVPLK2xhnVPRiwm8vDbD-oyVY", "id": "x18dcVWxTcCzbp4zr2AT3A", "name": "FWDHOMaNRaqIvNc3aIdisg.jpg", "size": 225740, "type": "JPG/JPEG" } ], "date_time": "2022-03-23T02:58:01Z", "direction": "In", "message": "welcome", "message_id": "IQ-cRH5P5EiTWCwpNzScnECJw", "message_type": 2, "sender": { "display_name": "test api", "owner": { "id": "DnEopNmXQEGU2uvvzjgojw", "type": "user" }, "phone_number": "18108001001" }, "to_members": [ { "display_name": "callhandling0001@testapi.com", "owner": { "id": "rYgfsrduSXWCxr94poMN5g", "type": "user" }, "phone_number": "12762924594" } ] } ], "sync_token": "MFgyQ0Z3UDkwaF8xNjQyNDA3MjA3MDE0XzE2NDI0MDcyMDcwMTQ=" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
The sync token is invalid or expired. Please resync with the \`FSync\` method. \
\*\*Error Code:\*\* \`7035\` \
The number of new records exceeds the sync count. Please resync with the \`FSync\` method. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Invalid access token. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`300\` \
The sync token is invalid or expired.\
\
\*\*Error Code:\*\* \`12004\` \
Session does not exist: {0}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get user's SMS sessions - **Method:** `GET` - **Path:** `/phone/users/{userId}/sms/sessions` - **Tags:** SMS Returns details about SMS sessions for a user. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites:** - Paid account - User-enabled Zoom phone **[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:list_sms_sessions`,`phone:read:list_sms_sessions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through large result sets. A next page token returns whenever the set of the available result list exceeds the page size. - **`page_size`** `integer` — The size of each page. - **`sms_sessions`** `array` **Items:** - **`last_access_time`** `string` — The last send or receive time in UTC. - **`participants`** `array` — The SMS members. **Items:** - **`display_name`** `string` — The participant's name. - **`is_session_owner`** `boolean` — Whether it is the owner of the session. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`phone_number`** `string` — The participant phone number. - **`session_id`** `string` — The SMS session ID. - **`session_type`** `string` — The session type. The value for this field can be one of the following: \`user\` \`call\_queue\` \`auto\_receptionist\` **Example:** ```json { "next_page_token": "2z0Ov7kngllAbfQi4ZR2eQTb3mFVYQpYAe4", "page_size": 30, "sms_sessions": [ { "last_access_time": "2022-03-25T02:11:27Z", "participants": [ { "display_name": "l api", "owner": { "id": "DnEopNmXQEGU2uvvzjgojw", "type": "user" }, "phone_number": "18108001001", "is_session_owner": true } ], "session_id": "d39fc7e14ef9f2b6453f5f02524d79a2", "session_type": "user" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
SMS session type is invalid. The next page token is invalid or expired. \
\*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId} \
\*\*Error Code:\*\* \`7012\` \
Error retrieving SMS. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List user's SMS sessions in descending order - **Method:** `GET` - **Path:** `/phone/users/{userId}/sms/sessions/sync` - **Tags:** SMS Retrieves the user's SMS sessions in descending order. Mirrors the ZP client behavior with the most recent on top. **Prerequisites:** - Paid account - User-enabled Zoom phone **[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` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*No Content\*\* Successfully listed the SMS sessions. ###### Content-Type: application/json - **`sms_sessions`** `array` **Items:** - **`last_access_time`** `string` — The last send or receive time in UTC. - **`latest_message`** `object` - **`attachments`** `array` **Items:** - **`id`** `string` — The media file ID. - **`type`** `string`, possible values: `"OTHER", "PNG", "GIF", "JPG/JPEG", "AUDIO", "VIDEO"` — The file type: OTHER, PNG, GIF, JPG/JPEG, AUDIO, VIDEO - **`date_time`** `string` — The UTC time the message was created. - **`direction`** `string` — \`In\`(SMS received) or \`Out\`(SMS sent) - **`message`** `string` — The content of the SMS. - **`message_id`** `string` — The message ID. - **`message_type`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The message type: 1 - SMS 2 - MMS 3 - GROUP\_SMS 4 - GROUP\_MMS 5 - SMS\_INTER 6 - MSG\_ON\_NET - **`sender`** `object` - **`phone_number` (required)** `string` — The sender's phone number. - **`display_name`** `string` — The sender's name. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`to_members`** `array` **Items:** - **`phone_number` (required)** `string` — The receiver's phone number. - **`display_name`** `string` — The participant name. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`participants`** `array` — The SMS senders and receivers. **Items:** - **`display_name`** `string` — The SMS sender or receiver name. - **`is_session_owner`** `boolean` — Whether it is the owner of the session. - **`owner`** `object` - **`id`** `string` — The owner ID. - **`type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "sharedLineGroup"` — The owner type: \*\`user\` \*\`callQueue\` \*\`autoReceptionist\` \*\`sharedLineGroup\` - **`phone_number`** `string` — The SMS sender or receiver phone number. - **`session_id`** `string` — The SMS session ID. - **`session_type`** `string` — The session type. The value for this field can be one of the following: \`user\` \`call\_queue\` \`auto\_receptionist\` - **`unread_message_count`** `integer` — The number of unread messages. - **`sync_token`** `string` — The sync token for a backward (\`BSync\`) or forward (\`ISync\`) sync. **Example:** ```json { "sms_sessions": [ { "last_access_time": "2022-03-25T02:11:27Z", "latest_message": { "attachments": [ { "id": "ttllslww", "type": "GIF" } ], "date_time": "2022-03-25T02:11:27Z", "direction": "Out", "message": "hello", "message_id": "cfc07047-123e-4097-91d4-ac2635d646af", "message_type": 6, "sender": { "display_name": "usersubsetting0001@testapi.com", "owner": { "id": "DnEopNmXQEGU2uvvzjgojw", "type": "user" }, "phone_number": "+18108001001" }, "to_members": [ { "display_name": "test api", "owner": { "id": "QOFvOvk7SJeOR2VBfL79_g", "type": "user" }, "phone_number": "+13522348840" } ] }, "participants": [ { "display_name": "usersubsetting0001@testapi.com", "owner": { "id": "QOFvOvk7SJeOR2VBfL79_g", "type": "user" }, "phone_number": "+13522348840", "is_session_owner": true } ], "session_id": "67e261d9eefb2f87dc8193b4c2aeb1d8", "session_type": "user", "unread_message_count": 125 } ], "sync_token": "TVR5cXB2b2dmSl8xNjIxNTc0ODQ0MDY3XzE2NDgxNzQyODcwMDk=" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
SMS session type is invalid. \
\*\*Error Code:\*\* \`300\` \
Invalid user id.\
User does not exist. \
\*\*Error Code:\*\* \`7035\` \
The number of new records exceeds the sync count. Please resync with the \`FSync\` method. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`300\` \
The sync token is invalid or expired. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId} \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List SMS campaigns ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/sms_campaigns` - **Tags:** SMS Campaign Returns a list of all SMS campaigns in a Zoom account. **Prerequisites** - A Pro or higher account plan - A Zoom Phone license **[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:list_sms_campaigns:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* SMS campaign listed successfully. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `integer`, default: `30` — The number of records returned within a single API call. - **`sms_campaigns`** `array` **Items:** - **`brand`** `object` — The business information from Zoom account. - **`id`** `string` — The brand ID. - **`name`** `string` — The brand name. - **`display_name`** `string` — The display name for the SMS campaign. - **`id`** `string` — The campaign ID. - **`status`** `string`, possible values: `"draft", "active", "expired", "pending", "declined", "--"` — The status of the SMS campaign. Returns \`--\` if the campaign is in an exception status. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "next_page_token": "bkOcmnm6mn6ioYAi10BcgRiEL38WzAo6jP2", "page_size": 30, "sms_campaigns": [ { "id": "C-BlVwSdjvS3WXk5gzfIQFfQ", "display_name": "Test SMS Campaign", "status": "active", "brand": { "id": "B-c3AN66d_Q4mrQFNUaW-G2w", "name": "Test Campaign" } } ], "total_records": 1 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get an SMS campaign ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/sms_campaigns/{smsCampaignId}` - **Tags:** SMS Campaign Returns a specific SMS campaign. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* SMS campaign details retrieved successfully. ###### Content-Type: application/json - **`auto_renew`** `boolean` — 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. - **`brand`** `object` — The business information from Zoom account. - **`id`** `string` — The brand ID. - **`name`** `string` — The brand name. - **`categories_fit`** `boolean` — Whether \*all\* customer-facing messages fit into the categories \`Account Notifications\`, \`Customer Care\`, \`Delivery Notifications\`, \`Marketing\`, and \`Public Service Announcements\`. - **`content_type`** `array` — The message's content type. **Items:** `string`, possible values: `"urlLink", "phoneNumber", "ageGated", "lending"` - **`create_time`** `string` — The creation time of the campaign. - **`display_name`** `string` — The display name for the SMS campaign. - **`id`** `string` — The campaign ID. - **`phone_numbers`** `array` — Assigned phone numbers. **Items:** - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number that is assigned to the SMS campaign. - **`sample_message_1`** `string` — The sample message 1. - **`sample_message_2`** `string` — The sample message 2. - **`sample_message_3`** `string` — The sample message 3. - **`sample_message_4`** `string` — The sample message 4. - **`sample_message_5`** `string` — The sample message 5. - **`service_type`** `string`, possible values: `"zoomPhone", "contactCenter"` — Which service the campaign is used for. - **`status`** `string`, possible values: `"draft", "active", "expired", "pending", "declined", "--"` — The status of the SMS campaign. Returns \`--\` if the campaign is in an exception status. - **`use_case`** `string`, possible values: `"lowVolumeMixed"` — What will you be using these campaigns for. **Example:** ```json { "id": "C-BlVwSdjvS3WXk5gzfIQFfQ", "display_name": "Test SMS Campaign", "status": "active", "service_type": "zoomPhone", "brand": { "id": "B-c3AN66d_Q4mrQFNUaW-G2w", "name": "Test Campaign" }, "phone_numbers": [ { "id": "iHE1MQAET2iV85MbfaQmwg", "number": "+18887193005" } ], "auto_renew": true, "create_time": "2022-07-21T02:23:25.000Z", "use_case": "lowVolumeMixed", "categories_fit": true, "content_type": [ "urlLink" ], "sample_message_1": "Test Campaign Message1", "sample_message_2": "Test Campaign Message2", "sample_message_3": "Test Campaign Message3", "sample_message_4": "Test Campaign Message4", "sample_message_5": "Test Campaign Message5" } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign a phone number to SMS campaign ⚠️ Deprecated - **Method:** `POST` - **Path:** `/phone/sms_campaigns/{smsCampaignId}/phone_numbers` - **Tags:** SMS Campaign [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). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:write:sms_campaign_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`contact_number` (required)** `string` — The contact phone number of the employee issuing the letter of authorization required to port in SMS capabilities on the numbers. - **`loa_authorizing_person` (required)** `string` — The name of the employee issuing the letter of authorization required to port in SMS capabilities on the numbers. - **`phone_numbers` (required)** `array` **Items:** - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number in E164 format. - **`title` (required)** `string` — The job Title of the person authorizing and signing the leave of absence. - **`contact_emails`** `string` — The contact email of the employee issuing the letter of authorization required to port in SMS capabilities on the numbers. **Example:** ```json { "phone_numbers": [ { "id": "iHE1MQAET2iV85MbfaQmwg", "number": "+18887193005" } ], "loa_authorizing_person": "Alex Carter", "contact_number": "+12090000000", "title": "Zoom Engineer", "contact_emails": "alex.carter@zoom.us" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Phone numbers assigned successfully. ###### Content-Type: application/json - **`phone_numbers`** `array` — The assigned phone numbers. **Items:** - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number (in E164 format) that is assigned to the SMS campaign. **Example:** ```json { "phone_numbers": [ { "id": "iHE1MQAET2iV85MbfaQmwg", "number": "+18887193005" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The campaign does not exist.\
The campaign is not active.\
Numbers both not available.\
Can not assign campaign to pending number: {0}.\
Can not assign campaign to toll free number: {0}.\
Can not enable sms for BYOC number: {0}.\
Can not assign campaign to pending campaign number.\
The selected number size exceeds campaign capacity.\
The maximum size for phone numbers is 49. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List opt statuses of phone numbers assigned to SMS campaign - **Method:** `GET` - **Path:** `/phone/sms_campaigns/{smsCampaignId}/phone_numbers/opt_status` - **Tags:** SMS Campaign 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` #### Responses ##### Status: 200 The list of opt statuses for each pair of sender's phone number and receiver's phone number. ###### Content-Type: application/json - **`phone_number_campaign_opt_statuses` (required)** `array` — The list of opt statuses for each number pair. **Items:** - **`consumer_phone_number` (required)** `string` — The end user's phone number in E164 format that sends the Opt-in or Opt-out keyword to the Zoom Phone number. - **`opt_status` (required)** `string`, possible values: `"pending", "opt_out", "opt_in"` — The opt status. - **`zoom_phone_user_number` (required)** `string` — The Zoom user's phone number in E164 format that receives the Opt-in or Opt-out keyword from the end user. **Example:** ```json { "phone_number_campaign_opt_statuses": [ { "consumer_phone_number": "+15043449240", "zoom_phone_user_number": "+12094436304", "opt_status": "opt_out" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Size of unique receiver phone numbers cannot exceed the predefined limit. \*\*Error Code:\*\* \`400\` \
Size of unique receiver phone numbers cannot exceed {0}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found Path variable smsCampaignId not found \*\*Error Code:\*\* \`404\` \
Path variable smsCampaignId not found \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update opt statuses of phone numbers assigned to SMS campaign - **Method:** `PATCH` - **Path:** `/phone/sms_campaigns/{smsCampaignId}/phone_numbers/opt_status` - **Tags:** SMS Campaign 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` #### Request Body ##### Content-Type: application/json - **`consumer_phone_number` (required)** `string` — The end user's phone number that sends the Opt-in or Opt-out keyword to the Zoom Phone number. - **`opt_status` (required)** `string`, possible values: `"opt_in", "opt_out"` — The opt status: either \`opt\_in\` or \`opt\_out\`. - **`zoom_phone_user_numbers` (required)** `array` — The Zoom users' phone numbers that receive the Opt-in or Opt-out keyword from the end user. **Items:** `string` **Example:** ```json { "consumer_phone_number": "15043449240", "zoom_phone_user_numbers": [ "12094436304" ], "opt_status": "opt_out" } ``` #### Responses ##### Status: 204 Update opt status for each pair of sender's phone number and receiver's phone number. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Opt status should be either opt\_out or opt\_in. \*\*Error Code:\*\* \`400\` \
Opt status should be either opt\_out or opt\_in. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found Path variable smsCampaignId not found. \*\*Error Code:\*\* \`404\` \
Path variable smsCampaignId not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign a phone number ⚠️ Deprecated - **Method:** `DELETE` - **Path:** `/phone/sms_campaigns/{smsCampaignId}/phone_numbers/{phoneNumberId}` - **Tags:** SMS Campaign [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). Remove the assigned phone number from the campaign. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license - The campaign must have been previously assigned a Zoom Phone number **[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:delete:sms_campaign_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` The phone number has been unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
The brand does not exist. \
\*\*Error Code:\*\* \`400\` \
The campaign does not exist.\
The campaign does not have the number. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List user's opt statuses of phone numbers - **Method:** `GET` - **Path:** `/phone/user/{userId}/sms_campaigns/phone_numbers/opt_status` - **Tags:** SMS Campaign Returns the opt statuses of a user’s phone numbers. For user-level apps, pass the [me](https://developers.zoom.us/docs/api/using-zoom-apis/#the-me-keyword) 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` #### Responses ##### Status: 200 The list of opt statuses for each pair of sender's phone number and receiver's phone number. ###### Content-Type: application/json - **`phone_number_campaign_opt_statuses` (required)** `array` — The list of opt statuses for each number pair. **Items:** - **`consumer_phone_number` (required)** `string` — The end user's phone number in E164 format that sends the Opt-in or Opt-out keyword to the Zoom Phone number. - **`opt_status` (required)** `string`, possible values: `"pending", "opt_out", "opt_in"` — The opt status. - **`zoom_phone_user_number` (required)** `string` — The Zoom user's phone number in E164 format that receives the Opt-in or Opt-out keyword from the end user. - **`opt_in_message`** `string` — 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. - **`opt_in_status`** `integer`, format: `int32`, possible values: `0, 1, 2, 3, 4`, default: `0` — 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. **Example:** ```json { "phone_number_campaign_opt_statuses": [ { "consumer_phone_number": "+120944XXXXX", "zoom_phone_user_number": "+120944XXXXX", "opt_status": "opt_out", "opt_in_status": 0, "opt_in_message": "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." } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Size of unique receiver phone numbers cannot exceed {0}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
User does not exist:{userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List opt statuses of phone numbers assigned to SMS consent - **Method:** `GET` - **Path:** `/phone/sms_consent/{consentId}/phone_numbers/opt_status` - **Tags:** SMS Consent Returns the opt statuses of phone numbers that are assigned to SMS consent. **[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_consent_number_opt_status:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 The list of opt statuses for each pair of sender's phone number and receiver's phone number. ###### Content-Type: application/json - **`phone_number_consent_opt_statuses` (required)** `array` — The list of opt statuses for each number pair. **Items:** - **`consumer_phone_number` (required)** `string` — The end user's phone number in E164 format that sends the Opt-in or Opt-out keyword to the Zoom Phone number. - **`opt_status` (required)** `string`, possible values: `"pending", "opt_out", "opt_in"` — The opt status. - **`zoom_phone_user_number` (required)** `string` — The Zoom user's phone number in E164 format that receives the Opt-in or Opt-out keyword from the end user. **Example:** ```json { "phone_number_consent_opt_statuses": [ { "consumer_phone_number": "+15043449240", "zoom_phone_user_number": "+12094436304", "opt_status": "opt_out" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Size of unique receiver phone numbers cannot exceed the predefined limit. \
\*\*Error Code:\*\* \`300\` \
Validation Failed. { "field": "zoom\_phone\_user\_numbers", "message": "Missing field." } \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
The consent does not exist \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List setting templates - **Method:** `GET` - **Path:** `/phone/setting_templates` - **Tags:** Setting Templates Gets a list of all the created phone template settings. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:list_setting_templates:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` OK ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes - **`page_size`** `integer` — The number of records returned within a single API call. The default is \*\*30\*\* and the maximum is \*\*300\*\*. - **`templates`** `array` **Items:** - **`description`** `string` — Template description. - **`id`** `string` — Unique identifier of the template. - **`name`** `string` — Template name. - **`type`** `string`, possible values: `"user", "group", "autReceptionist", "commonArea", "zr", "interop"` — Template type. The value of this field can be one of the following: \* \`user\` \* \`group\` \* \`autReceptionist\` \* \`commonArea\` \* \`zr\` \* \`interop\` - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "next_page_token": "nav48KOj42vYPSG4f0cCdT575bZ980did22", "page_size": 30, "templates": [ { "description": "Main site user template", "id": "2kFqiqSlS5udzWB5QqMiNg", "name": "user_template", "type": "user" } ], "total_records": 2 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Multiple Sites option has been disabled. Enable it and try again. ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a setting template - **Method:** `POST` - **Path:** `/phone/setting_templates` - **Tags:** Setting Templates Creates a Zoom Phone setting template for an account. After creating a phone template, the defined settings will become the default settings for an account. **Prerequisites:** - A Business or enterprise Zoom account - A Zoom Phone license **[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:write:setting_template:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`name` (required)** `string` — The name of the template. - **`type` (required)** `string` — The type of template. Values include \`user\`. - **`description`** `string` — A description of the template. - **`site_id`** `string` — The unique identifier of the site. It's required only when multiple sites are enabled. See \[Managing multiple sites]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) for details. **Example:** ```json { "description": "Main site user template", "name": "user template", "site_id": "SQv52YtkRLC2dwrDdYtGsA", "type": "user" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Created Successfully. ###### Content-Type: application/json - **`description`** `string` — The template description. - **`id`** `string` — The template ID. - **`name`** `string` — The template name. - **`type`** `string` — The type of template. Values include \`user\`. **Example:** ```json { "description": "Main site user template", "id": "2kFqiqSlS5udzWB5QqMiNg", "name": "user template", "type": "user" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation failed. You provided an incorrect value for the template type. Provide a valid value and try again. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get setting template details - **Method:** `GET` - **Path:** `/phone/setting_templates/{templateId}` - **Tags:** Setting Templates Returns information about an account's phone template. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:setting_template:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` OK ###### Content-Type: application/json - **`description`** `string` — The description of the template. - **`id`** `string` — This field specifies the template ID. - **`name`** `string` — This field specifies the name of the template. - **`policy`** `object` - **`ad_hoc_call_recording`** `object` - **`enable`** `boolean` — Whether to allow current extension to record and save calls in the cloud. - **`recording_start_prompt`** `boolean` — Whether to play a prompt to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether to allow call recording transcription. - **`auto_call_recording`** `object` - **`enable`** `boolean` — Whether to enable automatic call recording. - **`inbound_audio_notification`** `object` - **`recording_start_prompt`** `boolean` — Whether to play a prompt to call participants when the recording has started for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`outbound_audio_notification`** `object` - **`recording_start_prompt`** `boolean` — Whether to play a prompt to call participants when the recording has started for outbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`recording_calls`** `string` — Values: inbound, outbound, both. - **`recording_start_prompt`** `boolean` — Whether to play a prompt to call participants when the recording has started. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` to operate inbound and outbound prompt separately. \Note:\ \* If customers opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\` and \`inbound\_audio\_notification.recording\_start\_prompt\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\` will be also updated. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` will be also updated. - **`recording_transcription`** `boolean` — Whether to allow call recording transcription. - **`call_forwarding`** `object` - **`call_forwarding_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` — Whether to allow users to forward their calls to other numbers. - **`call_overflow`** `object` - **`call_overflow_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` — Whether to allow users to forward their calls to other numbers when a call is not answered. - **`sms`** `object` - **`enable`** `boolean` — Whether to allow the user to send and receive messages. - **`international_sms`** `boolean` - **`voicemail`** `object` - **`allow_transcription`** `boolean` — Whether to allow the voicemail transcription. - **`enable`** `boolean` — Whether to allow the current extension to access, receive, or share voicemail. - **`profile`** `object` - **`area_code`** `string` — The area code from which the phone account was created. - **`country`** `string` — The name of the country where the template was created. - **`type`** `string`, possible values: `"user", "group", "autoReceptionist", "commonArea", "zr", "interop"` — The type of template being queried. Values: \`user\`, \`group\`, \`auto receptionist\` \`common area\`,\`zr\`, \`interop\`. - **`user_settings`** `object` - **`audio_prompt_language`** `string` — The audio prompt language code. American English: \`en-US\` British English: \`en-GB\` Espa\ñol americano: \`es-US\` Fran\çais canadien: \`fr-CA\` Dansk: \`da-DK\` Deutsch: \`de-DE\` Espa\ñol: \`es-ES\` Fran\çais: \`fr-FR\` Italiano: \`it-IT\` Nederlands: \`nl-NL\` Portugues portugal: \`pt-PT\` Japanese: \`ja-JP\` Korean: \`ko-KO\` Portugues brasil: \`pt-BR\` Chinese: \`zh-CN\` Taiwanese: \`zh-TW\` - **`block_calls_without_caller_id`** `boolean` — The block calls without caller ID. - **`call_handling`** `object` - **`business_hours`** `object` - **`business_hour_action`** `integer`, possible values: `0, 1, 9, 11, 26, 50` — When a call is not answered: 0-Forward to a voicemail; 1-Play a message, then disconnect; 9-Disconnect; 11-Forward to an external number; 26-Forward to External Contacts; 50-Forward to another extension - **`busy_action`** `integer`, possible values: `0, 1, 11, 12, 13, 26, 50` — When the user is busy on another call: 0-Forward to a voicemail; 1-Play a message, then disconnect; 11-Forward to an external number; 12-Call waiting; 13-Play a busy signal; 26-Forward to External Contacts; 50-Forward to another extension. - **`busy_connect_operator`** `object` — Whether to allow callers to press 0 to reach an operator or press 1 to leave a message, or allow neither of these options. - **`allow_caller_check_voicemail`** `boolean` — Whether to allow callers to check their voicemail. Make available only when the \`busy\_action\` is \`0\`. - **`enable`** `boolean` — Whether to enable connect to operator. - **`external_number`** `object` — The forwarding external number when a call is not answered. Make available only when the \`busy\_action\` is \`11\`. - **`description`** `string` — The description for the phone number. - **`number`** `string` — The phone number in E164 format. - **`id`** `string` — The phone extension ID of the user, zoomRoom, commonAreaPhone, autoReceptionist, callQueue, or sharedLineGroup. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. It's available only when the \`busy\_action\` is \`0\` or \`50\`. - **`require_press_1_before_connecting`** `boolean` — Whether to require pressing 1 before connecting the call. Make available only when the \`busy\_action\` is \`11\` or '26'. - **`type`** `string`, possible values: `"user", "zoomRoom", "commonAreaPhone", "autoReceptionist", "callQueue", "sharedLineGroup"` — Values: 1-user, 2-callQueue, 3-autoReceptionist, 4-commonAreaPhone, 5-zoomRoom, 7-sharedLineGroup - **`connect_to_operator`** `object` — Whether to allow callers to press zero to reach an operator, press one to leave a message, or allow neither of these options. - **`allow_caller_check_voicemail`** `boolean` — Whether to allow callers to check their voicemail. Make available only when the \`business\_hour\_action\` is \`0\`. - **`enable`** `boolean` — Whether to enable connect to operator. - **`external_number`** `object` — The forwarding external number when a call is not answered. Make available only when the \`business\_hour\_action\` is \`11\`. - **`description`** `string` — The description for the phone number. - **`number`** `string` — The phone number in E164 format. - **`id`** `string` — The phone extension ID of the user, zoomRoom, commonArea, autoReceptionist, callQueue or sharedLineGroup. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. Make available only when the \`business\_hour\_action\` is \`0\` or \`50\`. - **`require_press_1_before_connecting`** `boolean` — Whether to require pressing 1 before connecting the call. Make available only when the \`business\_hour\_action\` is \`11\` or '26'. - **`type`** `string`, possible values: `"user", "zoomRoom", "commonArea", "autoReceptionist", "callQueue", "sharedLineGroup"` — Values: 1-user, 2-callQueue, 3-autoReceptionist, 4-commonArea, 5-zoomRoom, 7-sharedLineGroup - **`custom_hours`** `array` **Items:** - **`from`** `string`, format: `time` — Values: hh:mm - **`to`** `string`, format: `time` — Values: hh:mm - **`type`** `integer`, possible values: `1, 2` — Values: 1-24 Hours, 2-customized hours - **`weekday`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — Values: 1-7 Sun-Sat - **`ring_type`** `string` — The call handling ring mode: 0-Simultaneous, 1-Sequential - **`ringing_duration`** `string`, possible values: `"10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60"` — Ringing duration for each device in seconds. Values: 10,15,20,25,30,35,40,45,50,55,60 - **`type`** `integer`, possible values: `1, 2` — Values: 1-24 Hours, 7 Days a Week; 2-Custom Hours - **`close_hours`** `object` - **`busy_action`** `integer`, possible values: `0, 1, 11, 12, 13, 26, 50` — The action to take when the user is busy on another call: 0-Forward to a voicemail; 1-Play a message, then disconnect; 11-Forward to an external number; 12-Call waiting; 13-Play a busy signal; 26-Forward to External Contacts; 50-Forward to another extension . - **`busy_connect_operator`** `object` — Whether to allow callers to press 0 to reach an operator or press 1 to leave a message, or allow neither of these options. - **`allow_caller_check_voicemail`** `boolean` — Whether to allow callers to check their voicemail. Make available only when the \`busy\_action\` is \`0\`. - **`enable`** `boolean` - **`external_number`** `object` — The forwarding external number when a call is not answered. It's available only when the \`busy\_action\` is \`11\`. - **`description`** `string` — The description for the phone number. - **`number`** `string` — The phone number in E164 format. - **`id`** `string` — The phone extension ID of the user, zoomRoom, commonArea, autoReceptionist, callQueue, or sharedLineGroup. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. Make available only when the \`busy\_action\` is \`0\` or \`50\`. - **`require_press_1_before_connecting`** `boolean` — Whether to require pressing one before connecting the call. Make available only when the \`busy\_action\` is \`11\` or '26'. - **`type`** `string`, possible values: `"user", "zoomRoom", "commonArea", "autoReceptionist", "callQueue", "sharedLineGroup"` — The Values: 1-user, 2-callQueue, 3-autoReceptionist, 4-commonArea, 5-zoomRoom, 7-sharedLineGroup. - **`close_hour_action`** `integer`, possible values: `0, 1, 9, 11, 26, 50` — The action to take when a call is not answered: 0-Forward to a voicemail; 1-Play a message, then disconnect; 9-Disconnect; 11-Forward to an external number; 26-Forward to External Contacts; 50-Forward to another extension - **`connect_to_operator`** `object` — Whether to allow callers to press zero to reach an operator or press One to leave a message, or allow neither of these options. - **`allow_caller_check_voicemail`** `boolean` — Whether to allow callers to check their voicemail. Make available only when the \`close\_hour\_action\` is \`0\`. - **`enable`** `boolean` - **`external_number`** `object` — The forwarding external number when a call is not answered. Make available only when the \`close\_hour\_action\` is \`11\`. - **`description`** `string` — The description for the phone number. - **`number`** `string` — The phone number in E164 format. - **`id`** `string` — The phone extension ID of the user, zoomRoom, commonAreaPhone, autoReceptionist, callQueue, or sharedLineGroup. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. Make available only when the \`close\_hour\_action\` is \`0\` or \`50\`. - **`require_press_1_before_connecting`** `boolean` — Whether to require pressing 1 before connecting the call. Make available only when the \`close\_hour\_action\` is \`11\` or '26'. - **`type`** `string`, possible values: `"user", "zoomRoom", "commonAreaPhone", "autoReceptionist", "callQueue", "sharedLineGroup"` — Values: 1-user, 2-callQueue, 3-autoReceptionist, 4-commonAreaPhone, 5-zoomRoom, 7-sharedLineGroup - **`max_wait_time`** `string`, possible values: `"10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60"` — The maximum wait time in seconds. Values: 10,15,20,25,30,35,40,45,50,55,60. - **`desk_phone`** `object` - **`pin_code`** `string` — The pin code. - **`hold_music`** `string`, possible values: `"default", "disable"` — The value of this field can be either \`default\` or \`disable\`. \* \`default\`: This means that the hold music can be set using the \[audio library]\(https\://support.zoom.us/hc/en-us/articles/360028212652-Using-the-audio-library-to-customize-greetings-and-hold-music). \* \`disable\`: This means that the hold music is disabled. **Example:** ```json { "description": "Main site user template", "id": "2kFqiqSlS5udzWB5QqMiNg", "name": "user template", "policy": { "ad_hoc_call_recording": { "enable": true, "recording_start_prompt": true, "recording_transcription": true }, "auto_call_recording": { "enable": true, "recording_calls": "inbound", "recording_transcription": true, "inbound_audio_notification": { "recording_start_prompt": true }, "outbound_audio_notification": { "recording_start_prompt": true } }, "sms": { "enable": true, "international_sms": true }, "voicemail": { "allow_transcription": true, "enable": true }, "call_forwarding": { "enable": true, "call_forwarding_type": 1 }, "call_overflow": { "enable": true, "call_overflow_type": 1 } }, "profile": { "area_code": "1", "country": "US" }, "type": "user", "user_settings": { "audio_prompt_language": "en-US", "block_calls_without_caller_id": false, "call_handling": { "business_hours": { "business_hour_action": 50, "connect_to_operator": { "enable": true, "id": "fWOgOALdT1ei4vjXK-QYsA", "type": "user", "external_number": { "number": "+12055433924", "description": "API test forwarding to number" }, "play_callee_voicemail_greeting": true, "require_press_1_before_connecting": true, "allow_caller_check_voicemail": true }, "busy_action": 50, "busy_connect_operator": { "enable": true, "id": "fWOgOALdT1ei4vjXK-QYsA", "type": "user", "external_number": { "number": "+12055433924", "description": "API test forwarding to number" }, "play_callee_voicemail_greeting": true, "require_press_1_before_connecting": true, "allow_caller_check_voicemail": true }, "custom_hours": [ { "from": "09:00", "to": "18:00", "type": 2, "weekday": 2 } ], "ring_type": "simultaneous", "ringing_duration": "15", "type": 2 }, "close_hours": { "close_hour_action": 50, "connect_to_operator": { "enable": true, "id": "fWOgOALdT1ei4vjXK-QYsA", "type": "user", "external_number": { "number": "+12055433924", "description": "API test forwarding to number" }, "play_callee_voicemail_greeting": true, "require_press_1_before_connecting": true, "allow_caller_check_voicemail": true }, "busy_action": 50, "busy_connect_operator": { "enable": true, "id": "fWOgOALdT1ei4vjXK-QYsA", "type": "user", "external_number": { "number": "+12055433924", "description": "API test forwarding to number" }, "play_callee_voicemail_greeting": true, "require_press_1_before_connecting": true, "allow_caller_check_voicemail": true }, "max_wait_time": "30" } }, "desk_phone": { "pin_code": "0995" }, "hold_music": "default" } } ``` ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a setting template - **Method:** `PATCH` - **Path:** `/phone/setting_templates/{templateId}` - **Tags:** Setting Templates Updates or modifies a phone template's settings. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:setting_template:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`description`** `string` — The description of the template. - **`name`** `string` — This field specifies the name of the template. - **`policy`** `object` - **`ad_hoc_call_recording`** `object` - **`enable`** `boolean` — Whether to allow the current extension to record and save calls in the cloud. - **`recording_start_prompt`** `boolean` — Whether to play a prompt to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether to allow call recording transcription. - **`auto_call_recording`** `object` - **`enable`** `boolean` — The automatic call recording. - **`inbound_audio_notification`** `object` - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for the inbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`outbound_audio_notification`** `object` - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for the outbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — Values: inbound, outbound, both. - **`recording_start_prompt`** `boolean` — Whether to play a prompt to call participants when the recording has started. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` to operate inbound and outbound prompt separately. \Note:\ \* if customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\` and \`inbound\_audio\_notification.recording\_start\_prompt\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\` will be also updated. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. when the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` will be also updated. - **`recording_transcription`** `boolean` — Whether to allow call recording transcription. - **`call_forwarding`** `object` - **`call_forwarding_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` — Whether to allow users to forward their calls to other numbers. - **`call_overflow`** `object` - **`call_overflow_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` — Whether to allow users to forward their calls to other numbers when a call is not answered. - **`sms`** `object` - **`enable`** `boolean` — Whether to allow user to send and receive messages. - **`international_sms`** `boolean` — Whether or not the SMS is international. - **`voicemail`** `object` - **`allow_transcription`** `boolean` — Whether to allow voicemail transcription. - **`enable`** `boolean` — Whether to allow the current extension to access, receive, or share voicemail. - **`profile`** `object` - **`area_code`** `string` — The area code from which the phone account was created. - **`country`** `string` — Name of the country where the template was created. - **`user_settings`** `object` - **`audio_prompt_language`** `string` — Audio prompt language code. American English: \`en-US\` British English: \`en-GB\` Espa\ñol americano: \`es-US\` Fran\çais canadien: \`fr-CA\` Dansk: \`da-DK\` Deutsch: \`de-DE\` Espa\ñol: \`es-ES\` Fran\çais: \`fr-FR\` Italiano: \`it-IT\` Nederlands: \`nl-NL\` Portugues portugal: \`pt-PT\` Japanese: \`ja-JP\` Korean: \`ko-KO\` Portugues brasil: \`pt-BR\` Chinese: \`zh-CN\` Taiwanese: \`zh-TW\` - **`block_calls_without_caller_id`** `boolean` — The block calls without caller ID. - **`call_handling`** `object` - **`business_hours`** `object` - **`business_hour_action`** `integer`, possible values: `0, 1, 9, 11, 26, 50` — When a call is not answered: 0-Forward to a voicemail; 1-Play a message, then disconnect; 9-Disconnect; 11-Forward to an external number; 26-Forward to External Contacts; 50-Forward to another extension - **`busy_action`** `integer`, possible values: `0, 1, 11, 12, 13, 26, 50` — When the user is busy on another call: 0-Forward to a voicemail; 1-Play a message, then disconnect; 11-Forward to an external number; 12-Call waiting; 13-Play a busy signal; 26-Forward to External Contacts; 50-Forward to another extension. - **`busy_connect_operator`** `object` — Whether to allow callers to press zero to reach an operator or press one to leave a message, or allow neither of these options. - **`allow_caller_check_voicemail`** `boolean` — Whether to allow callers to check their voicemail. Make available only when the \`busy\_action\` is \`0\`. - **`enable`** `boolean` — Whether to enable a connection to an operator. It requires the user to input the \`ID\` if you want to enable. It's available only when the \`busy\_action\` is \`0\`. - **`external_number`** `object` — The forwarding external number when a call is not answered. Make available only when the \`busy\_action\` is \`11\`. - **`description`** `string` — The description for the phone number. - **`number`** `string` — The phone number in E164 format. - **`id`** `string` — The extension ID of user, zoomRoom, commonArea, autoReceptionist, callQueue, or sharedLineGroup. It's available only when the \`busy\_action\` is \`0\`, \`26\` or \`50\`. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. Make available only when the \`busy\_action\` is \`0\` or \`50\`. - **`require_press_1_before_connecting`** `boolean` — Whether to require pressing 1 before connecting the call. Make available only when the \`busy\_action\` is \`11\` or '26'. - **`connect_to_operator`** `object` — Whether to allow callers to press zero to reach an operator or press One to leave a message, or allow neither of these options. - **`allow_caller_check_voicemail`** `boolean` — Whether to allow callers to check their voicemail. Make available only when the \`business\_hour\_action\` is \`0\`. - **`enable`** `boolean` — Whether to enable connect to the operator. You must input the \`id\` if you want to enable. It's available only when the \`business\_hour\_action\` is \`0\`. - **`external_number`** `object` — The forwarding external number when a call is not answered. Available only when the \`business\_hour\_action\` is \`11\` - **`description`** `string` — The description for the phone number. - **`number`** `string` — The phone number in E164 format. - **`id`** `string` — The extension ID of user, zoomRoom, commonAreaPhone, autoReceptionist, callQueue, or sharedLineGroup. It's available only when the \`business\_hour\_action\` is \`0\` or \`50\`. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. Make available only when the \`business\_hour\_action\` is \`0\` or \`50\`. - **`require_press_1_before_connecting`** `boolean` — Whether to require pressing 1 before connecting the call. Make available only when the \`business\_hour\_action\` is \`11\` or '26'. - **`custom_hours`** `array` **Items:** - **`from`** `string`, format: `time` — Values: hh:mm - **`to`** `string`, format: `time` — Values: hh:mm - **`type`** `integer`, possible values: `1, 2` — Values: 1-24 Hours, 2-customized hours - **`weekday`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — Values: 1-7 sun-sat - **`ring_type`** `string` — The call handling ring mode: 0-Simultaneous, 1-Sequential - **`ringing_duration`** `string`, possible values: `"10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60"` — Ringing duration for each device, in seconds. Values: 10,15,20,25,30,35,40,45,50,55,60 - **`type`** `integer`, possible values: `1, 2` — Values: 1-24 Hours, 7 Days a Week; 2-Custom Hours - **`close_hours`** `object` - **`busy_action`** `integer`, possible values: `0, 1, 11, 12, 13, 26, 50` — The action to take when a call is not answered: 0-Forward to a voicemail; 1-Play a message, then disconnect; 11-Forward to an external number; 12-Call waiting; 13-Play a busy signal; 26-Forward to External Contacts; 50-Forward to another extension . - **`busy_connect_operator`** `object` — Whether to allow callers to press 0 to reach an operator or press 1 to leave a message, or allow neither of these options. - **`allow_caller_check_voicemail`** `boolean` — Whether to allow callers to check their voicemail. Make available only when the \`busy\_action\` is \`0\`. - **`enable`** `boolean` — Whether to enable a connection to an operator. It requires the user to input the \`ID\` if you want to enable. It's available only when the \`busy\_action\` is \`0\`. - **`external_number`** `object` — The forwarding external number when a call is not answered. It's available only when the \`busy\_action\` is \`11\`. - **`description`** `string` — The description for the phone number. - **`number`** `string` — The phone number in E164 format. - **`id`** `string` — The extension ID of user, zoomRoom, commonArea, autoReceptionist, callQueue, or sharedLineGroup. It's available only when the \`busy\_action\` is \`0\`, \`26\` or \`50\`. - **`play_callee_voicemail_greeting`** `boolean` — Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. Make available only when the \`busy\_action\` is \`0\` or \`50\`. - **`require_press_1_before_connecting`** `boolean` — Whether to require pressing 1 before connecting the call. Mkae available only when the \`busy\_action\` is \`11\` or '26'. - **`close_hour_action`** `integer`, possible values: `0, 1, 9, 11, 26, 50` — The action to take when a call is not answered: 0-Forward to a voicemail; 1-Play a message, then disconnect; 9-Disconnect; 11-Forward to an external number; 26-Forward to External Contacts; 50-Forward to another extension - **`connect_to_operator`** `object` — Whether to allow callers to press Zero to reach an operator or press One to leave a message, or allow neither of these options. - **`allow_caller_check_voicemail`** `boolean` — Whether to allow callers to check their voicemail. Make available only when the \`close\_hour\_action\` is \`0\`. - **`enable`** `boolean` — Whether to enable connect to the operator, and you must input the \`id\` if you want to enable. Available only when the \`close\_hour\_action\` is \`0\`. - **`external_number`** `object` — The forwarding external number when a call is not answered. Available only when the \`close\_hour\_action\` is \`11\` - **`description`** `string` — The description for the phone number. - **`number`** `string` — The phone number in E164 format. - **`id`** `string` — The extension ID of user, zoomRoom, commonAreaPhone, autoReceptionist, callQueue, or sharedLineGroup. It's available only when the \`close\_hour\_action\` is \`0\` or \`50\` - **`play_callee_voicemail_greeting`** `boolean` — Whether to play the callee's voicemail greeting when the caller reaches the end of forwarding sequence. Make available only when the \`close\_hour\_action\` is \`0\` or \`50\`. - **`require_press_1_before_connecting`** `boolean` — Whether to require pressing 1 before connecting the call. Make available only when the \`close\_hour\_action\` is \`11\` or '26'. - **`max_wait_time`** `string`, possible values: `"10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60"` — The maximum wait time, in seconds. Values: 10,15,20,25,30,35,40,45,50,55,60 - **`desk_phone`** `object` - **`pin_code`** `string` — The pin code. - **`hold_music`** `string`, possible values: `"default", "disable"` — The value of this field can be either \`default\` or \`disable\`. \* \`default\`: This means that the hold music can be set using the \[audio library]\(https\://support.zoom.us/hc/en-us/articles/360028212652-Using-the-audio-library-to-customize-greetings-and-hold-music). \* \`disable\`: This means that the hold music is disabled. **Example:** ```json { "description": "Main site user template", "name": "user template", "policy": { "ad_hoc_call_recording": { "enable": true, "recording_start_prompt": true, "recording_transcription": true }, "auto_call_recording": { "enable": true, "recording_calls": "outbound", "recording_transcription": true, "inbound_audio_notification": { "recording_start_prompt": true }, "outbound_audio_notification": { "recording_start_prompt": true } }, "sms": { "enable": true, "international_sms": true }, "voicemail": { "allow_transcription": true, "enable": true }, "call_forwarding": { "enable": true, "call_forwarding_type": 1 }, "call_overflow": { "enable": true, "call_overflow_type": 1 } }, "profile": { "area_code": "01", "country": "US" }, "user_settings": { "audio_prompt_language": "ja-JP", "block_calls_without_caller_id": false, "call_handling": { "business_hours": { "business_hour_action": 50, "connect_to_operator": { "enable": true, "id": "fWOgOALdT1ei4vjXK-QYsA", "external_number": { "number": "+12055433924", "description": "API test forwarding to number" }, "play_callee_voicemail_greeting": true, "require_press_1_before_connecting": true, "allow_caller_check_voicemail": true }, "busy_action": 50, "busy_connect_operator": { "enable": true, "id": "fWOgOALdT1ei4vjXK-QYsA", "external_number": { "number": "+12055433924", "description": "API test forwarding to number" }, "play_callee_voicemail_greeting": true, "require_press_1_before_connecting": true, "allow_caller_check_voicemail": true }, "custom_hours": [ { "from": "09:30", "to": "22:00", "type": 2, "weekday": 1 } ], "ring_type": "simultaneous", "ringing_duration": "15", "type": 2 }, "close_hours": { "close_hour_action": 50, "connect_to_operator": { "enable": true, "id": "fWOgOALdT1ei4vjXK-QYsA", "external_number": { "number": "+12055433924", "description": "API test forwarding to number" }, "play_callee_voicemail_greeting": true, "require_press_1_before_connecting": true, "allow_caller_check_voicemail": true }, "busy_action": 50, "busy_connect_operator": { "enable": true, "id": "fWOgOALdT1ei4vjXK-QYsA", "external_number": { "number": "+12055433924", "description": "API test forwarding to number" }, "play_callee_voicemail_greeting": true, "require_press_1_before_connecting": true, "allow_caller_check_voicemail": true }, "max_wait_time": "20" } }, "desk_phone": { "pin_code": "0995" }, "hold_music": "disable" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content. Request was successful. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
The country code you entered is invalid. Provide a valid country code and try again. The area code you entered is invalid. Provide a valid area code with a length between 0 to 6 digits and try again. The value you entered for the audio prompt language code is invalid. PIN code could only include numbers. Invalid PIN code. PIN code must be {0} digits long. Invalid PIN code. PIN code must be {0} to {1} digits long. Invalid PIN code. Your PIN code must not be the same as the extension number. Invalid PIN code. The PIN code must not contain a group of repeated digits. PIN code cannot be an ascending or descending group of digits. Connect to operator type error. You provided an invalid value for call handling ring type. The value of this field must either be “simultaneous” or “sequential”. You provided an invalid value for business hours type field. The value of this field must either be 1 or 2. You provided an invalid value for the business hours action field. You provided an invalid value for the close hours action field. \
\*\*Error Code:\*\* \`13800\` \
You do not enable OP flag named 'Enable Caller Based Consent Options', please using same value to update 'inbound\_audio\_notification.recording\_start\_prompt' and 'outbound\_audio\_notification.recording\_start\_prompt'. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get account policy details - **Method:** `GET` - **Path:** `/phone/policies/{policyType}` - **Tags:** Settings Returns the account policy details. **Prerequisites** - Pro or higher account plan with Zoom phone license **[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:policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Get account policy details successfully. ###### Content-Type: application/json **One of:** - **`allow_emergency_calls`** `object` — The account-level settings for whether emergency calls are allowed for users and from specific device types. - **`allow_emergency_calls_from_clients`** `boolean` — Whether users are allowed to make emergency calls from zoom clients. - **`allow_emergency_calls_from_deskphones`** `boolean` — Whether users are allowed to make emergency calls from desk phones. - **`enable`** `boolean` — Whether users in this account are allowed to make emergency calls. - **`locked`** `boolean` — Whether this setting is locked by the account administrator and cannot be overridden at lower levels (user\_group, site, or extension). - **`locked_by`** `string`, possible values: `"invalid", "account"` — This field specifies the configuration level that has enforced the lock. This indicates where the setting was originally locked and cannot be overridden. **Example:** ```json { "allow_emergency_calls": { "enable": true, "locked": true, "locked_by": "account", "allow_emergency_calls_from_clients": true, "allow_emergency_calls_from_deskphones": true } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Invalid value for parameter 'policyType'. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update account policy - **Method:** `PATCH` - **Path:** `/phone/policies/{policyType}` - **Tags:** Settings Updates the account's [Zoom Phone](https://support.zoom.us/hc/en-us/categories/360001370051-Zoom-Phone) policy. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[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:policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `RESOURCE-INTENSIVE` #### Request Body ##### Content-Type: application/json **One of:** - **`allow_emergency_calls`** `object` — THe account-level settings for whether emergency calls are allowed for users and from specific device types. - **`allow_emergency_calls_from_clients`** `boolean` — Whether users are allowed to make emergency calls from zoom clients. - **`allow_emergency_calls_from_deskphones`** `boolean` — Whether users are allowed to make emergency calls from desk phones. - **`enable`** `boolean` — Whether users in this account are allowed to make emergency calls. - **`locked`** `boolean` — Whether this setting is locked by the account administrator and cannot be overridden at lower levels (user\_group, site, or extension). **Example:** ```json { "allow_emergency_calls": { "enable": true, "locked": true, "allow_emergency_calls_from_clients": true, "allow_emergency_calls_from_deskphones": true } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Account policy updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Invalid value for parameter 'policyType'. \
\*\*Error Code:\*\* \`400\` \
The 'reset' field is not allowed at the account level. \
\*\*Error Code:\*\* \`400\` \
Lock and reset operations cannot be performed simultaneously. \
\*\*Error Code:\*\* \`400\` \
Reset cannot be combined with other operations. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List ported numbers ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/ported_numbers/orders` - **Tags:** Settings Use this API to list ported numbers in a Zoom account. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_peering:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_ported_numbers:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Ported Phone numbers listed successfully. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned within a single API call. - **`ported_numbers`** `array` **Items:** - **`numbers`** `array` — The ported numbers. **Items:** `string` - **`order_id`** `string` — The ported numbers' order ID. - **`replacing_numbers`** `array` — The ported numbers' replacement numbers. **Items:** - **`source_number`** `string` — The source number. - **`target_number`** `string` — The replaced number. - **`status`** `string`, possible values: `"Not_Submitted", "Waiting", "Processing", "Successfully", "Rejected", "Canceled", "FOC"` — The ported numbers' status. - **`submission_date_time`** `string` — The time ported numbers were submitted (format: 'yyyy-MM-ddThh:dd:ssZ'). - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42", "page_size": 30, "ported_numbers": [ { "numbers": [ "+12058945752" ], "order_id": "2021080307332974349", "replacing_numbers": [ { "source_number": "+12058945752", "target_number": "+12058945755" } ], "status": "Canceled", "submission_date_time": "2021-08-03T07:33:29Z" } ], "total_records": 2 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get ported numbers details ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/ported_numbers/orders/{orderId}` - **Tags:** Settings Returns details on the ported numbers by specifying `order_id`. **Prerequisites:** - A Pro or higher account plan - A Zoom phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_peering:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:ported_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Ported numbers details retrieved successfully. ###### Content-Type: application/json - **`contact_emails`** `string` — Contact emails of transferring numbers. - **`contact_number`** `string` — Contact numbers for transferring numbers. - **`isp`** `string` — Ported numbers' ISP. - **`numbers`** `array` — Ported numbers. **Items:** `string` - **`order_id`** `string` — Ported numbers' order ID. - **`original_billing_info`** `object` — Ported numbers' original billing info. - **`account_number`** `string` - **`address`** `object` - **`city`** `string` - **`country`** `string` - **`house_number`** `string` - **`state_code`** `string` - **`street_name`** `string` - **`zip`** `string` - **`authorizing_person`** `string` - **`billing_telephone_number`** `string` - **`company`** `string` - **`customer_requested_date`** `string` - **`pin`** `string` - **`printed_name`** `string` — Printed names on transferring numbers. - **`replacing_numbers`** `array` — The ported numbers' replacement numbers. **Items:** - **`source_number`** `string` — The source number. - **`target_number`** `string` — The replaced number. - **`status`** `string`, possible values: `"Not_Submitted", "Waiting", "Processing", "Successfully", "Rejected", "Canceled", "FOC"` — Ported numbers' status. - **`submission_date_time`** `string` — The time ported numbers were submitted (format: 'yyyy-MM-ddThh:dd:ssZ'). **Example:** ```json { "contact_emails": "example@163.com", "contact_number": "2058945753", "isp": "Twilio International", "numbers": [ "+12058945752" ], "order_id": "2021080307332974349", "original_billing_info": { "account_number": "111223", "address": { "city": "San Jose", "country": "US", "house_number": "55", "state_code": "CA", "street_name": "ALMADEN BLVD", "zip": "95113" }, "authorizing_person": "zz", "billing_telephone_number": "2058945751", "company": "zm", "customer_requested_date": "2021-08-06", "pin": "111223" }, "printed_name": "Jiang", "replacing_numbers": [ { "source_number": "+12058945752", "target_number": "+12058945755" } ], "status": "Canceled", "submission_date_time": "2021-08-03T07:33:29Z" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Portin order does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get phone account settings - **Method:** `GET` - **Path:** `/phone/settings` - **Tags:** Settings Returns an account's settings. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:settings:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Account setting returned. ###### Content-Type: application/json - **`billing_account`** `object` — The billing account setting. - **`id`** `string` — The billing account ID. - **`name`** `string` — The billing account name. - **`byoc`** `object` — The BYOC setting - **`enable`** `boolean` — The swtich for the BYOC function. - **`country`** `object` - **`code`** `string` — The country code. - **`name`** `string` — The country name. - **`multiple_party_conference`** `object` - **`enable`** `boolean` — If the value of this field is \`true\`, it allows multiple parties to join the conference. - **`multiple_sites`** `object` - **`enabled`** `boolean` — The multiple sites switch. - **`site_code`** `boolean` — The site code switch. - **`show_device_ip_for_call_log`** `object` - **`enable`** `boolean` — If the value of this field is \`true\`, it allows \`/phone/call\_logs\` and \`/phone/call\_logs/{callLogId}\` APIs to show \`device\_public\_ip\` and \`device\_private\_ip\` in the response. **Example:** ```json { "byoc": { "enable": true }, "country": { "code": "US", "name": "United States" }, "multiple_sites": { "enabled": true, "site_code": true }, "show_device_ip_for_call_log": { "enable": true }, "multiple_party_conference": { "enable": true }, "billing_account": { "id": "3WWAEiEjTj2IQuyDiKMd_A", "name": "Delhi billing" } } ``` ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`2031\` \
Zoom Phone has not been enabled for this account. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update phone account settings - **Method:** `PATCH` - **Path:** `/phone/settings` - **Tags:** Settings Updates Zoom Phone [account settings](https://support.zoom.us/hc/en-us/articles/360025846692). **Prerequisites:** - A Business or Enterprise account **[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:settings:admin` #### Request Body ##### Content-Type: application/json - **`billing_account`** `object` — The billing account setting. - **`id`** `string` — The billing account ID. - **`byoc`** `object` — Only \[master account owners]\(https\://marketplace.zoom.us/docs/api-reference/master-account-apis) can use this MA API to enable BYOC(Bring your own carrier) option for a sub account. \*\*Scope\*\*: \* \`phone:master\` \*\*Prerequisites\*\*: \* Business or enterprise Account. - **`enable`** `boolean` — Setting the value of this field to \`true\` allows a sub account to add BYOC numbers from the Zoom web admin portal. - **`multiple_sites`** `object` - **`enabled`** `boolean` — When the value is set to \`true\` for \[site management]\(https\://support.zoom.us/hc/en-us/articles/360020809672), your current site defaults to your Main Site. - **`site_code`** `object` - **`enable`** `boolean` — You must enable multiple sites before you can set this value to \`true\`. - **`short_extension_length`** `integer` — This field must be configured before you can set the site code to \`true\`. The range is \[2, 10] if the account's \`15-Digit Max Length Extensions\` feature is enabled; if not, \[2, 5]. - **`show_device_ip_for_call_log`** `object` - **`enable`** `boolean` — This field must be set to \`true\` to allow \`/phone/call\_logs\` and \`/phone/call\_logs/{callLogId}\` APIs to show \`device\_public\_ip\` and \`device\_private\_ip\` in the response. **Example:** ```json { "byoc": { "enable": true }, "multiple_sites": { "enabled": true, "site_code": { "enable": true, "short_extension_length": 3 } }, "show_device_ip_for_call_log": { "enable": true }, "billing_account": { "id": "3WWAEiEjTj2IQuyDiKMd_A" } } ``` #### Responses ##### Status: 204 \*\*Response HTTP code\*\*: \`204\` \*\*No Content.\*\* Updated successfully. ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`2031\` \
Zoom Phone has not been enabled for this account. \
##### Status: 412 \*\*HTTP Status Code:\*\* \`412\` \
undefined \*\*Error Code:\*\* \`412\` \
Disable multiple sites after deleting other sites. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List SIP groups ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/sip_groups` - **Tags:** Settings Returns a list of SIP (Session Initiation Protocol) groups. **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:list_sip_groups:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` SIP groups successfully listed. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned with a single API call. - **`sip_groups`** `array` — SIP group information. **Items:** - **`description`** `string` — The SIP group's description. - **`display_name`** `string` — The SIP group's display name. - **`id`** `string` — The SIP group's ID. - **`send_sip_group_name`** `boolean`, possible values: `true, false` — Whether the SIP group's name is sent in the SIP header. - **`sip_trunk`** `object` — The SIP trunk group. - **`id`** `string` — The SIP trunk group's ID. - **`name`** `string` — The SIP trunk group's name. **Example:** ```json { "next_page_token": "IXIhcpJWscHfISSKTcdl2QpSMLyRE38zH92", "page_size": 3, "sip_groups": [ { "description": "test SIP group", "display_name": "RRRR", "id": "8MhK7ea4Q4ihIQ4TD_g0kw", "send_sip_group_name": false, "sip_trunk": { "id": "VWQU-veBQnm08EtBkUGnbw", "name": "TESTAPI01" } } ] } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List BYOC SIP trunks ⚠️ Deprecated - **Method:** `GET` - **Path:** `/phone/sip_trunk/trunks` - **Tags:** Settings Returns a list of an account's assigned [BYOC (Bring Your Own Carrier) SIP (Session Initiation Protocol) trunks](https://zoom.us/docs/doc/Zoom-Bring%20Your%20Own%20Carrier.pdf). **Prerequisites** - A Business or Enterprise account **[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:list_sip_trunks:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Codes\*\*: \`200\` OK. ###### Content-Type: application/json - **`byoc_sip_trunk`** `array` **Items:** - **`carrier`** `string` — Name of the carrier. - **`carrier_account`** `string` — The account associated to the carrier. - **`id`** `string` — The unique SIP Trunk ID. - **`name`** `string` — The display name of the SIP Trunk. - **`region`** `string` — The region of the carrier. - **`sbc_label`** `string` — The Session Border Controller (SBC) routing label. - **`next_page_token`** `string` — Used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is \*\*15 minutes\*\*. - **`page_size`** `integer`, default: `30` — The number of records returned within a single API call. The default is \*\*30\*\*, and the maximum is \*\*100\*\*. **Example:** ```json { "byoc_sip_trunk": [ { "carrier": "Bandwidth", "carrier_account": "123123131313", "id": "fVA-LsQhQAC2fTS7NiccFA", "name": "TestSipTrunk", "region": "newqa01sipjp01", "sbc_label": "Test" } ], "next_page_token": "Ds6anZEv59aLMmTSrfF4wmHYCMiYXMWhRQ2", "page_size": 30 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List shared line appearances - **Method:** `GET` - **Path:** `/phone/shared_line_appearances` - **Tags:** Shared Line Appearance Returns a list of [shared line appearance](https://support.zoom.us/hc/en-us/articles/4406753208461-Enabling-or-disabling-shared-lines-privacy-mode) instances. **Prerequisites** - Pro or higher account with Zoom Phone license - Account owner or admin privileges **[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:list_shared_line_appearances:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Shared line appearances returned. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `integer`, default: `30` — The number of records returned within a single API call. - **`shared_line_appearances`** `array` **Items:** - **`assistants`** `array` **Items:** - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the assistant. - **`extension_type`** `string`, possible values: `"user", "commonArea"` — The extension type. - **`id`** `string` — The user ID. - **`name`** `string` — The assistant name. - **`executive`** `object` - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the executive. - **`extension_type`** `string`, possible values: `"user", "commonArea"` — The extension type. - **`name`** `string` — The name of the executive in this shared line appearance. - **`privileges`** `array` **Items:** `string`, possible values: `"place_calls", "answer_calls", "pickup_hold_calls", "reply_to_sms"` — The privileges of this shared line appearance. - **`total_records`** `integer` — The total records found in the response for this request. **Example:** ```json { "next_page_token": "MnriWtiIAzrEfe3EW5ORlj6TFBFqL57AC42", "page_size": 30, "shared_line_appearances": [ { "executive": { "name": "Joan Dev", "extension_number": 11407, "extension_type": "user" }, "assistants": [ { "id": "E8-XliWGT-a7tlKPOnrevw", "name": "Joh Dev", "extension_number": 11408, "extension_type": "user" } ], "privileges": [ "place_calls" ] } ], "total_records": 14 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List shared line groups - **Method:** `GET` - **Path:** `/phone/shared_line_groups` - **Tags:** Shared Line Group Lists all the shared line groups. A [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) allows Zoom Phone admins to share a phone number and extension with a group of phone users or common areas. This capability gives members of the shared line group access to the group's direct phone number and voicemail. **Prerequisites:** - Pro or higher account with Zoom Phone license. - Account owner or admin privileges **[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:list_shared_line_groups:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Shared Line Groups returned. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `integer`, default: `30` — The number of records returned within a single API call. - **`shared_line_groups`** `array` **Items:** - **`display_name`** `string` — The display name of the shared line group. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the Shared Line Group. - **`id`** `string` — The unique identifier of the Shared Line Group. - **`phone_numbers`** `array` — The phone numbers assigned to the shared line group. **Items:** - **`id`** `string` — The unique identifier of the phone number. - **`number`** `string` — The phone number in E164 format. - **`status`** `string`, possible values: `"pending", "available"` — The status of the number. - **`site`** `object` - **`id`** `string` — The unique identifier of the \[site]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#operation/getASite). - **`name`** `string` — The name of the site. - **`status`** `string`, possible values: `"active", "inactive"` — The status of the shared line group. - **`total_records`** `integer` — The total records found in the response for this request. **Example:** ```json { "next_page_token": "MnriWtiIAzrEfe3EW5ORlj6TFBFqL57AC42", "page_size": 30, "shared_line_groups": [ { "display_name": "jamieSLGTest", "extension_id": "FkOFn6d5SGqqqIkyDSXrTg", "extension_number": 1000123471, "id": "RQinnFtmTJ25mx89tW5Cmw", "phone_numbers": [ { "id": "55JUZPwERHuGttd_j4qBsQ", "number": "+12058945565", "status": "available" } ], "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "status": "active" } ], "total_records": 14 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create a shared line group - **Method:** `POST` - **Path:** `/phone/shared_line_groups` - **Tags:** Shared Line Group Creates a shared line group. A [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) allows Zoom Phone admins to share a phone number and extension with a group of phone users or common areas. This gives members of the shared line group access to the group's direct phone number and voicemail. **Prerequisites:** \* Pro or higher account with Zoom Phone license.\* Account owner or admin privileges **[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:write:shared_line_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`display_name` (required)** `string` — The name to identify the shared line group. - **`description`** `string` — The description for the shared line group. - **`extension_number`** `integer`, format: `int64` — Extension number to be assigned to the shared line group. If a \[site code has been assigned]\(https\://support.zoom.us/hc/en-us/articles/360020809672#h\_79ca9c8f-c97b-4486-aa59-d0d9d31a525b) to the site, provide the short extension number - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the shared line group. You will only be able to add members that belong to this site to the shared line group. This field is required only if the \[multiple sites]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) option has been enabled for the account. **Example:** ```json { "description": "test shared line", "display_name": "Mtest sharedLineGroup", "extension_number": 1000123487, "site_id": "8f71O6rWT8KFUGQmJIFAdQ" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Shared Line Group created successfully. ###### Content-Type: application/json - **`display_name`** `string` — The display name of the shared line group. - **`id`** `string` — The unique identifier of the shared line group. **Example:** ```json { "id": "RQinnFtmTJ25mx89tW5Cmw", "display_name": "jamieSLGTest" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
\*\*Error Code:\*\* \`400\` \
Extension number {extensionNumber} is already used.\
\
\
\*\*Error Code:\*\* \`409\` \
Invalid short number length. \
Number {extensionNumber} is a reserved extension number. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a shared line group - **Method:** `GET` - **Path:** `/phone/shared_line_groups/{sharedLineGroupId}` - **Tags:** Shared Line Group Returns a list of all the shared line groups. A [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) allows Zoom Phone admins to share a phone number and extension with a group of phone users or common areas. This gives members of the shared line group access to the group's direct phone number and voicemail. **Prerequisites:** - Pro or higher account with Zoom Phone license. - Account owner or admin privileges **[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:shared_line_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`allow_privacy`** `boolean` — Whether to allow members to prevent others from picking up a held call, and listening, whispering, barging, or taking over a call if it's configured. - **`audio_prompt_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The language for all default audio prompts for the Shared Line Group. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`cost_center`** `string` — The cost center name. - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` — English (US) \* \`en-GB\` — English (UK) \* \`es-US\` — Spanish (US) \* \`fr-CA\` — French (Canada) \* \`da-DK\` — Danish (Denmark) \* \`de-DE\` — German (Germany) \* \`es-ES\` — Spanish (Spain) \* \`fr-FR\` — French (France) \* \`it-IT\` — Italian (Italy) \* \`nl-NL\` — Dutch (Netherlands) \* \`pt-PT\` — Portuguese (Portugal) \* \`ja\` — Japanese \* \`ko-KR\` — Korean (Korea) \* \`pt-BR\` — Portuguese (Brazil) \* \`zh-CN\` — Chinese (PRC) - **`department`** `string` — The department name. - **`display_name`** `string` — The display name of the shared line group. - **`extension_id`** `string` — The extension ID of the shared line group. - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the shared line group. - **`id`** `string` — The unique identifier of the shared line group. - **`members`** `object` — This field allows you to view current \[members]\(https\://support.zoom.us/hc/en-us/articles/360038850792-Setting-up-shared-line-groups#h\_3ffbbb77-a009-4c09-91e4-81fc264b61d6) of the shared line group. - **`common_areas`** `array` **Items:** - **`extension_id`** `string` — The extension ID of the common area. - **`id`** `string` — The unique identifier of the common area. - **`name`** `string` — The name of the common area. - **`users`** `array` — The users who are members of the shared line group. **Items:** - **`extension_id`** `string` — The extension ID of the user. - **`id`** `string` — The unique identifier of the user. - **`name`** `string` — The name of the user. - **`own_storage_name`** `string` — The name of your own storage. Use your own storage provided by Oracle Cloud Infrastructure (OCI) to store Zoom Phone recordings, voicemails, and voicemail transcripts, and custom greeting prompts. - **`phone_numbers`** `array` — The object representing information about phone number(s) assigned to the group. **Items:** - **`id`** `string` — The unique identifier of the phone number. - **`number`** `string` — The phone number in E164 format. - **`policy`** `object` — The shared line group policy list. - **`voicemail_access_members`** `array` — The shared voicemail access member list. **Items:** **All of:** **All of:** - **`access_user_id`** `string` — The Zoom user ID or email or common area ID to share or update the access permissions with. - **`allow_delete`** `boolean` — This field specifies whether the member has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — This field specifies whether the member has download permissions. Not applicable to \`commonArea\`. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — This field specifies whether the member has permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The shared voicemail ID that the member can access. - **`access_user_type`** `string`, possible values: `"user", "commonArea"` — The type of access member: \`user\` or \`commonArea\`. - **`primary_number`** `string` — If you have multiple direct phone numbers assigned to the shared line group, this is the primary number selected for desk phones. The primary number shares the same line as the extension number. This means if a caller is routed to the shared line group through an auto receptionist, the line associated with the primary number will be used. - **`recording_storage_location`** `string`, possible values: `"US", "AU", "CA", "DE", "IN", "JP", "SG", "BR", "CN", "MX"` — Where the recording will be stored. Recording includes Phone recordings, voicemail, voicemail transcripts, and custom greeting prompts. \* \`US\` : United States \* \`AU\` : Australia \* \`CA\` : Canada \* \`DE\` : Germany \* \`IN\` : India \* \`JP\` : Japan \* \`SG\` : Singapore \* \`BR\` : Brazil \* \`CN\` : China \* \`MX\` : Mexico \Note:\ \* If the setting is locked at the Account level, it can't be updated. - **`site`** `object` — The site assigned to the shared line group. - **`id`** `string` — The unique identifier of the \[site]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#operation/getASite). - **`name`** `string` — The name of the site. - **`status`** `string`, possible values: `"active", "inactive"` — The status of the shared line group. - **`timezone`** `string` — The \[timezone]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones) of the Shared Line Group. **Example:** ```json { "display_name": "jamieSLGTest", "extension_id": "WfsrPERXS8inWrpH1Hi_KQ", "extension_number": 1000123471, "id": "RQinnFtmTJ25mx89tW5Cmw", "members": { "users": [ { "id": "mNlwFK9ISMKC2toK9oDTcg", "name": "ZOOM_API Test", "extension_id": "oeDyBe8zT2SzOZW6gQJXUA" } ], "common_areas": [ { "id": "HIlHzOEzS8ymQPFBZ-39AQ", "name": "Common Area", "extension_id": "HIlHzOEzS8ymQPFBZ-39AQ" } ] }, "phone_numbers": [ { "id": "---M1padRvSUtw7YihN7sA", "number": "14232058798" } ], "primary_number": "14232058798", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "Main Site" }, "status": "active", "timezone": "Pacific/Midway", "policy": { "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_download": false, "allow_delete": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" }, { "access_user_type": "user" } ] }, "cost_center": "Cost center", "department": "Department", "audio_prompt_language": "en-US", "default_transcription_language": "en-US", "recording_storage_location": "US", "own_storage_name": "us-oracle-storage", "allow_privacy": true } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Shared line group does not exist: {sharedLineGroupId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a shared line group policy - **Method:** `GET` - **Path:** `/phone/shared_line_groups/{sharedLineGroupId}/policies` - **Tags:** Shared Line Group Returns the policy setting of a specific [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792). **Prerequisites:** - Pro or a higher account with Zoom Phone license - Account owner or admin permissions **[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:shared_line_group_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Successfully retrieved the shared line group policy. ###### Content-Type: application/json - **`check_voicemails_over_phone`** `object` - **`enable` (required)** `boolean` — Whether to allow members in this shared line group to check voicemails for this group over phone using a PIN code. - **`locked` (required)** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). **Example:** ```json { "check_voicemails_over_phone": { "enable": true, "locked": true, "locked_by": "site", "modified": true } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Shared line group does not exist:{sharedLineGroupId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a shared line group policy - **Method:** `PATCH` - **Path:** `/phone/shared_line_groups/{sharedLineGroupId}/policies` - **Tags:** Shared Line Group Updates the policy setting of a specific [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792). **Prerequisites:** - Pro or higher account plan with Zoom Phone License - Account owner or admin permissions **[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:shared_line_group_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`check_voicemails_over_phone`** `object` - **`enable`** `boolean` — Whether to allow members in this shared line group to check voicemails for this group over phone using a PIN code. - **`reset`** `boolean` — Whether the current settings use the phone account's settings (applicable if the current settings are using the new policy framework). **Example:** ```json { "check_voicemails_over_phone": { "enable": true, "reset": true } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Shared line group policy updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a shared line group - **Method:** `DELETE` - **Path:** `/phone/shared_line_groups/{slgId}` - **Tags:** Shared Line Group Deletes a shared line group. A [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) allows Zoom Phone admins to share a phone number and extension with a group of phone users or common areas. **Prerequisites:** - Pro or higher account with Zoom Phone license. - Account owner or admin privileges **[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:delete:shared_line_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Shared Line Group Deleted. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a shared line group - **Method:** `PATCH` - **Path:** `/phone/shared_line_groups/{slgId}` - **Tags:** Shared Line Group Updates the information about a shared line group. A [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) allows Zoom Phone admins to share a phone number and extension with a group of phone users or common areas. Members of the shared line group can access to the group's direct phone number and voicemail. **Prerequisites** - Pro or higher account with Zoom Phone license - Account owner or admin privileges **[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:shared_line_group:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`allow_privacy`** `boolean` — Whether to allow members to prevent others from picking up a held call, and listening, whispering, barging, or taking over a call if it's configured. - **`audio_prompt_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The language for all default audio prompts for the Shared Line Group. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`cost_center`** `string` — The cost center name. - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` — English (US) \* \`en-GB\` — English (UK) \* \`es-US\` — Spanish (US) \* \`fr-CA\` — French (Canada) \* \`da-DK\` — Danish (Denmark) \* \`de-DE\` — German (Germany) \* \`es-ES\` — Spanish (Spain) \* \`fr-FR\` — French (France) \* \`it-IT\` — Italian (Italy) \* \`nl-NL\` — Dutch (Netherlands) \* \`pt-PT\` — Portuguese (Portugal) \* \`ja\` — Japanese \* \`ko-KR\` — Korean (Korea) \* \`pt-BR\` — Portuguese (Brazil) \* \`zh-CN\` — Chinese (PRC) - **`department`** `string` — The department name. - **`display_name`** `string` — The display name of the shared line group. - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the shared line group. - **`primary_number`** `string` — The phone number that you would like to assign as the primary number for this shared line group - **`recording_storage_location`** `string`, possible values: `"US", "AU", "CA", "DE", "IN", "JP", "SG", "BR", "CN", "MX"` — Where the recording will be stored. Recording includes Phone recordings, voicemail, voicemail transcripts, and custom greeting prompts. \* \`US\` : United States \* \`AU\` : Australia \* \`CA\` : Canada \* \`DE\` : Germany \* \`IN\` : India \* \`JP\` : Japan \* \`SG\` : Singapore \* \`BR\` : Brazil \* \`CN\` : China \* \`MX\` : Mexico \Note:\ \* If the setting is locked at the Account level, it can't be updated. - **`status`** `string`, possible values: `"active", "inactive"` — The status of the shared line group. - **`timezone`** `string` — The \[timezone]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones) of the Shared Line Group. **Example:** ```json { "display_name": "slg_name_2020_12_22_06_52_34_430", "extension_number": 1000001007, "primary_number": "14232058798", "status": "active", "timezone": "Pacific/Midway", "cost_center": "Cost center", "department": "Department", "audio_prompt_language": "en-US", "default_transcription_language": "en-US", "recording_storage_location": "US", "allow_privacy": true } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* The shared line group updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
\*\*Error Code:\*\* \`409\` \
\* Invalid short number length.\
\* Number {extensionNumber} is a reserved extension number.\
\
\
\*\*Error Code:\*\* \`400\` \
Extension number {extensionNumber} is already used. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add members to a shared line group - **Method:** `POST` - **Path:** `/phone/shared_line_groups/{slgId}/members` - **Tags:** Shared Line Group [Adds members](https://support.zoom.us/hc/en-us/articles/360038850792-Setting-up-shared-line-groups#h_7cb42370-48f6-4a8f-84f4-c6eee4d9f0ca) to a shared line group. A [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) allows Zoom Phone admins to share a phone number and extension with a group of phone users or common areas. This gives members of the shared line group access to the group's direct phone number and voicemail. Note that a member can only be added to one shared line group. **Prerequisites:** - Pro or higher account with Zoom Phone license. - A valid Shared Line Group - Account owner or admin privileges **[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:write:shared_line_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`members`** `object` — The members can comprise of users on the account as well as common areas. You can add a maximum of 10 members at once. - **`common_area_ids`** `array` — The unique identifier of the \[common area]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods/#operation/listCommonAreas), retrievable from the List Common Areas API. **Items:** `string` - **`users`** `array` — The Zoom Phone users on the account. **Items:** - **`email`** `string` — The email address of the user. - **`id`** `string` — The unique identifier of the user. **Example:** ```json { "members": { "common_area_ids": [ "iewGNg-LSYa0ghhkr4d0Hg" ], "users": [ { "email": "largepbx3_018638@largepbx3.com", "id": "gLGURYbRTSup_z4CkSwKuA" } ] } } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Members added successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User not found: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign members from a shared line group - **Method:** `DELETE` - **Path:** `/phone/shared_line_groups/{slgId}/members` - **Tags:** Shared Line Group Unassigns **all** existing members from a shared line group. Members of the [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) have access to the group's phone number and voicemail. **Prerequisites:** - Pro or higher account with Zoom Phone license. - A valid Shared Line Group - Account owner or admin privileges **[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:delete:shared_line_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Members unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign a member from a shared line group - **Method:** `DELETE` - **Path:** `/phone/shared_line_groups/{slgId}/members/{memberId}` - **Tags:** Shared Line Group Unassigns **a specific member** from a shared line group. Members of the [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) have access to the group's phone number and voicemail. **Prerequisites:** - Pro or higher account with Zoom Phone license. - A valid Shared Line Group - Account owner or admin privileges **[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:delete:shared_line_member:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Members unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign phone numbers - **Method:** `POST` - **Path:** `/phone/shared_line_groups/{slgId}/phone_numbers` - **Tags:** Shared Line Group Assigns phone numbers to a shared line groups. These direct phone numbers will be shared among members of the [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792-Setting-up-shared-line-groups). **Prerequisites:** - Pro or higher account with Zoom Phone license. - A valid Shared Line Group - Account owner or admin privileges **[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:write:shared_line_group_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`phone_numbers`** `array` — The phone number(s) to be assigned to the shared line group. **Items:** - **`id`** `string` — The unique identifier of the phone number. - **`number`** `string` — The phone number. **Example:** ```json { "phone_numbers": [ { "id": "---M1padRvSUtw7YihN7sA", "number": "14232058798" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Phone number(s) assigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Phone number does not exist\
\
\
\*\*Error Code:\*\* \`300\` \
\
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Phone number does not belong to this account \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign all phone numbers - **Method:** `DELETE` - **Path:** `/phone/shared_line_groups/{slgId}/phone_numbers` - **Tags:** Shared Line Group Unassigns all the phone numbers that have been assigned to the [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792-Setting-up-shared-line-groups). **Prerequisites:** - Pro or higher account with Zoom Phone license. - A valid Shared Line Group - Account owner or admin privileges **[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:delete:shared_line_group_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone Numbers unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Phone number does not exist \
\*\*Error Code:\*\* \`300\` \
\
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Phone number does not belong to this account \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign a phone number - **Method:** `DELETE` - **Path:** `/phone/shared_line_groups/{slgId}/phone_numbers/{phoneNumberId}` - **Tags:** Shared Line Group Unassigns a specific phone number that was assigned to the [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792-Setting-up-shared-line-groups). **Prerequisites:** - Pro or higher account with Zoom Phone license. - A valid shared line group - Account owner or admin privileges **[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:delete:shared_line_group_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Phone Numbers unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Phone number does not exist\
\
\
\*\*Error Code:\*\* \`300\` \
\
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Phone number does not belong to this account \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a policy setting to a shared line group - **Method:** `POST` - **Path:** `/phone/shared_line_groups/{slgId}/policies/{policyType}` - **Tags:** Shared Line Group Adds the policy sub-setting for a specific [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) according to the `policyType`. For example, you can use this API to set up shared access members. **Prerequisites:** \* Pro or higher account with Zoom Phone license.\* Account owner or admin privileges **[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:write:shared_line_group_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Request Body ##### Content-Type: application/json - **`voicemail_access_members`** `array` — The shared voicemail access member list. **Items:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or the unique identifier of the common area, depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. The default type will be user if empty. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the member has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the member has download permissions. Not applicable to \`commonArea\`. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the member has permission to share. The default is \*\*false\*\*. **Example:** ```json { "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_download": false, "allow_delete": false, "allow_sharing": false } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code\*\* \`201\` Created Successfully. ###### Content-Type: application/json - **`voicemail_access_members`** `array` — The shared access member list. **Items:** **All of:** **All of:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or unique identifier of the common area depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the member has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the member has download permissions. Not applicable to \`commonArea\`. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the member has permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The shared voicemail ID that the member can access. - **`access_user_type`** `string`, possible values: `"user", "commonArea"` — The type of access member: \`user\` or \`commonArea\`. **Example:** ```json { "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_download": false, "allow_delete": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" }, { "access_user_type": "user" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an SLG policy setting - **Method:** `DELETE` - **Path:** `/phone/shared_line_groups/{slgId}/policies/{policyType}` - **Tags:** Shared Line Group Removes the policy sub-setting for a specific [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) according to the `policyType`. For example, you can use this API to remove shared access members. **Prerequisites:** \* Pro or higher account with Zoom Phone license.\* Account owner or admin privileges **[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:delete:shared_line_group_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update an SLG policy setting - **Method:** `PATCH` - **Path:** `/phone/shared_line_groups/{slgId}/policies/{policyType}` - **Tags:** Shared Line Group Updates the policy sub-setting for a specific [shared line group](https://support.zoom.us/hc/en-us/articles/360038850792) according to the `policyType`. For example, you can use this API to update shared access members. **Prerequisites:** - Pro or higher account with Zoom Phone license. - Account owner or admin privileges **[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:shared_line_group_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`voicemail_access_members`** `array` — The shared voicemail access member list. **Items:** **All of:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or the unique identifier of the common area, depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. The default type will be user if empty. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the member has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the member has download permissions. Not applicable to \`commonArea\`. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the member has permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The shared voicemail ID that the member can access. **Example:** ```json { "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_download": false, "allow_delete": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List phone sites - **Method:** `GET` - **Path:** `/phone/sites` - **Tags:** Sites Sites allow you to organize Zoom Phone users in your organization. Use this API to list all the [sites](https://support.zoom.us/hc/en-us/articles/360020809672) that have been created for an account. **Prerequisites:** - Multiple Sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). - Pro or a higher account with Zoom Phone enabled. **[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:list_sites:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 OK ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The number of records returned within a single API call. - **`sites`** `array` — List of site(s). **Items:** - **`country`** `object` — The country of the site. - **`code`** `string` — The two lettered country \[code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`name`** `string` — The name of the country. - **`id`** `string` — The site ID is the unique identifier of the site. - **`main_auto_receptionist`** `object` — The auto receptionist for each site. - **`extension_id`** `string` — The extension ID - **`extension_number`** `integer`, format: `int64` — The extension number - **`id`** `string` — The identifier of the \[auto receptionist]\(https\://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Interactive-Voice-Response-IVR-). - **`name`** `string` — The name of the auto receptionist. - **`name`** `string` — The name of the site. - **`site_code`** `integer` — The site code - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "next_page_token": "nav48KOj42vYPSG4f0cCdT575bZ980did22", "page_size": 10, "sites": [ { "country": { "code": "US", "name": "United States" }, "id": "SQv52YtkRLC2dwrDdYtGsA", "main_auto_receptionist": { "extension_id": "pl1XprjhTQK1CCMVKTqCFA", "extension_number": 12345, "id": "Kbdc9lv_SBCuPMjj_lhxVA", "name": "ApiTA_R_2020_07_12_00_41_57_145" }, "name": "ApiTA_Site_2020_07_12_00_41_57_141", "site_code": 1 } ], "total_records": 20 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create a phone site - **Method:** `POST` - **Path:** `/phone/sites` - **Tags:** Sites Creates a [site](https://support.zoom.us/hc/en-us/articles/360020809672) that allows you to organize the Zoom Phone users in your organization. **Prerequisites:** - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). - Pro or a higher account with Zoom Phone enabled. **[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:write:site:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`auto_receptionist_name` (required)** `string` — The display name of the \[auto-receptionist]\(https\://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Integrated-Voice-Response-IVR-) for the site. - **`default_emergency_address` (required)** `object` — The default emergency address. If the address provided is not an exact match, it uses the system generated corrected address. - **`address_line1` (required)** `string` — The address Line 1 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that contains the house number and street name. - **`city` (required)** `string` — The city of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`country` (required)** `string` — The two-lettered country code (Alpha-2 code in ISO-3166 format) of the site's \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`state_code` (required)** `string` — The state code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`zip` (required)** `string` — The zip code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`address_line2`** `string` — The address Line 2 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that contains the building number, floor number, unit, and others. - **`name` (required)** `string` — The name of the site. - **`force_off_net`** `object` — It requires the account to enable the \`Force Calls out to the PSTN network\` feature. - **`allow_extension_only_users_call_users_outside_site`** `boolean` — This setting allows extension only users to call to users outside the site. - **`enable`** `boolean` — By enabling Force Off-Net, calls from users or extensions between sites route through the PSTN network. Users in this site are only allowed to be part of the advanced functionality (eg. Auto Receptionists, Call Queues) configured in this site. - **`india_city`** `string` — The India site’s city. This field only applies to India based accounts. - **`india_entity_name`** `string` — When select the Indian sip zone, then need to set the entity name. This field only applies to India based accounts. - **`india_sdca_npa`** `string` — The India site’s Short Distance Calling Area (sdca) Numbering Plan Area (npa). This field is linked to the “state\_code“ field. This field only applies to India based accounts. - **`india_state_code`** `string` — The India site’s state code. This field only applies to India based accounts. - **`short_extension`** `object` — The short extension of the phone site. - **`length`** `integer`, default: `3` — The length of short extension numbers for the site. Since there is a default 6-digit limit on extensions, the short extension can be two to five digits. The length of site code added to the length of short extension cannot exceed a value of \`6\` For example, the length of \`site\_code\`+ length of \`short\_extension\` should always be less than or equal to 6. - **`sip_zone`** `object` — If the account enabled the \`Display Custom SIP Zone Options on Web Portal\` feature, then selecting a SIP zone nearest to your site might help reduce latency and improve call quality. - **`id`** `string` — The SIP zone ID. - **`site_code`** `integer` — The identifier for a site. This field is required when the site code is enabled. - **`source_auto_receptionist_id`** `string` — The ID of the \[auto-receptionist]\(https\://support.zoom.us/hc/en-us/articles/360021121312-Managing-Auto-Receptionists-and-Integrated-Voice-Response-IVR-) that you can copy. **Example:** ```json { "auto_receptionist_name": "ApiTA_R_2020_07_12_00_41_57_145", "source_auto_receptionist_id": "0m0dGevHR2ulyMgxFLeVEA", "default_emergency_address": { "address_line1": "55 Almaden Boulevard", "address_line2": "8 Floor", "city": "SAN JOSE", "country": "US", "state_code": "CA", "zip": "95113" }, "name": "Main site", "short_extension": { "length": 4 }, "site_code": 2, "sip_zone": { "id": "2J9UXzGuTaqCdZ8sw_0jBw" }, "force_off_net": { "enable": true, "allow_extension_only_users_call_users_outside_site": true }, "india_state_code": "CG", "india_city": "Bemetara", "india_sdca_npa": "7700", "india_entity_name": "india-test-entity" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Site created successfully. ###### Content-Type: application/json - **`id`** `string` — The site ID is the unique identifier of a site. - **`name`** `string` — The name of the site. **Example:** ```json { "id": "SQv52YtkRLC2dwrDdYtGsA", "name": "ApiTA_Site_2020_07_12_00_41_57_141" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Invalid site code length.\
Country information is invalid.\
This address could not be validated or geocoded. \
\*\*Error Code:\*\* \`400\` \
For India sites, state and city should not be empty. \
\*\*Error Code:\*\* \`400\` \
Short Distance Calling Area is invalid. \
\*\*Error Code:\*\* \`400\` \
India Entity Name is required. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get phone site details - **Method:** `GET` - **Path:** `/phone/sites/{siteId}` - **Tags:** Sites Returns information on a specific [site](https://support.zoom.us/hc/en-us/articles/360020809672). Sites allow you to organize Zoom Phone users in your organization. **Prerequisites** - Account must have a Pro or a higher plan with Zoom Phone license. - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). **[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:site:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Site information retrieved successfully. ###### Content-Type: application/json - **`caller_id_name`** `string` — When you place an outbound call with a number as the caller ID, the caller ID name and the number display to the called party. The caller ID name can be up to 15 characters. - **`country`** `object` — The country of the site. - **`code`** `string` — The two lettered country \[code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`name`** `string` — The name of the country. - **`default_emergency_address`** `object` — The site's emergency address. - **`address_line1`** `string` — The emergency address line 1. - **`address_line2`** `string` — The emergency address line 2. - **`city`** `string` — The emergency address city. - **`country`** `string` — The emergency address country. - **`id`** `string` — The emergency address ID. - **`is_default`** `boolean` — Whether the emergency address is default or not. - **`level`** `integer`, possible values: `0, 1, 2` — The emergency address owner level: \* \`0\` - Account/Company-level emergency address. \* \`1\` - User/Personal-level emergency address. \* \`2\` - Unknown company/pending emergency address. - **`state_code`** `string` — The emergency address state code. - **`status`** `integer`, possible values: `1, 2, 3, 4, 5, 6` — The emergency address verification status: \* \`1\` \— Verification not required. \* \`2\` \— Unverified. \* \`3\` \— Verification requested. \* \`4\` \— Verified. \* \`5\` \— Rejected. \* \`6\` \— Verification failed. - **`zip`** `string` — The emergency address zip code. - **`id`** `string` — The site ID is the unique identifier of the site. - **`india_city`** `string` — The India site’s city. This field only applies to India based accounts. - **`india_entity_name`** `string` — When select the Indian sip zone, then need to set the entity name. This field only applies to India based accounts. - **`india_sdca_npa`** `string` — The India site’s Short Distance Calling Area (sdca) Numbering Plan Area (npa). This field is linked to the “state\_code“ field. This field only applies to India based accounts. - **`india_state_code`** `string` — The India site’s state code. This field only applies to India based accounts. - **`main_auto_receptionist`** `object` — The \[main auto receptionist]\(https\://support.zoom.us/hc/en-us/articles/360021121312#h\_bc7ff1d5-0e6c-40cd-b889-62010cb98c57) for each site. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`id`** `string` — The unique identifier of the auto receptionist. - **`name`** `string` — The name of the auto receptionist. - **`name`** `string` — The name of the site. - **`policy`** `object` — The \[site policy setting]\(https\://support.zoom.us/hc/en-us/articles/360033511872-Changing-Zoom-Phone-policy-settings#h\_af4d1935-9cb1-44d2-9a10-9bfba10d58a7). - **`ad_hoc_call_recording`** `object` — A list of ad hoc call recording settings. - **`enable`** `boolean` — Whether the current extension can record and save calls to the cloud. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`play_recording_beep_tone`** `object` — Whether to play the side tone beep for recorded users while recording. It displays only when ad hoc call recording policy uses the new framework. - **`enable`** `boolean` — Whether to play the side tone beep for recorded users while recording. It displays only when ad hoc call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when \`enable\` is set to true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when \`enable\` is set to true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The side tone beep volume. It displays only when \`enable\` is set to \`true\`. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`advanced_encryption`** `object` — Whether to allow voicemail to be encrypted with keys which are not accessible to Zoom servers. These voicemails can be decrypted only by the intended user recipient. Shared line appearance, shared line group, call queue, or auto receptionist voicemail will not be encrypted, but can still be played. Email to voicemail, transcriptions, ability to check voicemails by dialing into the voicemail system, or web are not available when this feature is enabled. This policy requires a Power Pack license to be enabled. If the user does who inherits this policy does not have a Power Pack license, the policy will not be applied. - **`disable_incoming_unencrypted_voicemail`** `boolean` — Whether to disable incoming unencrypted voicemail. - **`enable`** `boolean` — This field allows voicemail to be encrypted with keys that are not accessible to Zoom servers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset(displayed when using old or new policy framework). - **`allow_caller_reach_operator`** `object` — This field enables users to allow their callers to reach an operator.Once disabled, users will not be able to route their calls to an operator as part of the "When a call is not answered" setting. - **`enable`** `boolean` — This field enables users to allow their callers to reach an operator.Once disabled, users will not be able to route their calls to an operator as part of the "When a call is not answered" setting. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`allow_end_user_edit_call_handling`** `object` — This field allows users to edit call handling settings.Once disabled, users will not be able to edit their call handling settings on the web portal or enable call forwarding on the client. - **`enable`** `boolean` — This field allows users to edit call handling settings.Once disabled, users will not be able to edit their call handling settings on the web portal or enable call forwarding on the client. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`allow_mobile_home_phone_callout`** `object` — This field allows users to use mobile or home phone to place calls. Zoom app will call this device first before ringing the called number. - **`enable`** `boolean` — This field allows users to use mobile or home phone to place calls. Zoom app will call this device first before ringing the called number. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`audio_intercom`** `object` — Whether to allow hands-free peer-to-peer conversations. When you receive an intercom call, the phone beeps to notify the user of the incoming intercom call, and the user's phone automatically answers the intercom call. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`auto_call_recording`** `object` — A list of the site's automatic call recording settings. - **`allow_stop_resume_recording`** `boolean` — Whether the stop and resume of automatic call recording is enabled. - **`disconnect_on_recording_failure`** `boolean` — Whether a call disconnects when there is an issue with the automatic call recording and the call cannot reconnect after five seconds. This does \*\*not\*\* include emergency calls. - **`enable`** `boolean` — Whether automatic call recording is enabled. - **`inbound_audio_notification`** `object` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`outbound_audio_notification`** `object` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`play_recording_beep_tone`** `object` — Plays the side tone beep for recorded users while recording. It displays only when auto call recording policy uses the new framework. - **`enable`** `boolean` — Whether to play the side tone beep for recorded users while recording. It displays only when auto call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when the \`enable\` is set to true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when the \`enable\` is set to true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The side tone beep volume. It displays only when \`enable\` is set to \`true\`. - **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — The type of calls automatically recorded: \* \`inbound\` \* \`outbound\` \* \`both\` - **`recording_explicit_consent`** `boolean` — Whether the \`Press 1 option that provides recording consent\` is enabled. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` to operate inbound and outbound prompt separately. \Note:\ \* If customers opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\` and \`inbound\_audio\_notification.recording\_explicit\_consent\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` to operate inbound and outbound prompt separately. \Note:\ \* If customers opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\` and \`inbound\_audio\_notification.recording\_start\_prompt\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\` will be also updated. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` will be also updated. - **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`auto_delete_data_after_retention_duration`** `object` — Allows Zoom to automatically delete data after retention duration - **`delete_type`** `integer`, possible values: `1, 2` — The delete policy. \* 1 - soft delete \* 2 - permanent delete - **`enable`** `boolean` — This field allows Zoom to automatically delete data after the retention duration has lapsed. - **`items`** `array` — The itemss **Items:** - **`duration`** `integer` — The retention duration where -1 means unlimited. For units of time, see the \`time\_unit\` below. For \`year\`, the duration:-1, 1-10; for \`day\`, the duration:-1, 1-60; for \`month\`, the duration:-1, 1-18. - **`time_unit`** `string`, possible values: `"year", "month", "day"` — The unit of time. - **`type`** `string`, possible values: `"callLog", "onDemandRecording", "automaticRecording", "voicemail", "videomail", "sms"` — The data types. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`reset`** `boolean` — Whether the current settings will use the phone account's settings if the current settings use the new policy framework. - **`auto_opt_out_in_call_queue`** `object` — Whether to enable auto Opt-out from Call Queue after logging out from Zoom. - **`enable`** `boolean` — Once enabled, when Call Queue members log out of Zoom (Except for desk phones and Zoom Phone appliances), they will be automatically Opted-out from the Call Queue as well. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset(displayed when using old or new policy framework). - **`prompt_before_opt_out_call_queue`** `boolean` — Once enabled, always ask the user if they want to opt-out from the Call Queue when they sign out of Zoom. - **`block_calls_without_caller_id`** `object` — Whether to calls without caller ID will be blocked. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`block_external_calls`** `object` — Set rules for blocking external calls during business, closed, and holiday hours. This feature is only available for user, Zoom Room and common areas. - **`block_business_hours`** `boolean` — This field blocks external calls during business hours - **`block_call_action`** `integer`, possible values: `0, 9` — The action when a call is blocked. \`9\` - Disconnect, \`0\`- Forward to voicemail or videomail. - **`block_call_change_type`** `integer`, possible values: `0, 1` — This setting applies only in the old policy framework. It applies changes to new extensions or all extensions. \`1\` - All extension, \`0\` - New extensions. - **`block_closed_hours`** `boolean` — This field blocks external calls during closed hours - **`block_holiday_hours`** `boolean` — This field blocks external calls during holiday hours - **`e2e_encryption`** `object` — Allows users to switch their calls to End-to-End Encryption - **`enable`** `boolean` — Whether to allow users to switch their calls to \`End-to-End Encryption\`. If users have \`Automatic Call Recording\` turned on, they cannot use \`End-to-End Encryption\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using old or new policy framework. - **`call_handling_forwarding_to_other_users`** `object` — Whether to allow users to forward their calls to other numbers. - **`call_forwarding_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`call_live_transcription`** `object` — Whether to let users turn on live transcriptions for a call. - **`enable`** `boolean` — Enables let users turn on live transcriptions for a call. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`transcription_start_prompt`** `object` — Whether to play a prompt to call participants when the transcription has started. - **`audio_id`** `string` — The audio prompt file ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`audio_name`** `string` — The audio prompt file name. - **`enable`** `boolean` — Enables play of a prompt to call participants when the transcription has started. - **`call_overflow`** `object` — Allow users to forward their calls to other numbers when a call is not answered - **`call_overflow_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Can forward to internal extensions and to external contacts \`2\` - Can forward only to internal extensions \`3\` - Can forward only to internal extensions that require inbound Automatic Call Recording \`4\` - Can forward to internal extensions, external contacts, and external numbers - **`enable`** `boolean` — Whether to allow users to forward their calls to other numbers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`call_park`** `object` — Allow calls placed on hold to be resumed from another location using a retrieval code. - **`call_not_picked_up_action`** `integer` — The action when a parked call is not picked up. \`100\` - Ring back to parker \`0\` - Forward to voicemail of the parker \`9\` - Disconnect \`50\` - Forward to another extension - **`enable`** `boolean` — Whether to allow calls placed on hold to be resumed from another location with a retrieval code. - **`expiration_period`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — A time limit for parked calls in minutes. After the expiration period ends, the retrieval code is no longer valid and a new code generates. - **`forward_to`** `object` — The extension's forwarding information. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "zoomRoom", "commonArea", "ciscoRoom/polycomRoom", "autoReceptionist", "callQueue", "sharedLineGroup"` — The type of extension: \* \`user\` \* \`zoomRoom\` \* \`commonArea\` \* \`ciscoRoom/polycomRoom\` \* \`autoReceptionist\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension \`user\`, \`zoomRoom\`, \`commonArea\`, \`ciscoRoom/polycomRoom\`, \`autoReceptionist\`, \`callQueue\` or \`sharedLineGroup\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`sequence`** `integer`, possible values: `0, 1` — This field chooses how parked calls are assigned to a BLF (Busy Lamp Field) key. Sequential assignment parks the call at the next available BLF key. Random assignment parks the call at a randomly selected BLF key. \`0\` - Random \`1\` - Sequential - **`call_queue_opt_out_reason`** `object` — The opt-out reasons for call queues. When enabled, call queue members need to select an opt-out reason when they turn off the \`receive queue call\` feature. - **`call_queue_opt_out_reasons_list`** `array` — The opt-out reasons list **Items:** - **`code`** `string` - **`enable`** `boolean` - **`system`** `boolean` — The system default reason. It cannot be edited. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`call_queue_pickup_code`** `object` — After enabling the feature, a unique pickup code generates for each queue, which can be customized in the \`Call Queue\` profile. Queued calls can be answered with the pickup code by the users under the same site. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`call_screening`** `object` — Whether to incoming direct external callers will be prompted to respond to a button to reach users, callers who don't respond will be disconnected. Devices will not be able to receive any third party faxes. - **`enable`** `boolean` — Enables incoming direct external callers will be prompted to respond to a button to reach users, callers who don't respond will be disconnected. Devices will not be able to receive any third party faxes. - **`exclude_user_company_contacts`** `boolean` — Whether exclude user and company contacts from call screening, calls will reach users as normal. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`call_summary`** `object` — Allows users to generate a summary of a phone call. For users who enable Call summary during a call, a summary will be automatically sent to them on the client and the web portal after the call has ended. It requires the account to enable the \`Enable Phone Call Summary\` feature. - **`auto_call_summary`** `boolean` — This field enables automatic call summary. - **`call_summary_start_prompt`** `object` — Whether to play a prompt to call participant when call summary has started. - **`audio_id`** `string` — The audio prompt file ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`audio_name`** `string` — The audio prompt file name. - **`enable`** `boolean` — Whether to play a prompt to call participant when call summary has started. - **`enable`** `boolean` — This field allows users to generate a summary of a phone call. For users who enable Call summary during a call, a summary will be automatically sent to them on the client and the web portal after the call has ended. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset(displayed when using old or new policy framework). - **`call_transferring`** `object` — Allows user to warm or blind transfer their calls. This does not apply to warm transfer on IP Phones except for Yealink. Voicemail is transferable only to internal extensions. - **`call_transferring_type`** `integer`, possible values: `1, 2, 3, 4` — 1-No restriction 2-Medium restriction (external numbers and external contacts not allowed) 3-High restriction (external numbers, unrecorded external contacts, and internal extensions without inbound automatic recording not allowed) 4-Low restriction (external numbers not allowed) - **`enable`** `boolean` — Whether to allow users to warm or blind transfer their calls. This does not apply to warm transfer on IP Phones except for Yealink. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`check_voicemails_over_phone`** `object` — Whether to allow extension owners or members of a shared line group to check voicemails for extension numbers over the phone using PIN code. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`customize_line_name`** `object` — Whether to enable the line name template to be applied to all the desk phones on your account. Make sure there is enough space on the desk phone to display the line name. - **`common_area_line_name`** `string`, possible values: `"phoneNumber", "extensionNumber", "displayName", "displayName;extensionNumber"` — The common area line name. - **`enable`** `boolean` — Enables the line name template to be applied to all the desk phones on your account. Make sure there is enough space on the desk phone to display the line name. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset(displayed when using old or new policy framework). - **`user_line_name`** `string`, possible values: `"phoneNumber", "extensionNumber", "displayName", "displayName;extensionNumber", "firstName;extensionNumber", "firstName;lastName;extensionNumber"` — The user line name. - **`delegation`** `object` — Whether the user can use \[call delegation]\(https\://support.zoom.us/hc/en-us/articles/360032881731-Setting-up-call-delegation-shared-lines-appearance-). - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`display_call_feedback_survey`** `object` — Displays a thumbs up/down survey at the end of each call. If participants respond with thumbs down, they can provide additional information about what went wrong. - **`enable`** `boolean` — Whether to display a thumbs up or down survey at the end of each call. If participants respond with thumbs down, they can provide additional information about what went wrong. - **`feedback_duration`** `object` — The call duration, in seconds, 0-60. - **`enable`** `boolean` — The display end-of-call experience feedback survey when call duration issues are detected. - **`max`** `integer` — The maximum call duration. - **`min`** `integer` — The minimum call duration. - **`feedback_mos`** `object` — The MOS score. Min: 1.0, Max: 3.0, format one decimal point. - **`enable`** `boolean` — Whether to display end-of-call experience feedback survey when call mos score issues are detected. - **`max`** `number` — The maximum MOS score. - **`min`** `number` — The minimum MOS score. - **`feedback_type`** `integer`, possible values: `1, 2` — This field allows you to display feedback survey, \`1\` - display for every call, \`2\` - display when call quality issues are detected. Default \`1\`, if set with value \`2\`, need to set \`feed\_back\_mos\` or \`feedback\_duration\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`elevate_to_meeting`** `object` — Allow users to elevate their phone calls to a meeting. - **`enable`** `boolean` — Whether to allow users to elevate their phone calls to a meeting. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`external_calling_on_zoom_room_common_area`** `object` — This field allows Zoom Rooms to call external phone numbers based on the calling plans - **`enable`** `boolean` — This field allows Zoom Rooms to call external phone numbers based on the calling plans - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`force_off_net`** `object` — It requires the account to enable the \`Force Calls out to the PSTN network\` feature. - **`allow_extension_only_users_call_users_outside_site`** `boolean` — This setting allows extension only users to call to users outside the site. - **`enable`** `boolean` — By enabling Force Off-Net, calls from users or extensions between sites route through the PSTN network. Users within this site can only be part of advanced functionality (eg. Auto Receptionists, Call Queues) for this site. Users require a paid Zoom license and BYOC-P phone numbers to call between sites. - **`forward_call_outside_of_site`** `object` — This field allows users to forward their calls outside of their own site.Once disabled, users will only be able to forward their calls to users, call queues, shared line groups, etc., within their own site. - **`enable`** `boolean` — This field allows users to forward their calls outside of their own site.Once disabled, users will only be able to forward their calls to users, call queues, shared line groups, etc., within their own site. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`hand_off_to_room`** `object` — Allows users to send a call to a Zoom Room - **`enable`** `boolean` — Whether to allow users to send a call to a Zoom Room. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display when using the new policy framework. - **`incoming_call_notification`** `object` — Allows users to select if an incoming call notification would block their current activity. - **`block_type`** `string`, possible values: `"block_activity", "continue_with_alert"` — The incoming call notification block type. \`block\_activity\` means "Block my current activity", \`continue\_with\_alert\` means "Alert me but allow me to continue my current activity". - **`enable`** `boolean` — This field allows users to select if an incoming call notification would block their current activity. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset(displayed when using old or new policy framework). - **`international_calling`** `object` — Whether to allow extensions to place international calls outside of the calling plan. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display when using the new policy framework. - **`manage_call_routing_for_unassigned_numbers`** `object` — Allows calls to numbers not assigned to an extension to be handled according to the configured settings. This applies to calls originating both inside and outside the account. - **`enable`** `boolean` — Whether to enable call routing for unassigned numbers. - **`incoming_call_action`** `string`, possible values: `"disconnect", "play_message_then_disconnect", "forward_to_another_extension"` — The routing action for incoming calls to unassigned numbers. - Disconnect the call. - Play a message and then disconnect. - Forward the call to another extension. - **`incoming_call_routing_setting`** `object` — The routing setting. Only returns when is not . - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level has locked this setting. - **`modified`** `boolean` — Whether the current settings have been changed from inherited defaults. If true, the settings can be reset. - **`mobile_switch_to_carrier`** `object` — Allows user to switch from Zoom Phone to their native carrier - **`enable`** `boolean` — Whether to allow the user to switch from a Zoom Phone to their native carrier. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`obfuscate_sensitive_data_during_call`** `object` — Once enabled, when a user on an active call presses a dial pad key on screen or number on the keyboard, the client DTMF tones will be muted and the numbers will be masked on the screen. - **`enable`** `boolean` — Once enabled, when a user on an active call presses a dial pad key on screen or number on the keyboard, the client DTMF tones will be muted and the numbers will be masked on the screen. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`personal_audio_library`** `object` — Allows users to change their own Audio Library. - **`allow_music_on_hold_customization`** `boolean` — Whether to allow music on hold customization. - **`allow_voicemail_and_message_greeting_customization`** `boolean` — Whether to allow voicemail and message greeting customization. - **`enable`** `boolean` — This field allows users to access, share, download, or delete voicemail or videomail. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display when using the new policy framework. - **`prevent_users_upload_audio_files`** `object` — Once enabled, users will not be able to upload audios on the web portal. Users will be still able to access text-to-speech or record audio files. - **`enable`** `boolean` — Once enabled, users will not be able to upload audios on the web portal. Users will be still able to access text-to-speech or record audio files. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`schedule_firmware_update`** `object` — Defines how often and when to update firmware of the devices. - **`enable`** `boolean` — Whether to define how often and when to update firmware of the devices. - **`end_setting`** `object` — The end setting. - **`end_date`** `string`, format: `date` — The end date in the format \\"yyyy-MM-dd\\". Only return when \`never\_end\` is false. - **`never_end`** `boolean` — Never ends. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset(displayed when using old or new policy framework). - **`repeat_setting`** `object` — The repeat setting - **`repeat_type`** `string`, possible values: `"weekly", "monthly"` — The repeat type. - **`time_period_end`** `integer` — The time period end time. 16 means 4 PM. - **`time_period_start`** `integer` — The time period start time. 15 means 3 PM. - **`time_zone`** `string` — The \[time zone list]\(https\://developer.zoom.us/docs/api-reference/other-references/abbreviation-lists/#timezones) for supported time zones and their formats. - **`select_outbound_caller_id`** `object` — Whether to allow the current extension to change the outbound caller ID when placing calls. - **`allow_hide_outbound_caller_id`** `boolean` — Whether to allow the current extension to hide outbound caller ID. - **`enable`** `boolean` — Whether to allow the current extension to change the outbound caller ID when placing calls. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display when using the new policy framework. - **`shared_line_group_pickup_code`** `object` — After enabling the feature, a unique pickup code will be generated for each Shared Line Group which can be customized in the Shared line group profile. Shared Line Group calls can be answered with the pickup code by users at the same site. - **`enable`** `boolean` — By enabling the feature, a unique pickup code will be generated for each Shared Line Group which can be customized in the Shared line group profile. Shared Line Group calls can be answered with the pickup code by users at the same site. - **`shared_voicemail_notification_by_email`** `object` — Once enabled, users will receive email notification when there is a new shared voicemail/videomail. If the extension that shares the voicemail or videomail has disabled the voicemail or videomail notification by email policy, users will not receive notifications. They only display when the voicemail policy uses the new policy framework. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`show_user_last_transferred_call`** `boolean` — Whether to show the user who last transferred the call. Viewing preferences display on the incoming call panel. Selections made here do not affect the information shown in call logs. - **`sms`** `object` — Allows users, call queues and auto receptionists to send and receive messages. You will still need to assign a valid calling plan and phone number to each user in order for them to send and receive messages. Do not enable this control if you intend to use SMS services with a third party SMS provider. - **`allow_copy`** `boolean` — This field allows users to copy message. - **`allow_paste`** `boolean` — This field allows users to use the paste function to paste content (e.g. text or images) into SMS/MMS conversations. - **`enable`** `boolean` — Whether to allow users, call queues, and auto receptionists to send and receive messages. You need to assign a valid calling plan and phone number to each user for them to send and receive messages. - **`international_sms`** `boolean` — Whether the user can send and receive international messages. - **`international_sms_countries`** `array` — The country to which users can send and receive international messages. The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). **Items:** `string` — Country - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display when using the new policy framework. - **`sms_auto_reply`** `object` — This field enables SMS Auto Reply feature for User, Auto Receptionist, and Call Queue - **`enable`** `boolean` — This field enables SMS Auto Reply feature for User, Auto Receptionist, and Call Queue - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`sms_template`** `object` — Whether to use pre-defined templates to help users compose messages. Power Pack license is required for this feature to work. - **`enable`** `boolean` — Enables the use of pre-defined templates to help users compose messages. Power Pack license is required for this feature to work. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. - **`sms_template_list`** `array` — The SMS template list. **Items:** - **`active`** `boolean` — Whether it is active. - **`content`** `string` — Text to Display. This text will be editable by users. Customer input fields may be added by using the buttons below. Customer information will be removed if not available. - **`description`** `string` — The SMS template description. - **`name`** `string` — The SMS template name. - **`sms_template_id`** `string` — The SMS template ID. - **`team_sms_thread_summary`** `object` — This field allows users to summarize and extract tasks from English SMS conversations. - **`enable`** `boolean` — This field allows users to summarize and extract tasks from English SMS conversations. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`voicemail`** `object` — Allows users to access, share, download, and to delete voicemail and videomail - **`allow_delete`** `boolean` — This setting allows users to delete their own voicemail. It displays only when using the new policy framework. - **`allow_download`** `boolean` — This setting allows users to download their own voicemail. It displays only when using the new policy framework. - **`allow_videomail`** `boolean` — This setting allows users to access, share, download or delete video mail - **`enable`** `boolean` — This setting allows users to access, receive, or share voicemail and video mail. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display when using the new policy framework. - **`voicemail_intent_based_prioritization`** `object` — This field allows users to prioritize urgent voicemails based on predefined priority topics. Users need to have voicemail transcription policy enabled. - **`enable`** `boolean` — This field allows users to prioritize urgent voicemails based on predefined priority topics. Users need to have voicemail transcription policy enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`voicemail_notification_by_email`** `object` — Once enabled, users receive email notifications when there is a new voicemail from users, call queues, auto receptionists, or shared line groups. Users who disabled the shared voicemail notification by email policy receive notifications. They display when the voicemail policy uses the new policy framework. - **`enable`** `boolean` - **`forward_voicemail_to_email`** `boolean` — Whether to forward the voicemail to email. - **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display when using the new policy framework. - **`voicemail_tasks`** `object` — This field allows users to extract tasks from English voicemail transcriptions. Users need to have voicemail transcription policy enabled. - **`enable`** `boolean` — This field allows users to extract tasks from English voicemail transcriptions. Users need to have voicemail transcription policy enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`voicemail_transcription`** `object` — When this setting is enabled, voicemail and videomail transcriptions will be created and remain accessible even if the setting is later disabled. If the setting is disabled, new voicemail and videomail transcriptions will not be generated. - **`enable`** `boolean` — Whether to allow users to access transcriptions of voicemails from the Zoom client, the Zoom web portal, and email notifications. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display when using the new policy framework. - **`zoom_phone_on_desktop`** `object` — Allows user to use Zoom Phone on desktop clients (Mac OS, Windows, VDI client and Linux). - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is mac\_os windows vdi\_client linux. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is mac\_os windows vdi\_client linux. - **`enable`** `boolean` — Whether to allow users to use Zoom Phone on desktop clients (Mac OS, Windows, VDI clinet and Linux). - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, you can reset settings to display when using the new policy framework. - **`zoom_phone_on_mobile`** `object` — Allows user to use Zoom Phone on mobile clients (iOS, iPad OS and Android). - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is ios android intune blackberry. - **`allow_calling_sms_mms`** `boolean` — This field allows calling and SMS/MMS functions on mobile. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is ios android intune blackberry. - **`enable`** `boolean` — This field allows users to use Zoom Phone on mobile clients (iOS, iPad OS and Android). - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, you can reset settings to display when using the new policy framework. - **`zoom_phone_on_pwa`** `object` — This field allows users to use Zoom Phone on Zoom Progressive Web App - **`allow_calling`** `boolean` — This field allows users to use calling on Zoom Progressive Web App - **`allow_sms_mms`** `boolean` — This field allows users to use SMS/MMS on Zoom Progressive Web App - **`enable`** `boolean` — This field allows users to use Zoom Phone on Zoom Progressive Web App - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator can prohibit users from modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset and display when using the new policy framework. - **`short_extension`** `object` — The short extension of the phone site. - **`length`** `integer`, default: `3` — The length of the short extension number for the site. - **`sip_zone`** `object` — When you select a SIP zone nearest to your site, it might help reduce latency and improve call quality. - **`id`** `string` — The SIP Zone ID. - **`name`** `string` — The SIP Zone name. - **`site_code`** `integer` — The \[site code]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h\_79ca9c8f-c97b-4486-aa59-d0d9d31a525b). **Example:** ```json { "country": { "code": "US", "name": "United States" }, "id": "SQv52YtkRLC2dwrDdYtGsA", "main_auto_receptionist": { "extension_id": "pl1XprjhTQK1CCMVKTqCFA", "extension_number": 12345, "id": "Kbdc9lv_SBCuPMjj_lhxVA", "name": "ApiTA_R_2020_07_12_00_41_57_145" }, "name": "ApiTA_Site_2020_07_12_00_41_57_141", "short_extension": { "length": 3 }, "site_code": 321, "policy": { "select_outbound_caller_id": { "enable": true, "locked": true, "locked_by": "site", "modified": true, "allow_hide_outbound_caller_id": true }, "personal_audio_library": { "enable": true, "locked": true, "locked_by": "site", "modified": true, "allow_music_on_hold_customization": true, "allow_voicemail_and_message_greeting_customization": true }, "voicemail": { "allow_delete": true, "allow_download": false, "allow_videomail": true, "enable": true, "locked": true, "locked_by": "site", "modified": true }, "voicemail_transcription": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": false, "forward_voicemail_to_email": true, "enable": true, "locked": true, "locked_by": "site", "modified": true }, "shared_voicemail_notification_by_email": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "international_calling": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "zoom_phone_on_mobile": { "allow_calling_clients": [ "ios" ], "allow_sms_mms_clients": [ "ios" ], "enable": true, "locked": true, "locked_by": "site", "modified": true }, "sms": { "enable": true, "international_sms": true, "international_sms_countries": [ "US" ], "locked": true, "locked_by": "site", "modified": true, "allow_copy": true, "allow_paste": true }, "elevate_to_meeting": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "hand_off_to_room": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "mobile_switch_to_carrier": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "delegation": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "ad_hoc_call_recording": { "enable": true, "recording_start_prompt": false, "recording_transcription": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "locked": true, "locked_by": "account", "modified": true }, "auto_call_recording": { "allow_stop_resume_recording": true, "disconnect_on_recording_failure": true, "enable": true, "locked": true, "locked_by": "account", "modified": true, "recording_calls": "inbound", "recording_transcription": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "inbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true } }, "call_handling_forwarding_to_other_users": { "enable": true, "call_forwarding_type": 1, "locked": true, "locked_by": "site", "modified": true }, "check_voicemails_over_phone": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "call_queue_pickup_code": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "shared_line_group_pickup_code": { "enable": true }, "call_queue_opt_out_reason": { "enable": true, "locked": true, "locked_by": "site", "modified": true, "call_queue_opt_out_reasons_list": [ { "code": "Break", "system": true, "enable": true } ] }, "show_user_last_transferred_call": true, "auto_delete_data_after_retention_duration": { "enable": true, "reset": true, "locked": false, "locked_by": "site", "items": [ { "type": "callLog", "duration": -1, "time_unit": "year" } ], "delete_type": 1 }, "call_park": { "call_not_picked_up_action": 50, "enable": true, "expiration_period": 3, "forward_to": { "display_name": "ZOOM_API Test", "extension_id": "TO586CYlQFC_WCUvPRXytA", "extension_number": 100014, "extension_type": "user", "id": "oG_nYRFuTJiY1tu0Fur_4Q" }, "sequence": 1, "locked": false, "locked_by": "site", "modified": true }, "call_overflow": { "call_overflow_type": 1, "enable": true, "locked": true, "locked_by": "site", "modified": true }, "call_transferring": { "call_transferring_type": 1, "enable": true, "locked": true, "locked_by": "site", "modified": true }, "audio_intercom": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "block_calls_without_caller_id": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "block_external_calls": { "enable": true, "locked": true, "locked_by": "site", "modified": true, "block_business_hours": true, "block_closed_hours": true, "block_holiday_hours": true, "block_call_action": 0, "block_call_change_type": 0, "e2e_encryption": { "enable": true, "locked": true, "locked_by": "site", "modified": true } }, "force_off_net": { "enable": true, "allow_extension_only_users_call_users_outside_site": true }, "external_calling_on_zoom_room_common_area": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "zoom_phone_on_pwa": { "allow_calling": true, "allow_sms_mms": true, "enable": true, "locked": true, "locked_by": "site", "modified": true }, "sms_auto_reply": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "allow_end_user_edit_call_handling": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "allow_caller_reach_operator": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "forward_call_outside_of_site": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "allow_mobile_home_phone_callout": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "obfuscate_sensitive_data_during_call": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "prevent_users_upload_audio_files": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "voicemail_tasks": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "voicemail_intent_based_prioritization": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "team_sms_thread_summary": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "display_call_feedback_survey": { "enable": true, "locked": true, "locked_by": "site", "modified": true, "feedback_type": 1, "feedback_mos": { "enable": true, "min": 1.5, "max": 3.5 }, "feedback_duration": { "enable": true, "min": 0, "max": 10 } }, "call_live_transcription": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "transcription_start_prompt": { "enable": true, "audio_id": "yCT14TwySDGVUypVlKNEyA", "audio_name": "example.mp3" } }, "call_screening": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "exclude_user_company_contacts": false }, "sms_template": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "sms_template_list": [ { "sms_template_id": "0qWIP8S8QXmo6KShUIyvZA", "name": "name", "description": "description", "content": "content", "active": true } ] }, "advanced_encryption": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "disable_incoming_unencrypted_voicemail": true }, "customize_line_name": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "user_line_name": "phoneNumber", "common_area_line_name": "phoneNumber" }, "auto_opt_out_in_call_queue": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "prompt_before_opt_out_call_queue": true }, "incoming_call_notification": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "block_type": "block_activity" }, "call_summary": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "auto_call_summary": true, "call_summary_start_prompt": { "enable": true, "audio_id": "yCT14TwySDGVUypVlKNEyA", "audio_name": "example.mp3" } }, "schedule_firmware_update": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "repeat_type": "weekly", "repeat_setting": { "weekly_setting": { "weekday": "monday" } }, "time_period_start": 15, "time_period_end": 16, "time_zone": "Asia/Shanghai", "end_setting": { "never_end": true, "end_date": "2025-01-01" } }, "zoom_phone_on_desktop": { "allow_calling_clients": [ "mac_os" ], "allow_sms_mms_clients": [ "mac_os" ], "enable": true, "locked": true, "locked_by": "site", "modified": true }, "manage_call_routing_for_unassigned_numbers": { "enable": true, "locked": false, "locked_by": "account", "modified": true, "incoming_call_action": "disconnect", "incoming_call_routing_setting": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "audio_name": "routing-message.mp3" } } }, "sip_zone": { "id": "2J9UXzGuTaqCdZ8sw_0jBw", "name": "sip-zone01" }, "caller_id_name": "CallerIdName", "india_state_code": "CG", "india_city": "Bemetara", "india_sdca_npa": "7700", "india_entity_name": "india-test-entity", "default_emergency_address": { "address_line1": "55 ALMADEN BLVD", "address_line2": "8 Floor", "city": "San Jose", "country": "US", "id": "Qza2T_KATwCeUfTkzGsOmQ", "is_default": true, "level": 1, "state_code": "CA", "status": 1, "zip": "95113" } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The site does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a phone site - **Method:** `DELETE` - **Path:** `/phone/sites/{siteId}` - **Tags:** Sites Use this API to delete a specific [site](https://support.zoom.us/hc/en-us/articles/360020809672) in a Zoom account. To delete a site, in the query parameter, you must provide the site ID of another site where the assets of current site (users, numbers and phones) can be transferred to. You cannot use this API to delete the main site. **Prerequisites:** - Account must have a Pro or a higher plan with Zoom Phone license. - [Multiple sites](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) must be enabled. **[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:delete:site:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Site deleted. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Unable to transfer to the same site.\
Main company number can not change {phoneNumber}.\
Site does not exist. ##### Status: 409 \*\*HTTP Status Code:\*\* \`409\` \
Conflict \*\*Error Code:\*\* \`409\` \
Conflict target extension number, try later. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update phone site details - **Method:** `PATCH` - **Path:** `/phone/sites/{siteId}` - **Tags:** Sites Updates information about a specific [site](https://support.zoom.us/hc/en-us/articles/360020809672). It allows you to organize Zoom Phone users in your organization. **Prerequisites** An account must have a Pro or a higher plan with Zoom Phone license. **[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:site:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`caller_id_name`** `string` — When an outbound call uses a number as the caller ID, the caller ID name and the number display to the called party. The caller ID name can be up to 15 characters. The user can reset the caller ID name by setting it to \"\". - **`default_emergency_address`** `object` — The default emergency address. If the address is not an exact match, we use the system generated corrected address. - **`address_line1` (required)** `string` — The address Line 1 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that contains the house number and street name. - **`city` (required)** `string` — The city of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`country` (required)** `string` — The two-lettered country code (Aplha-2 code in ISO-3166 format) of the site's \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`state_code` (required)** `string` — The state code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`zip` (required)** `string` — The zip code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`address_line2`** `string` — The address Line 2 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that contains the building number, floor number, unit, and others - **`name`** `string` — The name of the site. - **`policy`** `object` — The \[site policy setting]\(https\://support.zoom.us/hc/en-us/articles/360033511872-Changing-Zoom-Phone-policy-settings#h\_af4d1935-9cb1-44d2-9a10-9bfba10d58a7). - **`ad_hoc_call_recording`** `object` — A list of ad hoc call recording settings. - **`enable`** `boolean` — Whether the current extension can record and save calls to the cloud. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`play_recording_beep_tone`** `object` — Whether to play the side tone beep for recorded users while recording. - **`enable`** `boolean` — Whether to play a side tone beep for recorded users while recording. It displays only when ad hoc call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when \`enable\` is true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when \`enable\` is true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The volume of the side tone beep. It displays only when \`enable\` is set to \`true\`. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether call recording transcription is enabled. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`advanced_encryption`** `object` — Whether to allow voicemail to be encrypted with keys which are not accessible to Zoom servers. These voicemails can be decrypted only by the intended user recipient. Shared line appearance, shared line group, call queue, or auto receptionist voicemail will not be encrypted, but can still be played. Email to voicemail, transcriptions, ability to check voicemails by dialing into the voicemail system, or web are not available when this feature is enabled. This policy requires a Power Pack license to be enabled. If the user does who inherits this policy does not have a Power Pack license, the policy will not be applied. - **`disable_incoming_unencrypted_voicemail`** `boolean` — Whether to disable incoming unencrypted voicemail. - **`enable`** `boolean` — Allows voicemail to be encrypted with keys which are not accessible to Zoom servers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`allow_caller_reach_operator`** `object` — This field enables users to allow their callers to reach an operator.Once disabled, users will not be able to route their calls to an operator as part of the "When a call is not answered" setting. - **`enable`** `boolean` — This field enables users to allow their callers to reach an operator .Once disabled, users will not be able to route their calls to an operator as part of the "When a call is not answered" setting. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`allow_end_user_edit_call_handling`** `object` — This field allows users to edit call handling settings. Once disabled, users will not be able to edit their call handling settings on the web portal or enable call forwarding on the client. - **`enable`** `boolean` — This field allows users to edit call handling settings. Once disabled, users will not be able to edit their call handling settings on the web portal or enable call forwarding on the client. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`allow_mobile_home_phone_callout`** `object` — This field allows users to use mobile or home phone to place calls. Zoom app will call this device first before ringing the called number. - **`enable`** `boolean` — This field allows users to use mobile or home phone to place calls. Zoom app will call this device first before ringing the called number. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`audio_intercom`** `object` — Whether to allow hands-free peer-to-peer conversations. When an intercom call is received, the phone beeps to notify the user of the incoming intercom call, and the user's phone automatically answers the intercom call. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`auto_call_recording`** `object` — A list of the site's automatic call recording settings. - **`allow_stop_resume_recording`** `boolean` — Whether the stop and resume of automatic call recording is enabled. - **`disconnect_on_recording_failure`** `boolean` — Whether a call disconnects when there is an issue with the automatic call recording and the call cannot reconnect after five seconds. This does \*\*not\*\* include emergency calls. - **`enable`** `boolean` — Whether automatic call recording is enabled. - **`inbound_audio_notification`** `object` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for inbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`outbound_audio_notification`** `object` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`play_recording_beep_tone`** `object` — Whether to play the side tone beep for recorded users while recording. - **`enable`** `boolean` — Whether to play a side tone beep for recorded users while recording. It only displays when auto call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when \`enable\` is true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when \`enable\` is true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The volume of the side tone beep. It displays only when \`enable\` is set to \`true\`. - **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — The type of calls automatically recorded: \* \`inbound\` \* \`outbound\` \* \`both\` - **`recording_explicit_consent`** `boolean` — Whether the \`Press 1 to provide recording consent\` is enabled. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` to operate the inbound and outbound prompt separately. \Note:\ \* if customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\` and \`inbound\_audio\_notification.recording\_explicit\_consent\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. when the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` to operate the inbound and outbound prompt separately. \Note:\ \* if customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\` and \`inbound\_audio\_notification.recording\_start\_prompt\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\` will be also updated. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. when the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` will be also updated. - **`recording_transcription`** `boolean` — Whether call recording transcription is enabled. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`auto_delete_data_after_retention_duration`** `object` — Allows Zoom to automatically delete data after retention duration. - **`delete_type`** `integer`, possible values: `1, 2` — The delete policy. \* 1 - soft delete \* 2 - permanent delete - **`enable`** `boolean` — This setting allows Zoom to automatically delete data after the retention duration has lapsed. - **`items`** `array` — Items **Items:** - **`duration`** `integer` — The retention duration where -1 means unlimited. For units of time, see the \`time\_unit\` below. For \`year\`, the duration:-1, 1-10; for \`day\`, the duration:-1, 1-60; for \`month\`, the duration:-1, 1-18. - **`time_unit`** `string`, possible values: `"year", "month", "day"` — The unit of time. - **`type`** `string`, possible values: `"callLog", "onDemandRecording", "automaticRecording", "voicemail", "videomail", "sms"` — The data types. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`auto_opt_out_in_call_queue`** `object` — Whether to enable auto Opt-out from Call Queue after logging out from Zoom. - **`enable`** `boolean` — Once enabled, when Call Queue members log out of Zoom (Except for desk phones and Zoom Phone appliances), they will be automatically Opted-out from the Call Queue as well. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`prompt_before_opt_out_call_queue`** `boolean` — Once enabled, always ask the user if they want to opt-out from the Call Queue when they sign out of Zoom. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`block_calls_without_caller_id`** `object` — Whether calls without a caller ID are blocked. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`block_external_calls`** `object` — The rules for blocking external calls during business, closed, and holiday hours. This feature is only available for User, Zoom Room, and Common Area. - **`block_business_hours`** `boolean` — The field blocks external calls during business hours. - **`block_call_action`** `integer`, possible values: `0, 9` — The action when a call is blocked. 9-Disconnect, 0-Forward to voicemail/videomail. - **`block_call_change_type`** `integer`, possible values: `0, 1` — This setting applies only in the old policy framework. It applies changes to new extensions or all extensions. \`1\` - All extension, \`0\` - New extensions. - **`block_closed_hours`** `boolean` — This field blocks external calls during closed hours - **`block_holiday_hours`** `boolean` — The field blocks external calls during holiday hours. - **`e2e_encryption`** `object` — Allows users to switch their calls to End-to-End Encryption. - **`enable`** `boolean` — Whether to allow users to switch their calls to \`End-to-End Encryption\`. If users have \`Automatic Call Recording\` turned on, they cannot use \`End-to-End Encryption\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset. The settings display in the new policy framework. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings, which are compatible with the old or new policy frameworks. - **`call_handling_forwarding_to_other_users`** `object` — Whether to allow users to forward their calls to other numbers. - **`call_forwarding_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`call_live_transcription`** `object` — Whether to let users turn on live transcriptions for a call. - **`enable`** `boolean` — This field enables users to turn on live transcriptions for a call. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`transcription_start_prompt`** `object` — Whether to play a prompt to call participants when the transcription has started. - **`audio_id`** `string` — The unique identifier of the audio item. Only required when \`transcription\_start\_prompt\`is enable. - **`enable`** `boolean` — This setting enables play a prompt to call participants when the transcription has started. - **`call_overflow`** `object` — Allows users to forward their calls to other numbers when a call is not answered. - **`call_overflow_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Can forward to internal extensions and to external contacts \`2\` - Can forward only to internal extensions \`3\` - Can forward only to internal extensions that require inbound Automatic Call Recording \`4\` - Can forward to internal extensions, external contacts, and external numbers - **`enable`** `boolean` — Whether to allow users to forward their calls to other numbers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`call_park`** `object` — Allows calls placed on hold to be resumed from another location using a retrieval code. - **`call_not_picked_up_action`** `integer` — The action when a parked call is not picked up. \`100\` - Ring back to parker \`0\` - Forward to voicemail of the parker \`9\` - Disconnect \`50\` - Forward to another extension - **`enable`** `boolean` — Whether to allow calls on hold to be resumed from another location with a retrieval code. - **`expiration_period`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — A time limit for parked calls in minutes. After the expiration period ends, the retrieval code is no longer valid and a new code generates. - **`forward_to_extension_id`** `string` — The extension's forwarding information when \`call\_not\_picked\_up\_action\` uses the \`50\` - Forward to another extension. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`sequence`** `integer`, possible values: `0, 1` — This field chooses how parked calls are assigned to a BLF (Busy Lamp Field) key. Sequential assignment parks the call at the next available BLF key. Random assignment parks the call at a randomly selected BLF key. \`0\` - Random \`1\` - Sequential - **`call_queue_opt_out_reason`** `object` — The opt-out reasons for call queues. When enabled, call queue members need to select an opt-out reason when they turn off the \`receive queue call\` feature. - **`call_queue_opt_out_reasons_list`** `array` — The reason list. **Items:** - **`code`** `string` — The opt out code. - **`enable`** `boolean` - **`system`** `boolean` — The reason for the system default. It cannot be edited. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`call_queue_pickup_code`** `object` — After enabling the feature, a unique pickup code generates for each queue. It can be customized in the Call Queue profile. Queue calls can be answered with the pickup code by the users under the same site. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`call_screening`** `object` — Whether to incoming direct external callers will be prompted to respond to a button to reach users, callers who don't respond will be disconnected. Devices will not be able to receive any third party faxes. - **`enable`** `boolean` — This setting enables incoming direct external callers will be prompted to respond to a button to reach users, callers who don't respond will be disconnected. Devices will not be able to receive any third party faxes. - **`exclude_user_company_contacts`** `boolean` — Whether exclude user and company contacts from call screening, calls will reach users as normal. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`call_summary`** `object` — This setting allows users to generate a summary of a phone call. For users who enable call summary during a call, a summary will be automatically sent to them on the client and the web portal after the call has ended. It requires the account to enable the \`Enable Phone Call Summary\` feature. - **`auto_call_summary`** `boolean` — This setting enables an automatic call summary. - **`call_summary_start_prompt`** `object` — Whether to play a prompt to call participant when call summary has started. - **`audio_id`** `string` — The unique identifier of the audio item. Only required when you enable \`call\_summary\_start\_prompt\`. - **`enable`** `boolean` — Whether to play a prompt to call participant when call summary has started. - **`enable`** `boolean` — Allows users to generate a summary of a phone call. For users who enable call summary during a call, a summary will be automatically sent to them on the client and the web portal after the call has ended. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`call_transferring`** `object` — Allows users to warm or blind transfer their calls. This does not apply to warm transfer on IP Phones except for Yealink. Voicemail is transferable only to internal extensions. - **`call_transferring_type`** `integer`, possible values: `1, 2, 3, 4` — 1-No restriction 2-Medium restriction (external numbers and external contacts not allowed) 3-High restriction (external numbers, unrecorded external contacts, and internal extensions without inbound automatic recording not allowed) 4-Low restriction (external numbers not allowed) - **`enable`** `boolean` — Whether to allow users to warm or blind transfer their calls. This does not apply to warm transfer on IP Phones except for Yealink. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`check_voicemails_over_phone`** `object` — Whether to allow extension owners or members of a shared line group to check voicemails for extension numbers over the phone using the PIN code. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`customize_line_name`** `object` — Whether to enable the line name template will be applied to all the desk phones on your account. Make sure there is enough space on the desk phone to display the line name. - **`common_area_line_name`** `string`, possible values: `"phoneNumber", "extensionNumber", "displayName", "displayName;extensionNumber"` — The common area line name. - **`enable`** `boolean` — This setting enables the line name template to be applied to all the desk phones on your account. Make sure there is enough space on the desk phone to display the line name. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`user_line_name`** `string`, possible values: `"phoneNumber", "extensionNumber", "displayName", "displayName;extensionNumber", "firstName;extensionNumber", "firstName;lastName;extensionNumber"` — The user line name. - **`delegation`** `object` — Whether the user can use \[call delegation]\(https\://support.zoom.us/hc/en-us/articles/360032881731-Setting-up-call-delegation-shared-lines-appearance-). - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`display_call_feedback_survey`** `object` — Whether a thumbs up or down survey displays at the end of each call. If participants respond with thumbs down, they can provide additional information about what went wrong. - **`enable`** `boolean` — Whether to display a thumbs up or down survey at the end of each call. If participants respond with thumbs down, they can provide additional information about what went wrong. - **`feedback_duration`** `object` — The call duration, in seconds, 0-60. - **`enable`** `boolean` — This field displays end-of-call experience feedback survey when call duration issues are detected. - **`max`** `integer` — The maximum call duration. - **`min`** `integer` — The minimum call duration. - **`feedback_mos`** `object` — The MOS score. Minimum: 1.0. Maximum: 3.0. The format is one decimal point. - **`enable`** `boolean` — This field displays end-of-call experience feedback survey when call mos score issues are detected. - **`max`** `number` — The maximum MOS score. - **`min`** `number` — The minimum MOS score. - **`feedback_type`** `integer`, possible values: `1, 2` — This field allows you to display feedback survey, \`1\` - display for every call, \`2\` - display when call quality issues are detected. Default \`1\`, if set with value \`2\`, need to set \`feed\_back\_mos\` or \`feedback\_duration\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`elevate_to_meeting`** `object` — Allows users to elevate their phone calls to a meeting. - **`enable`** `boolean` — Whether to allow users to elevate their phone calls to a meeting. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`external_calling_on_zoom_room_common_area`** `object` — This field allows Zoom Rooms to call external phone numbers based on the calling plans. - **`enable`** `boolean` — This field allows Zoom Rooms to call external phone numbers based on the calling plans. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`force_off_net`** `object` — It requires the account to enable the \`Force Calls out to the PSTN network\`feature. - **`allow_extension_only_users_call_users_outside_site`** `boolean` — This setting allows extension only users to call to users outside the site. - **`enable`** `boolean` — By enabling Force Off-Net, calls from users or extensions between sites route through the PSTN network. Users in this site can only be allowed to be part of advanced functionality (eg. Auto Receptionists, Call Queues) that is configured in this site. Users require a paid Zoom license and BYOC-P phone numbers to call between sites. - **`forward_call_outside_of_site`** `object` — This field allows users to forward their calls outside of their own site.Once disabled, users will only be able to forward their calls to users, call queues, shared line groups, etc., within their own site. - **`enable`** `boolean` — This field allows users to forward their calls outside of their own site.Once disabled, users will only be able to forward their calls to users, call queues, shared line groups, etc., within their own site. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`hand_off_to_room`** `object` — Allows users to send a call to a Zoom Room. - **`enable`** `boolean` — Whether to allow users to send a call to a Zoom Room. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`incoming_call_notification`** `object` — Allows users to select if an incoming call notification would block their current activity. - **`block_type`** `string`, possible values: `"block_activity", "continue_with_alert"` — The incoming call notification block type. \`block\_activity\` means "Block my current activity", \`continue\_with\_alert\` means "Alert me but allow me to continue my current activity". - **`enable`** `boolean` — Allows users to select if an incoming call notification would block their current activity. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`international_calling`** `object` — Whether to allow extensions to place international calls outside of the calling plan. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`manage_call_routing_for_unassigned_numbers`** `object` — Manage call routing for unassigned numbers. - **`enable`** `boolean` — Whether to enable call routing for unassigned numbers. - **`incoming_call_action`** `string`, possible values: `"disconnect", "play_message_then_disconnect", "forward_to_another_extension"` — The routing action for incoming calls to unassigned numbers. \`disconnect\` - Disconnect the call. \`play\_message\_then\_disconnect\` - Play a message and then disconnect. \`forward\_to\_another\_extension\` - Forward the call to another extension. - **`incoming_call_routing_setting`** `object` — The routing setting. Only applies when \`incoming\_call\_action\` is not \`disconnect\`. - **`locked`** `boolean` — Whether the senior administrator allows lower levels to modify this setting. - **`reset`** `boolean` — Whether to reset this setting to inherited defaults from parent level. - **`mobile_switch_to_carrier`** `object` — Allows users to switch from Zoom Phone to their native carrier. - **`enable`** `boolean` — Whether to allow the user to switch from a Zoom Phone to their native carrier. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`obfuscate_sensitive_data_during_call`** `object` — Once enabled, when a user on an active call presses a dial pad key on screen or number on the keyboard, the client DTMF tones will be muted and the numbers will be masked on the screen. - **`enable`** `boolean` — Once enabled, when a user on an active call presses a dial pad key on screen or number on the keyboard, the client DTMF tones will be muted and the numbers will be masked on the screen. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings, if the current settings use the new policy framework. - **`personal_audio_library`** `object` — Allows users to change their own Audio Library. - **`allow_music_on_hold_customization`** `boolean` — Whether to allow music on hold customization. - **`allow_voicemail_and_message_greeting_customization`** `boolean` — Whether to allow voicemail and message greeting customization. - **`enable`** `boolean` — This setting allows users to access, share, download, or delete voicemail or videomail. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`prevent_users_upload_audio_files`** `object` — Once enabled, users will not be able to upload audios on the web portal. Users will be still able to access text-to-speech or record audio files. - **`enable`** `boolean` — Once enabled, users will not be able to upload audios on the web portal. Users will be still able to access text-to-speech or record audio files. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`schedule_firmware_update`** `object` — Defines how often and when to update the firmware of the devices. - **`enable`** `boolean` — Whether to define how often and when to update firmware of the devices. - **`end_setting`** `object` — End setting. - **`end_date`** `string`, format: `date` — The end date in the following format: \\"yyyy-MM-dd\\". Only required when \`never\_end\` is false. - **`never_end`** `boolean` — This field indicates the setting never ends. - **`repeat_setting`** `object` — The repeat setting. - **`repeat_type`** `string`, possible values: `"weekly", "monthly"` — The repeat type. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`time_period_end`** `integer` — The time period end time. Example: 16 means 4 PM. - **`time_period_start`** `integer` — The time period start time. 15 means 3 PM. - **`time_zone`** `string` — The \[time zone list]\(https\://developer.zoom.us/docs/api-reference/other-references/abbreviation-lists/#timezones) for supported time zones and their formats. - **`select_outbound_caller_id`** `object` — Whether to allow the current extension to change the outbound caller ID when placing calls. - **`allow_hide_outbound_caller_id`** `boolean` — Whether to allow the current extension to hide outbound caller ID. - **`enable`** `boolean` — Whether to allow the current extension to change the outbound caller ID when placing calls. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`shared_line_group_pickup_code`** `object` — After enabling the feature, a unique pickup code will be generated for each Shared Line Group which can be customized in the Shared line group profile. Shared Line Group calls can be answered with the pickup code by users at the same site. - **`enable`** `boolean` — By enabling the feature, a unique pickup code is generated for each Shared Line Group which can be customized in the Shared line group profile. Shared Line Group calls can be answered with the pickup code by users at the same site. - **`shared_voicemail_notification_by_email`** `object` — Once enabled, users receive email notification when there is a new shared voicemail or videomail. If the extension that shares the voicemail or videomail has disabled the voicemail or videomail notification by email policy, users will not receive notifications. This setting only displays when the voicemail policy uses the new policy framework. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`show_user_last_transferred_call`** `boolean` — Whether to show the user who last transferred the call. Viewing preferences display on the incoming call panel. Selections made here will not affect the information shown in call logs. - **`sms`** `object` — Allows users, call queues, and auto receptionists to send and receive messages. You will still need to assign a valid calling plan and phone number to each user in order for them to send and receive messages. Do not enable this control if you intend to use SMS services with a third party SMS provider. - **`allow_copy`** `boolean` — This field allows users to copy messages. - **`allow_paste`** `boolean` — This field allows users to use the paste function to paste content (e.g. text or images) into SMS/MMS conversations. - **`enable`** `boolean` — Whether to allow users, call queues, and auto receptionists to send and receive messages. You need to assign a valid calling plan and phone number to each user for them to send and receive messages. - **`international_sms`** `boolean` — Whether the user can send and receive international messages. - **`international_sms_countries`** `array` — The country which users can send and receive international messages. The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). **Items:** `string` — Country ISO code - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`sms_auto_reply`** `object` — This field enables SMS Auto Reply feature for User, Auto Receptionist, and Call Queue - **`enable`** `boolean` — This field enables SMS Auto Reply feature for User, Auto Receptionist, and Call Queue - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`sms_template`** `object` — Whether to use pre-defined templates to help users compose messages. Power Pack license is required for this feature to work. - **`enable`** `boolean` — This setting enables you to use pre-defined templates to help users compose messages. Power Pack license is required for this feature to work. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings when the current settings use the new policy framework. - **`sms_template_list`** `array` — The SMS template list. **Items:** - **`sms_template_id` (required)** `string` — The SMS template ID. - **`active`** `boolean` — Whether it is active or not. - **`team_sms_thread_summary`** `object` — This field allows users to summarize and extract tasks from English SMS conversations. - **`enable`** `boolean` — This field allows users to summarize and extract tasks from English SMS conversations. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`voicemail`** `object` — Allows users to access, share, download, and to delete voicemail and videomail. - **`allow_delete`** `boolean` — This setting allows users to delete their own voicemail. It displays only when using the new policy framework. - **`allow_download`** `boolean` — This setting allows users to download their own voicemail. It displays only when using the new policy framework. - **`allow_videomail`** `boolean` — Whether to allow users to access, share, download, or delete the videomail - **`enable`** `boolean` — Whether to allow users to access, receive, or share voicemail and videomail. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`voicemail_intent_based_prioritization`** `object` — This field allows users to prioritize urgent voicemails based on predefined priority topics. Users need to have voicemail transcription policy enabled. - **`enable`** `boolean` — This field allows users to prioritize urgent voicemails based on predefined priority topics. Users need to have voicemail transcription policy enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`voicemail_notification_by_email`** `object` — Once enabled, users receive email notifications when there is a new voicemail from users, call queues, auto receptionists, or shared line groups. Users who disabled the shared voicemail notification by email policy will not receive notifications. This setting only displays when the voicemail policy uses the new policy framework. - **`enable`** `boolean` - **`forward_voicemail_to_email`** `boolean` — Whether to forward the voicemail to email. - **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`voicemail_tasks`** `object` — This field allows users to extract tasks from English voicemail transcriptions. Users need to have voicemail transcription policy enabled. - **`enable`** `boolean` — This field allows users to extract tasks from English voicemail transcriptions. Users need to have voicemail transcription policy enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`voicemail_transcription`** `object` — When you enable this setting, the system creates voicemail and videomail transcriptions and keeps them accessible, even if you disable the setting later. When you disable the setting, the system stops generating new transcriptions. - **`enable`** `boolean` — Whether to allow users to access transcriptions of voicemails from the Zoom client, Zoom web portal, and email notifications. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`zoom_phone_on_desktop`** `object` — Allow users to use Zoom Phone on desktop clients (Mac OS, Windows, VDI client and Linux). - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is mac\_os windows vdi\_client linux. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is mac\_os windows vdi\_client linux. - **`enable`** `boolean` — Whether to allow users to use Zoom Phone on desktop clients (Mac OS, Windows, VDI clinet and Linux). - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`zoom_phone_on_mobile`** `object` — Allows users to use Zoom Phone on mobile clients (iOS, iPad OS and Android). - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is ios android intune blackberry. - **`allow_calling_sms_mms`** `boolean` — Whether to allow calling and SMS/MMS functions on mobile. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is ios android intune blackberry. - **`enable`** `boolean` — Whether to allow users to use Zoom Phone on mobile clients (iOS, iPad OS and Android). - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`zoom_phone_on_pwa`** `object` — This field allows users to use Zoom Phone on Zoom Progressive Web App - **`allow_calling`** `boolean` — This field allows users to use calling on Zoom Progressive Web App - **`allow_sms_mms`** `boolean` — This field allows users to use sms/mms on Zoom Progressive Web App - **`enable`** `boolean` — This field allows users to use Zoom Phone on Zoom Progressive Web App - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`short_extension`** `object` — The short extension of the phone site. - **`length`** `integer` — This setting specifies the length of short extension numbers for the site. - **`ranges`** `array` — The range list. After adding a short extension range, the newly assigned extension numbers start from the \`range\_from\` value. **Items:** - **`range_from`** `string` — The short extension's starting range number, which can be a non-negative value. This value \*\*must\*\* be less than the \`range\_to\` value. - **`range_to`** `string` — The short extension's ending range number, which can be a non-negative value. This value \*\*cannot\*\* be less than or equal to the \`range\_from\` value. - **`sip_zone`** `object` — If the account enabled the \`Display Custom SIP Zone Options on Web Portal\` feature, then selecting a SIP zone nearest to your site helps reduce latency and improve call quality. - **`id`** `string` — The SIP zone ID. - **`site_code`** `integer` — The \[site code]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h\_79ca9c8f-c97b-4486-aa59-d0d9d31a525b). **Example:** ```json { "name": "The SJ site", "site_code": 2341, "short_extension": { "length": 3, "ranges": [ { "range_from": "123", "range_to": "456" } ] }, "default_emergency_address": { "address_line1": "55 Almaden Blvd", "address_line2": "Test 3", "city": "San Jose", "country": "US", "state_code": "CA", "zip": "95113" }, "sip_zone": { "id": "2J9UXzGuTaqCdZ8sw_0jBw" }, "caller_id_name": "CallerIdName", "policy": { "select_outbound_caller_id": { "enable": true, "reset": true, "locked": true, "allow_hide_outbound_caller_id": true }, "personal_audio_library": { "enable": true, "reset": true, "locked": true, "allow_music_on_hold_customization": true, "allow_voicemail_and_message_greeting_customization": true }, "voicemail": { "allow_delete": true, "allow_download": false, "allow_videomail": true, "enable": true, "reset": true, "locked": true }, "voicemail_transcription": { "enable": true, "reset": true, "locked": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": false, "forward_voicemail_to_email": true, "enable": true, "reset": true, "locked": true }, "shared_voicemail_notification_by_email": { "enable": true, "reset": true, "locked": true }, "international_calling": { "enable": true, "reset": true, "locked": true }, "zoom_phone_on_mobile": { "enable": true, "reset": true, "locked": true, "allow_calling_clients": [ "ios" ], "allow_sms_mms_clients": [ "ios" ] }, "sms": { "enable": true, "reset": true, "locked": true, "international_sms": true, "international_sms_countries": [ "US" ], "allow_copy": true, "allow_paste": true }, "elevate_to_meeting": { "enable": true, "reset": true, "locked": true }, "hand_off_to_room": { "enable": true, "reset": true, "locked": true }, "mobile_switch_to_carrier": { "enable": true, "reset": true, "locked": true }, "delegation": { "enable": true, "reset": true, "locked": true }, "ad_hoc_call_recording": { "enable": true, "reset": true, "locked": true, "recording_start_prompt": false, "recording_transcription": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" } }, "auto_call_recording": { "allow_stop_resume_recording": true, "disconnect_on_recording_failure": true, "enable": true, "reset": true, "locked": true, "recording_calls": "inbound", "recording_transcription": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "inbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true } }, "call_handling_forwarding_to_other_users": { "enable": true, "call_forwarding_type": 1, "reset": true, "locked": true }, "check_voicemails_over_phone": { "enable": true, "reset": true, "locked": true }, "call_queue_pickup_code": { "enable": true, "reset": true, "locked": true }, "shared_line_group_pickup_code": { "enable": true }, "call_queue_opt_out_reason": { "enable": true, "reset": true, "locked": true, "call_queue_opt_out_reasons_list": [ { "code": "Break", "system": true, "enable": true } ] }, "show_user_last_transferred_call": true, "auto_delete_data_after_retention_duration": { "enable": true, "reset": true, "locked": true, "items": [ { "type": "callLog", "duration": -1, "time_unit": "year" } ], "delete_type": 1 }, "call_park": { "call_not_picked_up_action": 50, "enable": true, "reset": true, "locked": true, "expiration_period": 3, "forward_to_extension_id": "TO586CYlQFC_WCUvPRXytA", "sequence": 1 }, "call_overflow": { "call_overflow_type": 1, "enable": true, "reset": true, "locked": true }, "call_transferring": { "call_transferring_type": 1, "enable": true, "reset": true, "locked": true }, "audio_intercom": { "enable": true, "reset": true, "locked": true }, "block_calls_without_caller_id": { "enable": true, "reset": true, "locked": true }, "block_external_calls": { "enable": true, "reset": true, "locked": true, "block_business_hours": true, "block_closed_hours": true, "block_holiday_hours": true, "block_call_action": 0, "block_call_change_type": 0, "e2e_encryption": { "enable": true, "locked": true, "locked_by": "site", "modified": true } }, "force_off_net": { "enable": true, "allow_extension_only_users_call_users_outside_site": true }, "external_calling_on_zoom_room_common_area": { "enable": true, "reset": true, "locked": true }, "zoom_phone_on_pwa": { "enable": true, "reset": true, "locked": true, "allow_calling": true, "allow_sms_mms": true }, "sms_auto_reply": { "enable": true, "reset": true, "locked": true }, "allow_end_user_edit_call_handling": { "enable": true, "reset": true, "locked": true }, "allow_caller_reach_operator": { "enable": true, "reset": true, "locked": true }, "forward_call_outside_of_site": { "enable": true, "reset": true, "locked": true }, "allow_mobile_home_phone_callout": { "enable": true, "reset": true, "locked": true }, "obfuscate_sensitive_data_during_call": { "enable": true, "reset": true, "locked": true }, "prevent_users_upload_audio_files": { "enable": true, "reset": true, "locked": true }, "voicemail_tasks": { "enable": true, "reset": true, "locked": true }, "voicemail_intent_based_prioritization": { "enable": true, "reset": true, "locked": true }, "team_sms_thread_summary": { "enable": true, "reset": true, "locked": true }, "display_call_feedback_survey": { "enable": true, "reset": true, "locked": true, "feedback_type": 1, "feedback_mos": { "enable": true, "min": 1.5, "max": 3.5 }, "feedback_duration": { "enable": true, "min": 0, "max": 10 } }, "call_live_transcription": { "enable": true, "reset": true, "locked": true, "transcription_start_prompt": { "enable": true, "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "call_screening": { "enable": true, "reset": true, "locked": true, "exclude_user_company_contacts": true }, "sms_template": { "enable": true, "reset": true, "locked": true, "sms_template_list": [ { "sms_template_id": "0qWIP8S8QXmo6KShUIyvZA", "active": true } ] }, "advanced_encryption": { "enable": true, "reset": true, "locked": true, "disable_incoming_unencrypted_voicemail": true }, "customize_line_name": { "enable": true, "reset": true, "locked": true, "user_line_name": "phoneNumber", "common_area_line_name": "phoneNumber" }, "auto_opt_out_in_call_queue": { "enable": true, "reset": true, "locked": true, "prompt_before_opt_out_call_queue": true }, "incoming_call_notification": { "enable": true, "reset": true, "locked": true, "block_type": "block_activity" }, "call_summary": { "enable": true, "reset": true, "locked": true, "auto_call_summary": true, "call_summary_start_prompt": { "enable": true, "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "schedule_firmware_update": { "enable": true, "reset": true, "repeat_type": "weekly", "repeat_setting": { "weekly_setting": { "weekday": "monday" } }, "time_period_start": 15, "time_period_end": 16, "time_zone": "Asia/Shanghai", "end_setting": { "never_end": true, "end_date": "2025-01-01" } }, "zoom_phone_on_desktop": { "enable": true, "reset": true, "locked": true, "allow_calling_clients": [ "mac_os" ], "allow_sms_mms_clients": [ "mac_os" ] }, "manage_call_routing_for_unassigned_numbers": { "enable": true, "locked": true, "reset": false, "incoming_call_action": "disconnect", "incoming_call_routing_setting": { "audio_id": "yCT14TwySDGVUypVlKNEyA" } } } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Site details updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist.\
Align the range with the number of digits entered in \`length\`\
\`range\_from\` value must be smaller than \`range\_to\` value.\
Invalid address: {formattedAddress}.\
Change country is not allowed.\
Personal emergency address could not be changed to default.\
Cannot update emergency address whose status is {status}.\
This address could not be validated.\
Invalid site code length.\
Invalid short extension number length.\
Invalid site code length.\
Each set of ranges cannot have intersections.\
The range\_from or range\_to can not be empty.\
The range\_from or range\_to must be digits only. \
\*\*Error Code:\*\* \`400\` \
Site code is disabled. \
\*\*Error Code:\*\* \`13800\` \
You do not enable OP flag named 'Enable Caller Based Consent Options', please using same value to update 'inbound\_audio\_notification.recording\_start\_prompt' and 'outbound\_audio\_notification.recording\_start\_prompt'. \
\*\*Error Code:\*\* \`13800\` \
You do not enable OP flag named 'Enable Caller Based Consent Options', please using same value to update 'inbound\_audio\_notification.recording\_start\_prompt\_audio\_id' and 'outbound\_audio\_notification.recording\_start\_prompt\_audio\_id'. \
\*\*Error Code:\*\* \`13800\` \
You do not enable OP flag named 'Enable Caller Based Consent Options', please using same value to update 'inbound\_audio\_notification.recording\_explicit\_consent' and 'outbound\_audio\_notification.recording\_explicit\_consent'. \
\*\*Error Code:\*\* \`13802\` \
Audio does not exist: {audioId}. \
\*\*Error Code:\*\* \`13803\` \
SMS template does not exist: {sms\_template\_id}. \
\*\*Error Code:\*\* \`13804\` \
Invalid time period. \
\*\*Error Code:\*\* \`13805\` \
Invalid end date. \
\*\*Error Code:\*\* \`13806\` \
Time zone is invalid: {time\_zone}. \
\*\*Error Code:\*\* \`13808\` \
Extension does not exist: {extension\_id} \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List customized outbound caller ID phone numbers - **Method:** `GET` - **Path:** `/phone/sites/{siteId}/outbound_caller_id/customized_numbers` - **Tags:** Sites Use this API to retrieve phone numbers that can be used as the `site-level` customized outbound caller ID. - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[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:list_site_customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Customized numbers for outbound caller ID listed successfully. ###### Content-Type: application/json - **`customize_numbers`** `array` **Items:** - **`customize_id`** `string` — The customization ID. - **`display_name`** `string` — Name of the phone number. - **`extension_id`** `string` — The extension ID. - **`extension_name`** `string` — The extension name. - **`extension_number`** `string` — The extension number. - **`extension_type`** `string` — The extension type. - **`incoming`** `boolean` — Whether the incoming policy is enabled for the phone number. - **`outgoing`** `boolean` — Whether the outgoing policy is enabled for the phone number. - **`phone_number`** `string` — The phone number in E164 format. - **`phone_number_id`** `string` — ID of the phone number. - **`site`** `object` - **`id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`name`** `string` — Name of the site. - **`next_page_token`** `string` — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "customize_numbers": [ { "customize_id": "8_RkKw9OQ42oYsXqJJjs4A", "phone_number_id": "55JUZPwERHuGttd_j4qBsQ", "phone_number": "+12055437350", "display_name": "test abc", "incoming": true, "outgoing": true, "extension_id": "HaSokHMCSeK8taMdv2vnXQ", "extension_type": "callQueue", "extension_number": "10001", "extension_name": "SJ CQ", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "testSite" } } ], "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 30, "total_records": 10 } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add customized outbound caller ID phone numbers - **Method:** `POST` - **Path:** `/phone/sites/{siteId}/outbound_caller_id/customized_numbers` - **Tags:** Sites Use this API to add the `site-level` customized outbound caller ID phone numbers. - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[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:write:site_customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`phone_number_ids`** `array` — The phone number IDs. **Items:** `string` **Example:** ```json { "phone_number_ids": [ "55JUZPwERHuGttd_j4qBsQ" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Customized caller ID numbers added successfully. ###### Content-Type: application/json **Example:** ```json null ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove customized outbound caller ID phone numbers - **Method:** `DELETE` - **Path:** `/phone/sites/{siteId}/outbound_caller_id/customized_numbers` - **Tags:** Sites Use this API to remove the `site-level` customized outbound caller ID phone numbers. - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[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:delete:site_customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*Created\*\* Customized numbers have been deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a phone site setting - **Method:** `GET` - **Path:** `/phone/sites/{siteId}/settings/{settingType}` - **Tags:** Sites Gets the site setting about a specific [site](https://support.zoom.us/hc/en-us/articles/360020809672) according to the setting type. Sites allow you to organize Zoom Phone users in your organization. **Prerequisites:** - Account must have a Pro or a higher plan with Zoom Phone license. - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). **[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:site_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Site setting information retrieved successfully. ###### Content-Type: application/json - **`audio_prompt`** `object` — The audio prompt setting. - **`audio_while_connecting`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`greeting_leave_voicemail_instruction`** `object` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`greeting_menu_connect_to_operator_leave_or_check_voicemail`** `object` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`greeting_menu_connect_to_operator_or_leave_voicemail`** `object` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`greeting_menu_leave_or_check_voicemail`** `object` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`hold_music`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`language`** `string` — The audio prompt language code. American English: \`en-US\` British English: \`en-GB\` Espa\ñol americano: \`es-US\` Fran\çais canadien: \`fr-CA\` Dansk: \`da-DK\` Deutsch: \`de-DE\` Espa\ñol: \`es-ES\` Fran\çais: \`fr-FR\` Italiano: \`it-IT\` Nederlands: \`nl-NL\` Portugues portugal: \`pt-PT\` Japanese: \`ja-JP\` Korean: \`ko-KO\` Portugues brasil: \`pt-BR\` Chinese: \`zh-CN\` Taiwanese: \`zh-TW\` - **`leave_voicemail_introduction`** `object` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`message_greeting`** `object` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The audio item ID. If the audio was removed from the user's audio library, it will be marked with a prefix, \`removed\_vWby3OZaQlS1nAdmEAqgwA\` for example. You can still use this audio ID to get the audio information in \[Get an audio item]\(https\://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Audio-Library/operation/GetAudioItem) API. - **`name`** `string` — The name of the audio item. - **`billing_account`** `object` — The billing account setting. - **`id`** `string` — The billing account ID. - **`name`** `string` — The billing account name. - **`business_hours`** `object` — This field allows you to set the default business hours for all users, Zoom Rooms, and Common Areas for the site. - **`custom_hour_type`** `integer`, possible values: `1, 2` — Business Hour Type \`1\`- 24 hours a day, 7 days a week; \`2\`- Custom hours. - **`custom_hours`** `array` — The custom business hours settings. **Items:** - **`from`** `string` — The custom hours start time, and \`HH:mm\` format. - **`to`** `string` — The custom hours end time, in \`HH:mm\` format. - **`type`** `integer`, possible values: `0, 1, 2` — The type of custom hours: \* \`0\` \— Disabled. \* \`1\` \— 24 hours. \* \`2\` \— Customized hours. - **`weekday`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week: \* \`1\` \— Sunday \* \`2\` \— Monday \* \`3\` \— Tuesday \* \`4\` \— Wednesday \* \`5\` \— Thursday \* \`6\` \— Friday \* \`7\` \— Saturday - **`overflow`** `object` — This field seta the default overflow for business hours for users, Call Queues, and Shared Line Groups. - **`allow_caller_to_check_voicemail`** `boolean` — The option to allow callers to check voicemail. - **`allow_caller_to_reach_operator`** `boolean` — The option to allow callers to reach an operator. - **`operator`** `object` — The operator to allow callers to reach. - **`display_name`** `string` — The display name of extension. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "zoomRoom", "ciscoRoom/PolycomRoom", "sharedLineGroup"` — The extension type. \* \`user\` \* \`callQueue\` \* \`autoReceptionist\` \* \`commonArea\` \* \`zoomRoom\` \* \`ciscoRoom/PolycomRoom\` \* \`sharedLineGroup\` - **`closed_hours`** `object` — This field allows you to set the default closed hours for all users, Zoom Rooms, Common Areas, Auto Receptionists, Call Queues, and Shared Line Groups for the site. - **`overflow`** `object` — This field seta the default overflow for business hours for users, Call Queues, and Shared Line Groups. - **`allow_caller_to_check_voicemail`** `boolean` — The option to allow callers to check voicemail. - **`allow_caller_to_reach_operator`** `boolean` — The option to allow callers to reach an operator. - **`operator`** `object` — The operator to allow callers to reach. - **`display_name`** `string` — The display name of extension. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "zoomRoom", "ciscoRoom/PolycomRoom", "sharedLineGroup"` — The extension type. \* \`user\` \* \`callQueue\` \* \`autoReceptionist\` \* \`commonArea\` \* \`zoomRoom\` \* \`ciscoRoom/PolycomRoom\` \* \`sharedLineGroup\` - **`desk_phone`** `object` — The desk phone setting. - **`general_setting`** `object` — These general configurations of the desk phones in your account can be set globally, but some settings may not work for individual models. You need to manually reboot the desk phones to apply these changes. - **`setting_type`** `string`, possible values: `"account_setting", "custom_setting"`, default: `"account_setting"` — The setting type. \`account\_setting\` will use the configuration defined at the account level. \`custom\_setting\` allows custom configurations to be defined specifically for this Site. - **`web_interface`** `boolean` — Enables desk phone web interface. Only returns when \`setting\_type\` is \`custom\_setting\`. - **`hot_desking_session_timeout`** `object` — The set duration after which users are signed out of hot desking devices. - **`number` (required)** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 30` - **`unit`** `string`, possible values: `"minutes", "hours"`, default: `"hours"` — The \`minutes\` - available if the \`number\` values are: '5, 10, 15, 30' \`hours\` - not available if the \`number\` value is '30'. - **`dial_by_name`** `object` — The dial by name directory setting. - **`inherit`** `boolean` — Whether to inherit the dial by name directory maintained at the account level. This directory is read-only to sites. - **`rule`** `string`, possible values: `"first_name", "last_name"` — The search extensions by first or last name. Callers must enter at least two characters to perform a name search. - **`status`** `boolean` — Whether to allow callers to search for an extension by the first or last name. Currently supports English only. - **`holiday_hours`** `object` — This field allows you to set the default holiday hours for all users, Zoom Rooms, Common Areas, Auto Receptionists, Call Queues, and Shared Line Groups for the site. - **`holidays`** `array` — The holiday hours settings. **Items:** - **`from`** `string`, format: `date-time` — The holiday start date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`holiday_id`** `string` — The holiday ID. - **`name`** `string` — The name of the holiday. - **`to`** `string`, format: `date-time` — The holiday end date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`overflow`** `object` — This field seta the default overflow for business hours for users, Call Queues, and Shared Line Groups. - **`allow_caller_to_check_voicemail`** `boolean` — The option to allow callers to check voicemail. - **`allow_caller_to_reach_operator`** `boolean` — The option to allow callers to reach an operator. - **`operator`** `object` — The operator to allow callers to reach. - **`display_name`** `string` — The display name of extension. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "callQueue", "autoReceptionist", "commonArea", "zoomRoom", "ciscoRoom/PolycomRoom", "sharedLineGroup"` — The extension type. \* \`user\` \* \`callQueue\` \* \`autoReceptionist\` \* \`commonArea\` \* \`zoomRoom\` \* \`ciscoRoom/PolycomRoom\` \* \`sharedLineGroup\` - **`location_based_routing`** `object` — The location-based routing setting of the site. - **`enable`** `boolean` — When the policy is enabled, Zoom Phone calls are subject to the policy options defined. - **`enable_media_off_load_pstn_calls`** `boolean` — This field enables media offload for extensions to PSTN (Public Switched Telephone Network) calls. - **`place_receive_pstn_calls`** `boolean` — The place and receive PSTN (Public Switched Telephone Network) calls only when inside the locations. - **`outbound_caller_id`** `object` — The outbound caller ID setting. - **`auto_receptionists_numbers`** `boolean` — When checked, auto receptionists members will use the numbers as the outbound caller ID - **`call_queue_numbers`** `boolean` — When checked, call queue members will use the numbers as the outbound caller ID. - **`share_line_group_numbers`** `boolean` — When checked, share line group members will use the numbers as the outbound caller ID. - **`show_outbound_caller_id_for_internal_call`** `boolean` — When a call is made to an internal extension that uses the numbers associated with Auto Receptionist or Call Queue as the caller ID, the receiver sees an outbound caller ID selected by the caller. - **`security`** `object` — This field upgrades devices from the current site to use the SRTP with AES-256 bit encryption. After adding or removing a device type, devices of the corresponding type will get re-synced. For more information, see \[Zoom Phone Encryption]\(https\://support.zoom.us/hc/en-us/articles/360042578911#h\_36a22ca1-89f1-4614-8d7e-3c6a957b261c). - **`device_types`** `array` — The effective device types. **Items:** `string` **Example:** ```json { "location_based_routing": { "enable": false, "place_receive_pstn_calls": false, "enable_media_off_load_pstn_calls": false }, "business_hours": { "custom_hour_type": 2, "custom_hours": [ { "from": "09:00", "to": "18:00", "type": 0, "weekday": 1 } ], "overflow": { "allow_caller_to_reach_operator": true, "operator": { "extension_id": "FGAMaMWESMCNF0jmEU1emw", "extension_number": 1000001018, "display_name": "Test_callQueue", "extension_type": "callQueue" }, "allow_caller_to_check_voicemail": false } }, "closed_hours": { "overflow": { "allow_caller_to_reach_operator": true, "operator": { "extension_id": "FGAMaMWESMCNF0jmEU1emw", "extension_number": 1000001018, "display_name": "Test_callQueue", "extension_type": "callQueue" }, "allow_caller_to_check_voicemail": false } }, "holiday_hours": { "holidays": [ { "holiday_id": "i3gP6xFUTHqSFrIE6nHs7Q", "name": "Holiday 1", "from": "2022-03-08T16:00:00Z", "to": "2022-03-09T16:00:00Z" } ], "overflow": { "allow_caller_to_reach_operator": true, "operator": { "extension_id": "FGAMaMWESMCNF0jmEU1emw", "extension_number": 1000001018, "display_name": "Test_callQueue", "extension_type": "callQueue" }, "allow_caller_to_check_voicemail": false } }, "security": { "device_types": [ "Poly trioc60" ] }, "outbound_caller_id": { "auto_receptionists_numbers": false, "call_queue_numbers": false, "share_line_group_numbers": false, "show_outbound_caller_id_for_internal_call": false }, "audio_prompt": { "language": "en-GB", "greeting_leave_voicemail_instruction": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" } }, "greeting_menu_leave_or_check_voicemail": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" } }, "greeting_menu_connect_to_operator_or_leave_voicemail": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" } }, "greeting_menu_connect_to_operator_leave_or_check_voicemail": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" } }, "leave_voicemail_introduction": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" } }, "message_greeting": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" } }, "audio_while_connecting": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" }, "hold_music": { "audio_id": "yCT14TwySDGVUypVlKNEyA", "name": "hello.mp3" } }, "desk_phone": { "hot_desking_session_timeout": { "number": 5, "unit": "minutes" }, "general_setting": { "setting_type": "account_setting", "web_interface": false } }, "dial_by_name": { "status": true, "inherit": false, "rule": "last_name" }, "billing_account": { "id": "3WWAEiEjTj2IQuyDiKMd_A", "name": "Delhi billing" } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Site does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a site setting - **Method:** `POST` - **Path:** `/phone/sites/{siteId}/settings/{settingType}` - **Tags:** Sites Sites allow you to organize Zoom Phone users in your organization. Use this API to add a site setting to a specific [site](https://support.zoom.us/hc/en-us/articles/360020809672) according to the setting type. **Prerequisites:** - Account must have a Pro or a higher plan with Zoom Phone license. - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). **[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:write:site_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`device_type`** `string` — The device type. Enable SRTP AES-256 encryption on the site for the specified device type. Used for \`device\_security\` setting type. - **`holidays`** `array` — The holiday hours settings. **Items:** - **`from`** `string`, format: `date-time` — The holiday start date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`name`** `string` — The name of the holiday. - **`to`** `string`, format: `date-time` — The holiday end date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. **Example:** ```json { "device_type": "Poly trioc60", "holidays": [ { "name": "Holiday 1", "from": "2022-03-08T16:00:00Z", "to": "2022-03-09T16:00:00Z" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code\*\* \`201\` Created Successfully. ###### Content-Type: application/json - **`holidays`** `array` — The settings for holiday hours. **Items:** - **`from`** `string`, format: `date-time` — The holiday start date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`holiday_id`** `string` — The holiday ID. - **`name`** `string` — The name of the holiday. - **`to`** `string`, format: `date-time` — The holiday end date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. **Example:** ```json { "holidays": [ { "holiday_id": "i3gP6xFUTHqSFrIE6nHs7Q", "name": "Holiday 1", "from": "2022-03-08T16:00:00Z", "to": "2022-03-09T16:00:00Z" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a site setting - **Method:** `DELETE` - **Path:** `/phone/sites/{siteId}/settings/{settingType}` - **Tags:** Sites Sites allow you to organize Zoom Phone users in your organization. Use this API to delete the site setting of a specific [site](https://support.zoom.us/hc/en-us/articles/360020809672). **Prerequisites:** - Account must have a Pro or a higher plan with Zoom Phone license. - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). **[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:delete:site_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* The site setting have been deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update the site setting - **Method:** `PATCH` - **Path:** `/phone/sites/{siteId}/settings/{settingType}` - **Tags:** Sites Allows you to organize Zoom Phone users in your organization. You can update the site setting of a specific [site](https://support.zoom.us/hc/en-us/articles/360020809672) according to the setting type. **Prerequisites** - Account must have a Pro or a higher plan with Zoom Phone license. - Multiple sites must be [enabled](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites#h_05c88e35-1593-491f-b1a8-b7139a75dc15). **[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:site_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`audio_prompt`** `object` — The audio prompt setting. Used for \`audio\_prompt\` setting type. - **`audio_while_connecting`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`greeting_leave_voicemail_instruction`** `object` — Audio prompt for \`Greeting & Leave voicemail instruction\` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`greeting_menu_connect_to_operator_leave_or_check_voicemail`** `object` — Audio prompt for \`Greeting & Menu: Connect to operator, leave or check voicemail\` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`greeting_menu_connect_to_operator_or_leave_voicemail`** `object` — The audio prompt for \`Greeting & Menu: Connect to operator or leave voicemail\` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`greeting_menu_leave_or_check_voicemail`** `object` — The audio prompt for \`Greeting & Menu: Leave or check voicemail\` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`hold_music`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`language`** `string` — The audio prompt language code. American English: \`en-US\` British English: \`en-GB\` Espa\ñol americano: \`es-US\` Fran\çais canadien: \`fr-CA\` Dansk: \`da-DK\` Deutsch: \`de-DE\` Espa\ñol: \`es-ES\` Fran\çais: \`fr-FR\` Italiano: \`it-IT\` Nederlands: \`nl-NL\` Portugues portugal: \`pt-PT\` Japanese: \`ja-JP\` Korean: \`ko-KO\` Portugues brasil: \`pt-BR\` Chinese: \`zh-CN\` Taiwanese: \`zh-TW\` - **`leave_voicemail_introduction`** `object` — The audio prompt for \`Leave voicemail instruction\` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`message_greeting`** `object` — The audio prompt for \`Message Greeting\` - **`business_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`closed_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`holiday_hours`** `object` — The audio prompt setting for respective hours. - **`audio_id`** `string` — The unique identifier of the audio item. - **`billing_account`** `object` — The billing account setting. - **`id`** `string` — The billing account ID. - **`business_hours`** `object` — Sets the default business hours for all users, Zoom Rooms, and Common Areas for the site. It's used for the \`business\_hours\` setting type. - **`custom_hour_type`** `integer`, possible values: `1, 2` — The business hour type \`1\`- 24 hours a Day, 7 days a week, \`2\`- Custom hours. - **`custom_hours`** `array` — The settings for custom business hours. **Items:** - **`from`** `string` — The start time for custom hours in \`HH:mm\` format. - **`to`** `string` — The end time custom hours in \`HH:mm\` format. - **`type`** `integer`, possible values: `0, 1, 2` — The type of custom hours: \* \`0\` \— Disabled. \* \`1\` \— 24 hours. \* \`2\` \— Customized hours. - **`weekday`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week: \* \`1\` \— Sunday \* \`2\` \— Monday \* \`3\` \— Tuesday \* \`4\` \— Wednesday \* \`5\` \— Thursday \* \`6\` \— Friday \* \`7\` \— Saturday - **`overflow`** `object` — Sets the default overflow for business hours for users, call queues and shared line groups. - **`allow_caller_to_check_voicemail`** `boolean` — This setting allows callers to check voicemail. - **`allow_caller_to_reach_operator`** `boolean` — This setting allows callers to reach an operator. - **`operator`** `object` — The operator to allow callers to reach. - **`extension_id`** `string` — The extension's ID. - **`closed_hours`** `object` — Sets the default closed hours for all users, Zoom Rooms, Common Areas, Auto Receptionists, Call Queues and Shared Line Groups for the site. Used for \`closed\_hours\` setting type. - **`overflow`** `object` — Sets the default overflow for business hours for users, Call Queues and Shared Line Groups. - **`allow_caller_to_check_voicemail`** `boolean` — Allows callers to check voicemail. - **`allow_caller_to_reach_operator`** `boolean` — Allows callers to reach an operator. - **`operator`** `object` — The operator to allow callers to reach. - **`extension_id`** `string` — The extension's ID. - **`desk_phone`** `object` — The desk phone setting. - **`hot_desking_session_timeout`** `object` — The set duration after which users are signed out of hot desking devices. - **`number` (required)** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 30` — The number - **`unit`** `string`, possible values: `"minutes", "hours"`, default: `"hours"` — \`The \`minutes\`. This seeting is only available if the \`number\` values are: '5, 10, 15, 30' \`hours\` - not available if the \`number\` value is '30' - **`dial_by_name`** `object` — The dial by name directory setting. - **`inherit`** `boolean` — Whether to inherit the dial by name directory maintained at the account level. This directory is \`read-only\` to sites. - **`rule`** `string`, possible values: `"first_name", "last_name"` — The search extensions by first or last name. Callers must enter at least 2 characters to perform a name search. - **`status`** `boolean` — Whether to allow callers to search for an extension by the first or last name. Currently supports English only. - **`general_setting`** `object` — These general configurations of the desk phones in your account can be set globally, but some settings may not work for individual models. You need to manually reboot the desk phones to apply these changes. - **`setting_type`** `string`, possible values: `"account_setting", "custom_setting"`, default: `"account_setting"` — The setting type. \`account\_setting\` will use the configuration defined at the account level. \`custom\_setting\` allows custom configurations to be defined specifically for this Site. - **`web_interface`** `boolean` — This setting enables desk phone web interface. This field is only available when \`setting\_type\` is \`custom\_setting\`. - **`holiday_hours`** `object` — Sets the default holiday hours for all users, Zoom Rooms, common areas, auto receptionists, call queues and shared linegroups for the site. It's used for the \`holiday\_hours\` setting type. - **`holidays`** `array` — The settings for holiday hours. **Items:** - **`from`** `string`, format: `date-time` — The holiday start date and time in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`holiday_id`** `string` — The holiday's ID. - **`name`** `string` — The name of the holiday. - **`to`** `string`, format: `date-time` — The holiday end date and time, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`overflow`** `object` — Sets the default overflow for business hours for users, call queues and shared line groups. - **`allow_caller_to_check_voicemail`** `boolean` — Allows callers to check voicemail. - **`allow_caller_to_reach_operator`** `boolean` — Allows callers to reach an operator. - **`operator`** `object` — The operator to allow callers to reach. - **`extension_id`** `string` — The extension's ID. - **`location_based_routing`** `object` — The location-based routing setting of the site. It's used for \`local\_based\_routing\` setting type. - **`enable`** `boolean` — When the policy is enabled, Zoom Phone calls will be subject to the policy options defined. - **`enable_media_off_load_pstn_calls`** `boolean` — This setting enables media offload for extensions to PSTN (Public Switched Telephone Network) calls. - **`place_receive_pstn_calls`** `boolean` — This setting places and receives PSTN (Public Switched Telephone Network) calls only when inside the locations. - **`outbound_caller_id`** `object` — The outbound caller ID setting. It's used for the \`outbound\_caller\_id\` setting type. - **`auto_receptionists_numbers`** `boolean` — When checked, auto receptionists members will use the numbers as the outbound caller ID - **`call_queue_numbers`** `boolean` — When checked, call queue members will use the numbers as the outbound caller ID. - **`share_line_group_numbers`** `boolean` — When checked, share line group members will use the numbers as the outbound caller ID. - **`show_outbound_caller_id_for_internal_call`** `boolean` — When a call is made to an internal extension that uses the numbers associated with Auto Receptionist or Call Queue as the caller ID, the receiver will see an outbound caller ID selected by the caller. **Example:** ```json { "location_based_routing": { "enable": false, "place_receive_pstn_calls": false, "enable_media_off_load_pstn_calls": false }, "business_hours": { "custom_hour_type": 2, "custom_hours": [ { "from": "09:00", "to": "18:00", "type": 0, "weekday": 1 } ], "overflow": { "allow_caller_to_reach_operator": true, "operator": { "extension_id": "p4O_BLMGS7ejPPMaBzgpcQ" }, "allow_caller_to_check_voicemail": false } }, "closed_hours": { "overflow": { "allow_caller_to_reach_operator": true, "operator": { "extension_id": "p4O_BLMGS7ejPPMaBzgpcQ" }, "allow_caller_to_check_voicemail": false } }, "holiday_hours": { "holidays": [ { "holiday_id": "i3gP6xFUTHqSFrIE6nHs7Q", "name": "Holiday 1", "from": "2022-03-08T16:00:00Z", "to": "2022-03-09T16:00:00Z" } ], "overflow": { "allow_caller_to_reach_operator": true, "operator": { "extension_id": "p4O_BLMGS7ejPPMaBzgpcQ" }, "allow_caller_to_check_voicemail": false } }, "outbound_caller_id": { "auto_receptionists_numbers": false, "call_queue_numbers": false, "share_line_group_numbers": false, "show_outbound_caller_id_for_internal_call": false }, "audio_prompt": { "language": "en-GB", "greeting_leave_voicemail_instruction": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "greeting_menu_leave_or_check_voicemail": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "greeting_menu_connect_to_operator_or_leave_voicemail": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "greeting_menu_connect_to_operator_leave_or_check_voicemail": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "leave_voicemail_introduction": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "message_greeting": { "business_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "closed_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "holiday_hours": { "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "audio_while_connecting": { "audio_id": "yCT14TwySDGVUypVlKNEyA" }, "hold_music": { "audio_id": "yCT14TwySDGVUypVlKNEyA" } }, "desk_phone": { "hot_desking_session_timeout": { "number": 5, "unit": "minutes" } }, "general_setting": { "setting_type": "account_setting", "web_interface": false }, "dial_by_name": { "status": true, "inherit": false, "rule": "last_name" }, "billing_account": { "id": "3WWAEiEjTj2IQuyDiKMd_A" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist.\
Prompt files do not exist, audio ids: {0}.\
Hot-desking session timeout setting is invalid.\
\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List phone users - **Method:** `GET` - **Path:** `/phone/users` - **Tags:** Users Returns a list of all of an account's users who are assigned a Zoom Phone license. **Prerequisites** - A Pro or higher account plan - A Zoom Phone license **[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:list_users:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Phone users retrieved successfully. ###### Content-Type: application/json - **`next_page_token`** `string` — 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. - **`page_size`** `integer`, default: `30` — The number of records returned from a single API call. - **`total_records`** `integer` — The total records found for this query. - **`users`** `array` **Items:** - **`activation_status`** `string`, possible values: `"activated", "ready to activate", "not ready"` — The activation status of the user. The value can be either of the following: \`activated\`: User have been activated, this type of user can make or receive calls. \`ready to activate\`: User have been assigned phone license but didn't activated, this type of user can make or receive calls. \`not ready\`: User have been assigned phone license, but the user didn't confirm the invitation. This user doesn't belong to this account yet. - **`calling_plans`** `array` **Items:** - **`billing_account_id`** `string` — The billing account ID. It displays when the user is located in India. - **`billing_account_name`** `string` — The billing account name. It displays when the user is located in India. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions. - **`billing_subscription_name`** `string` — The billing subscription name. It displays when the account supports billing multiple subscriptions.Can be edited through the Billing page. - **`name`** `string` — The name of the user's calling plan. - **`type`** `integer` — The type of calling plan where the user is enrolled. - **`cost_center`** `string` — The cost center where the user belongs. - **`department`** `string` — The department where the user belongs. - **`email`** `string`, format: `email` — The email address of the user. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the user's Zoom phone number. - **`id`** `string` — The unique identifier of the user (userId). - **`name`** `string` — The name of the user. - **`phone_numbers`** `array` **Items:** - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number. - **`phone_user_id`** `string` — The Zoom phone identifier of the user. - **`site`** `object` - **`id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`name`** `string` — The name of the site. - **`status`** `string` — The status of the user's Zoom Phone license. The value can be either of the following: \`activate\`: Active Zoom phone user. \`deactivate\`: User with Zoom phone license disabled. This type of user can't make or receive calls. **Example:** ```json { "next_page_token": "nav48KOj42vYPSG4f0cCdT575bZ980did22", "page_size": 30, "total_records": 45, "users": [ { "calling_plans": [ { "name": "US/CA Metered Calling Plan", "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_account_name": "Delhi billing", "billing_subscription_id": "FT-SUBREF-21168178", "billing_subscription_name": "My Subscription" } ], "email": "202007160003@testapi.com", "extension_id": "V4UobpuxRxCwN_8iNf7k4w", "extension_number": 1000001036, "id": "w0RChiauQeqRlv5fgxYULQ", "name": "APITA AUTO", "phone_user_id": "BOSr0vUiTl61WLR-Q_7bUw", "site": { "id": "IjJ2D75SQJit1VdDvkK_mQ", "name": "ApiTA_Site_2020_07_12_02_33_45_707" }, "status": "activate", "activation_status": "activated", "phone_numbers": [ { "id": "---M1padRvSUtw7YihN7sA", "number": "14232058798" } ], "department": "Phone department", "cost_center": "Phone cost center" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. Please enter at least {0} valid characters. \
\*\*Error Code:\*\* \`124\` \
You do not have permission, because the current site \`{0}\` does not belong to the target sites. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update multiple users' properties in batch - **Method:** `PUT` - **Path:** `/phone/users/batch` - **Tags:** Users Updates multiple users' properties in batch. For example, you can update the users' [site](https://support.zoom.us/hc/en-us/articles/360020809672) when `batchType` is equal to `move_site`. You can update 10 users at a time. **Prerequisites:** - Business, or Education account - Zoom Phone license **[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:batch_users:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`activation_status`** `string`, possible values: `"activate", "deactivate"` — The type that activates or deactivates in batch. You must enter \`activate\`: Activate Zoom Phone feature to users, \`site\_id\` is not required. \`deactivate\`: Deactivate the Zoom Phone feature of users, users can not make or receive calls, \`site\_id\` is not required. - **`batch_type`** `string`, possible values: `"move_site", "assign_pending_user", "activate"` — The type that updates in batch. You must enter \`move\_site\`: \`user\_ids\` and \`site\_id\` into the current request body. \`assign\_pending\_user\`: Assign user to the Zoom Phone feature of the Zoom One license. \`site\_id\` is not required. \`activate\`: Activate Zoom Phone feature to users, \`site\_id\` is not required. - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672) where the user should be moved or assigned. - **`user_ids`** `array` — The IDs of user. **Items:** `string` **Example:** ```json { "batch_type": "move_site", "user_ids": [ "DYHrdpjrS3uaOf7dPkkg8w" ], "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "activation_status": "activate" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Successfully update multiple users' properties in batch. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Current batch type does not support, batch type:{0}. \
\*\*Error Code:\*\* \`12007\` \
The user in Trash cannot be assigned Zoom One license. \
\*\*Error Code:\*\* \`12008\` \
The Zoom Phone feature of the Zoom One license cannot be supported for users assigned to India sites. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Batch add users - **Method:** `POST` - **Path:** `/phone/users/batch` - **Tags:** Users Adds phone users in batch. You can add up to 10 users at a time. **Prerequisites** - The users must be active in your [Zoom account](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods#tag/Users/operation/users). - Pro or higher account plan with Zoom phone license - Account owner or admin permissions **[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:write:batch_users:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Request Body ##### Content-Type: application/json - **`users`** `array` **Items:** - **`calling_plans` (required)** `array` — The calling plan. If the account supports billing multiple subscriptions and includes more than one type A plan, use the following format to assign a type from a specific subscription:type:billing\_subscription\_id or type:billing\_subscription\_name. \* Type \"AU/NZ Metered\" if the assigned package is \"Australia/New Zealand Metered Calling Plan\". \* Type \"AU/NZ Unlimited\" if the assigned package is \"Australia/New Zealand Unlimited Calling Plan\". \* Type \"UK/Ireland Metered\" if the assigned package is \"United Kingdom/Ireland Metered Calling Plan\". \* Type \"UK/Ireland Unlimited\" if the assigned package is \"United Kingdom/Ireland Unlimited Calling Plan\". \* Type \"US/CA Metered\" if the assigned package is \"United States/Canada Metered Calling Plan\". \* Type \"US/CA Unlimited\" if the assigned package is \"United States/Canada Unlimited Calling Plan\". \* Type \"Europe Zone A Metered\" if the assigned package is \"Europe Zone A Metered Calling Plan\". \* Type \"Europe Zone A Unlimited\" if the assigned package is \"Europe Zone A Unlimited Calling Plan\". \* Type \"Europe Zone B Metered\" if the assigned package is \"Europe Zone B Metered Calling Plan\". \* Type \"Europe Zone B Unlimited\" if the assigned package is \"Europe Zone B Unlimited Calling Plan\". \* Type \"JP Metered\" if the assigned package is \"Japan Metered Calling Plan\". \* Type \"JP Unlimited\" if the assigned package is \"Japan Unlimited Calling Plan\". \* Type \"IN Metered\" if the assigned package is \"India Metered Calling Plan\". \* Type \"IN Unlimited\" if the assigned package is \"India Unlimited Calling Plan\". \* Type \"IN Pro\" if the assigned package is \"Zoom Phone India Pro\". \* Type \"IN International Calling Add-On\" if the assigned package is \"India International Calling Add-On\". \* Type \"Global Select Metered\" if the assigned package is \"Global Select Metered Calling Plan\". \* Type \"Global Select\" if the assigned package is \"Global Select Calling Plan\". \* Type \"International Calling Add-On\" if the assigned package is \"International Calling Add-On\". \* Type \"Beta\" if the assigned package is \"Beta Calling Plan\". \* Type \"Pro\" if the assigned package is \"Zoom Phone Pro\". \* Type \"Power Pack\" if the assigned package is \"Zoom Phone Power Pack\". Leave this section blank if no package has been assigned. **Items:** `string` - **`email` (required)** `string` — The user email. It ensures the users are active in your Zoom account. - **`extension_number` (required)** `string` — The extension number. Do not include the site code in an extension number if the site code is enabled. - **`activation_status`** `string`, possible values: `"activate", "deactivate"` — The activation status. Configures the activation status of user. When activation\_status is not set, its value should depend on "Activate Zoom Phone users automatically" in the account settings. \`activate\`: Activate the Zoom Phone feature, users can make or receive calls. \`deactivate\`: Deactivate the Zoom Phone feature, users can not make or receive calls. - **`desk_phones`** `array` — Required: brand, model, and MAC address of each desk phone. Optional: provision template. Skips the provision template not supported by the device. For more information, see \[supported devices]\(https\://support.zoom.us/hc/en-us/articles/360001299063-Zoom-Voice-Supported-Devices). Each user can be assigned up to 3 desk phones. All users must belong to the same site if a desk phone is assigned to multiple users. **Items:** - **`brand`** `string` — The manufacturer (brand) name of the device. - **`mac`** `string` — The MAC address of the desk phone. - **`model`** `string` — The model name of the device. - **`provision_template`** `string` — The provision template name. Supported by select devices. - **`first_name`** `string` — The user's first name. It ensures the users are active in your Zoom account. - **`last_name`** `string` — The user's last name. It ensures the users are active in your Zoom account. - **`outbound_caller_id`** `string` — The outbound caller ID. Hides the caller ID if left blank. You can set an extension's phone number or any company number as the outbound caller ID. - **`phone_numbers`** `array` — The phone numbers in E164 format. Separate multiple phone number entries with commas. Make sure that these numbers have been ported to your account as unassigned phone numbers. **Items:** `string` - **`select_outbound_caller_id`** `boolean` — Whether to allow this extension to change the outbound caller ID when placing calls. - **`site_code`** `string` — The site code. It's required if the site name is not provided or if Indian plans are assigned. - **`site_name`** `string` — The site name. It's required if the site code is not provided or if Indian plans are assigned. - **`sms`** `boolean` — Whether to enable SMS for this user. - **`template_name`** `string` — The template name. Configure the user setting according to the specified template. The template must belong to the same site as the user. **Example:** ```json { "users": [ { "email": "user@example.com", "first_name": "Zeb", "last_name": "Zoomie", "calling_plans": [ "AU/NZ Metered or AU/NZ Metered:FT-SUBREF-21168178 or AU/NZ Metered:My SubRefer 1" ], "site_code": "1", "site_name": "Main Site", "template_name": "account_user_template_01", "extension_number": "100012345", "activation_status": "activate", "phone_numbers": [ "+12055437350" ], "outbound_caller_id": "+12055437350", "select_outbound_caller_id": true, "sms": true, "desk_phones": [ { "brand": "Yealink", "model": "405hd", "mac": "80-5e-c0-3d-eb-c4", "provision_template": "TestProvisionTemplate" } ] } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Created. ###### Content-Type: application/json **Array of:** - **`email`** `string` — The imported user email. - **`id`** `string` — The user ID. * Max items: `10` **Example:** ```json [ { "email": "ta_test_import_user_01@example.com", "id": "FwOAeL4TRmqQrmF0jOfzkQ" } ] ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
User size must be less than 10. You need to have administrative privileges to edit this site. \
\*\*Error Code:\*\* \`300\` \
Validation Failed. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Template is invalid \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a user's profile - **Method:** `GET` - **Path:** `/phone/users/{userId}` - **Tags:** Users Returns a user's [Zoom phone](https://support.zoom.us/hc/en-us/articles/360001297663-Quickstart-Guide-for-Zoom-Phone-Administrators) profile. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[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:user`,`phone:read:user:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` User profile object returned. ###### Content-Type: application/json - **`calling_plans`** `array` — The calling plan of the user **Items:** - **`billing_account_id`** `string` — The billing account ID. It displays when the user is located in India. - **`billing_account_name`** `string` — The billing account name. It displays when the user is located in India. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions. - **`billing_subscription_name`** `string` — The billing subscription name. It displays when the account supports billing multiple subscriptions.Can be edited via the Billing page. - **`type`** `integer` — The \[type]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) of calling plan. - **`cost_center`** `string` — The cost center name. - **`department`** `string` — The department's name. - **`email`** `string` — The email address of the user. - **`emergency_address`** `object` - **`address_line1`** `string` — The address Line 1 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that contains the house number and street name. - **`address_line2`** `string` — The address Line 2 of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address) that contains the building number, floor number, unit, and others. - **`city`** `string` — The city of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`country`** `string` — The two-lettered country code (Alpha-2 code in ISO-3166 format) standard of the site's \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`id`** `string` — The emergency address ID. - **`state_code`** `string` — The state code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`zip`** `string` — The zip code of the \[emergency address]\(https\://support.zoom.us/hc/en-us/articles/360021062871-Setting-an-Emergency-Address). - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`id`** `string` — The Zoom user ID. - **`phone_numbers`** `array` **Items:** - **`id`** `string` — The phone number ID. - **`number`** `string` — The phone number. - **`phone_user_id`** `string` — The Zoom phone user ID. - **`policy`** `object` — A list of the user's policies. Policies are exceptions to the user's calling plan restrictions. - **`ad_hoc_call_recording`** `object` — A list of ad hoc call recording settings. - **`enable`** `boolean` — Whether the current extension can record and save calls to the cloud. - **`locked`** `boolean` — Whether the senior administrator allow users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`play_recording_beep_tone`** `object` - **`enable`** `boolean` — Whether to play the side tone beep for recorded users while recording. It displays only when ad hoc call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when the \`enable\` is set to true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when the \`enable\` is set to true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The side tone beep volume. It displays only when \`enable\` is set to \`true\`. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`ad_hoc_call_recording_access_members`** `array` — The shared ad hoc call recording access member list. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share access permissions. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`allow_end_user_edit_call_handling`** `object` - **`enable`** `boolean` — Whether to allow users to be able to edit their call handling settings on the web portal or enable call forwarding on the client. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`audio_intercom`** `object` — Whether the user can use audio intercom. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`auto_call_recording`** `object` — A list of the user's automatic call recording settings. - **`allow_stop_resume_recording`** `boolean` — Whether the stop of and resuming of automatic call recording is enabled. - **`disconnect_on_recording_failure`** `boolean` — Whether a call disconnects when there is an issue with automatic call recording and the call cannot reconnect after five seconds. It does \*\*not\*\* include emergency calls. - **`enable`** `boolean` — Whether the automatic call recording is enabled. - **`inbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. \Note:\ \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`outbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. \Note:\ \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`play_recording_beep_tone`** `object` - **`enable`** `boolean` — Whether to play the side tone beep for recorded users while recording. It displays only when auto call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when the \`enable\` is set to true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when the \`enable\` is set to true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The side tone beep volume. It displays only when \`enable\` is set to \`true\`. - **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — The type of calls automatically recorded: \* \`inbound\` \* \`outbound\` \* \`both\` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent is enabled. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` to operate inbound and outbound prompt separately. \Note:\ \* if customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\` and \`inbound\_audio\_notification.recording\_explicit\_consent\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` to operate inbound and outbound prompt separately. \Note:\ \* If customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\` and \`inbound\_audio\_notification.recording\_start\_prompt\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\` will be also updated. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` will be also updated. - **`recording_transcription`** `boolean` — Whether the call recording transcription is enabled. - **`auto_call_recording_access_members`** `array` — The shared automatic call recording access member list. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share access permissions. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`call_handling_forwarding_to_other_users`** `object` — Whether to allow the user to forward calls to other numbers. - **`call_forwarding_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`call_overflow`** `object` - **`call_overflow_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` — Whether to allow the user to forward calls to other numbers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`call_park`** `object` - **`call_not_picked_up_action`** `integer` — The action when a parked call is not picked up. 100-Ring back to parker, 0-Forward to voicemail of the parker, 9-Disconnect, 50-Forward to another extension. - **`enable`** `boolean` — Whether to allow calls placed on hold to be resumed from another location using a retrieval code. - **`expiration_period`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — A time limit for parked calls and unit minutes. After the expiration period ends, the retrieval code is no longer valid and a new code will be generated. - **`forward_to`** `object` — The extension's forwarding information. - **`display_name`** `string` — The extension's name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string`, possible values: `"user", "zoomRoom", "commonArea", "ciscoRoom/polycomRoom", "autoReceptionist", "callQueue", "sharedLineGroup"` — The type of extension: \* \`user\` \* \`zoomRoom\` \* \`commonArea\` \* \`ciscoRoom/polycomRoom\` \* \`autoReceptionist\` \* \`sharedLineGroup\` \* \`callQueue\` - **`id`** `string` — The ID of the extension \`user\`, \`zoomRoom\`, \`commonArea\`, \`ciscoRoom/polycomRoom\`, \`autoReceptionist\`, \`callQueue\` or \`sharedLineGroup\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`call_transferring`** `object` - **`call_transferring_type`** `integer`, possible values: `1, 2, 3, 4` — This field contains these settings: 1-No restriction. 2-Medium restriction (external numbers and external contacts not allowed). 3-High restriction (external numbers, unrecorded external contacts, and internal extensions without inbound automatic recording not allowed). 4-Low restriction (external numbers not allowed). - **`enable`** `boolean` — Whether to allow user to warm or blind transfer their calls. This does not apply to warm transfer on IP Phones except for Yealink. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`check_voicemails_over_phone`** `object` — Whether the user can check voicemails of users and shared line groups over phone using a PIN code. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`delegation`** `boolean` — Whether the user can use \[call delegation]\(https\://support.zoom.us/hc/en-us/articles/360032881731-Setting-up-call-delegation-shared-lines-appearance-). - **`e2e_encryption`** `object` - **`enable`** `boolean` — Whether to allow users to switch their calls to \`End-to-End Encryption\`. If users have the \`Automatic Call Recording\` turned on, they will not be able to use the \`End-to-End Encryption\`. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`elevate_to_meeting`** `boolean` — Whether the user can elevate their phone calls to a meeting. - **`emergency_address_management`** `object` - **`enable`** `boolean` — Whether to allow the current extension to manage its own emergency addresses. - **`prompt_default_address`** `boolean` — Whether to prompt the user to set or confirm a default address. - **`emergency_calls_to_psap`** `boolean` — When disabled, emergency calls placed by the user will not be delivered to the Public Safety Answering Point(PSAP), but still will be delivered to the Internal Safety Response Team based on the settings. - **`forwarding_to_external_numbers`** `boolean` — Whether call forwarding to external numbers is enabled. Use the \`call\_handling\_forwarding\_to\_other\_users\` instead. - **`hand_off_to_room`** `object` - **`enable`** `boolean` — Whether to allow users to send a call to a Zoom Room. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`international_calling`** `boolean` — Whether the current extension can make international calls outside of their calling plan. - **`mobile_switch_to_carrier`** `object` - **`enable`** `boolean` — Whether to allow the user to switch from a Zoom Phone to their native carrier. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`online_fax`** `object` — The online fax policy for the user. - **`enable`** `boolean` — Whether to allow users to prioritize urgent voicemails based on predefined priority topics. Users need to have voicemail transcription policy enabled. - **`enable_outbound_fax_transmission_report`** `boolean` — Whether to enable transmission report for outbound faxes. - **`fax_notification_by_email`** `boolean` — Whether to enable email notifications when a new fax is received. - **`include_fax_as_attachment`** `boolean` — Whether to include fax file as email attachment. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`outbound_calling`** `object` - **`enable`** `boolean` — Whether to define calling rules to restrict the user or extension from calling specific countries, cities, or numbers. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`outbound_sms`** `object` - **`enable`** `boolean` — Whether to allow users to send and receive messages. You will still need to assign a valid calling plan and phone number to each user for them to send and receive messages. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`peer_to_peer_media`** `object` — Whether to allow Zoom clients to send media directly to each other. Users or devices that have certain features like recording or monitoring enabled may not be able to use the peer to peer media sharing feature. - **`enable`** `boolean` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`personal_audio_library`** `object` - **`allow_music_on_hold_customization`** `boolean` — Whether to allow music on hold customization. - **`allow_voicemail_and_message_greeting_customization`** `boolean` — Whether to allow voicemail and message greeting customization. - **`enable`** `boolean` — Whether to allow users to change their own audio library. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`select_outbound_caller_id`** `object` - **`allow_hide_outbound_caller_id`** `boolean` — Whether to allow the current extension to hide outbound caller id. - **`enable`** `boolean` — Whether to allow the current extension to change the outbound caller ID when placing calls. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`shared_voicemail_notification_by_email`** `object` - **`enable`** `boolean` — If enabled, the user will receive email notification when there is a new shared voicemail. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`sms`** `object` - **`allow_copy`** `boolean` — Allow users to copy message. - **`allow_paste`** `boolean` — Allow users to use the paste function to paste content (e.g. text or images) into SMS/MMS conversations. - **`enable`** `boolean` — Whether the user can send and receive messages. - **`international_sms`** `boolean` — Whether the user can send and receive international messages. - **`international_sms_countries`** `array` — The country that can send and receive international messages. The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). **Items:** `string` - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`voicemail`** `object` - **`allow_delete`** `boolean` — This field allows the user to delete his own voicemail. - **`allow_download`** `boolean` — This field allows the user to download their voicemail. - **`allow_transcription`** `boolean` — Whether the voicemail transcription is enabled. - **`allow_videomail`** `boolean` — Whether to allow users to access, share, download, or delete the video mail - **`enable`** `boolean` — Whether the current extension can access, receive, or share voicemail. - **`voicemail_access_members`** `array` — The shared voicemail access member list. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share the voicemail access permissions with. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the user has permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`voicemail_intent_based_prioritization`** `object` - **`enable`** `boolean` — Whether to allow users to prioritize urgent voicemails based on predefined priority topics. Users need to have voicemail transcription policy enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`voicemail_notification_by_email`** `object` - **`enable`** `boolean` — If enabled, the user will receive email notifications when there is a new voicemail from users, call queues, auto receptionists, or shared line groups. - **`include_voicemail_file`** `boolean` — Whether to include the voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include the voicemail transcription. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`voicemail_tasks`** `object` - **`enable`** `boolean` — Whether to allow users to extract tasks from English voicemail transcriptions. Users need to have voicemail transcription policy enabled. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset (displayed when using the new policy framework). - **`voicemail_transcription`** `object` - **`enable`** `boolean` — Whether to allow the user to access transcriptions of voicemails. - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits modifying the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, they can be reset in the update call. - **`zoom_phone_on_desktop`** `object` — Allows user to use Zoom Phone on desktop clients (Mac OS, Windows, VDI client and Linux). - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is: mac\_os windows vdi\_client linux. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is mac\_os windows vdi\_client linux. - **`enable`** `boolean` — Whether to allow users to use Zoom Phone on desktop clients (Mac OS, Windows, VDI clinet and Linux). - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"invalid", "account", "site"` — Which level of administrator prohibits the modification of the current settings. - **`modified`** `boolean` — Whether the current settings have been modified. If modified, you can reset settings to display when using the new policy framework. - **`zoom_phone_on_mobile`** `object` - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — Acceptable value is: ios android intune blackberry - **`allow_calling_sms_mms`** `boolean` — Whether to allow calling and SMS/MMS functions on mobile. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is ios android intune blackberry. - **`enable`** `boolean` — Whether to allow user to use Zoom Phone on mobile clients (iOS, iPad OS, and Android). - **`locked`** `boolean` — Whether the senior administrator allows users to modify the current settings. - **`locked_by`** `string`, possible values: `"account", "user_group", "site"` — Which level of administrator prohibits the modification of the current settings. - **`site_admin`** `boolean` — Whether the user is a \[site admin]\(https\://support.zoom.us/hc/en-us/articles/360042099012) or not. - **`site_id`** `string` — The unique identifier of a \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672). - **`status`** `string`, possible values: `"activate", "deactivate"` — The status of the user. \`activate\`: An active user. \`deactivate\`: User has been deactivated from the Zoom Phone system. **Example:** ```json { "calling_plans": [ { "type": 600, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_account_name": "Delhi billing", "billing_subscription_id": "FT-SUBREF-21168178", "billing_subscription_name": "My Subscription" } ], "cost_center": "testCostCenter", "department": "testDepartment", "email": "suesu_test_delete3@testapi.com", "emergency_address": { "address_line1": "55 Almaden Boulevard", "address_line2": "1002 Airport Way S", "city": "SAN JOSE", "country": "US", "id": "CCc8zYT1SN60i7uDMzDbXA", "state_code": "CA", "zip": "95113" }, "extension_id": "nNGsNx2zRDyiIXWVI23FCQ", "extension_number": 100012347, "id": "NL3cEpSdRc-c2t8aLoZqiw", "phone_numbers": [ { "id": "---M1padRvSUtw7YihN7sA", "number": "14232058798" } ], "phone_user_id": "u7pnC468TaS46OuNoEw6GA", "policy": { "ad_hoc_call_recording": { "enable": true, "recording_start_prompt": true, "recording_transcription": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "locked": true, "locked_by": "account" }, "ad_hoc_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "auto_call_recording": { "allow_stop_resume_recording": true, "disconnect_on_recording_failure": true, "enable": true, "locked": true, "locked_by": "account", "recording_calls": "inbound", "recording_transcription": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "inbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true } }, "auto_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "call_overflow": { "call_overflow_type": 1, "enable": true, "locked": true, "locked_by": "site", "modified": true }, "call_park": { "call_not_picked_up_action": 9, "enable": true, "expiration_period": 10, "forward_to": { "display_name": "test extension name", "extension_id": "CcrEGgmeQem1uyJsuIRKwA", "extension_number": 1000123477, "extension_type": "user", "id": "fWOgOALdT1ei4vjXK-QYsA" }, "locked": true, "locked_by": "account" }, "call_transferring": { "call_transferring_type": 2, "enable": true, "locked": true, "locked_by": "account" }, "delegation": true, "elevate_to_meeting": true, "emergency_address_management": { "enable": true, "prompt_default_address": true }, "emergency_calls_to_psap": true, "call_handling_forwarding_to_other_users": { "enable": true, "call_forwarding_type": 1, "locked": true, "locked_by": "site", "modified": true }, "hand_off_to_room": { "enable": true, "locked": true, "locked_by": "account" }, "international_calling": true, "mobile_switch_to_carrier": { "enable": true, "locked": true, "locked_by": "account" }, "select_outbound_caller_id": { "enable": true, "allow_hide_outbound_caller_id": true, "locked": true, "locked_by": "account" }, "sms": { "enable": true, "international_sms": true, "international_sms_countries": [ "US" ], "locked": true, "locked_by": "account", "allow_copy": true, "allow_paste": true }, "voicemail": { "allow_delete": true, "allow_download": true, "allow_transcription": true, "allow_videomail": true, "enable": true }, "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "zoom_phone_on_mobile": { "allow_calling_clients": [ "ios" ], "allow_sms_mms_clients": [ "ios" ], "enable": true, "locked": true, "locked_by": "account" }, "personal_audio_library": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "allow_music_on_hold_customization": true, "allow_voicemail_and_message_greeting_customization": true }, "voicemail_transcription": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": false, "enable": true, "locked": true, "locked_by": "account", "modified": true }, "shared_voicemail_notification_by_email": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "check_voicemails_over_phone": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "audio_intercom": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "peer_to_peer_media": { "enable": true, "locked": true, "locked_by": "account", "modified": true }, "e2e_encryption": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "outbound_calling": { "enable": true, "locked": true, "modified": true }, "outbound_sms": { "enable": true, "locked": true, "modified": true }, "allow_end_user_edit_call_handling": { "enable": true, "locked": true, "modified": true }, "voicemail_intent_based_prioritization": { "enable": true, "locked": true, "locked_by": "site", "modified": true }, "voicemail_tasks": { "enable": true, "locked": true, "modified": true, "locked_by": "site" }, "zoom_phone_on_desktop": { "allow_calling_clients": [ "mac_os" ], "allow_sms_mms_clients": [ "mac_os" ], "enable": true, "locked": true, "locked_by": "site", "modified": true }, "online_fax": { "enable": true, "locked": true, "locked_by": "site", "modified": true, "fax_notification_by_email": true, "include_fax_as_attachment": true, "enable_outbound_fax_transmission_report": true } }, "site_admin": true, "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "status": "activate" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`404\` \
Site does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a user's profile - **Method:** `PATCH` - **Path:** `/phone/users/{userId}` - **Tags:** Users Updates a user's [Zoom Phone](https://support.zoom.us/hc/en-us/categories/360001370051-Zoom-Phone) profile. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. To add, update or remove the shared access members for voicemail and call recordings, use the [Add](https://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Users/operation/addUserSetting)/[Update](https://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Users/operation/updateUserSetting)/[Delete](https://marketplace.zoom.us/docs/api-reference/phone/methods#tag/Users/operation/deleteUserSetting) a user's shared access setting API. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:user`,`phone:update:user:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`emergency_address_id`** `string` — The emergency address ID. - **`extension_number`** `string` — The extension number of the user. The number must be complete (i.e. site number + short extension). - **`policy`** `object` — A list of the user's policies. - **`ad_hoc_call_recording`** `object` — A list of ad hoc call recording settings. - **`enable`** `boolean` — Whether the current extension can record and save calls to the cloud. - **`play_recording_beep_tone`** `object` - **`enable`** `boolean` — Whether to play a side tone beep for recorded users while recording. Only displayed when ad hoc call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when \`enable\` is true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when \`enable\` is true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The volume of the side tone beep. It displays only when \`enable\` is set to \`true\`. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. - **`recording_transcription`** `boolean` — Whether call recording transcription is enabled. - **`reset`** `boolean` — Whether the user's ad hoc recording reset option will use the phone site's settings. - **`audio_intercom`** `object` - **`enable`** `boolean` — If enabled, user can use audio intercom. - **`reset`** `boolean` — Whether the user's audio intercom reset option will use the phone site's settings. - **`auto_call_recording`** `object` — A list of the user's automatic call recording settings. - **`allow_stop_resume_recording`** `boolean` — Whether the stop of and resuming of automatic call recording is enabled. - **`disconnect_on_recording_failure`** `boolean` — Whether a call disconnects when there is an issue with automatic call recording and the call cannot reconnect after five seconds. This does \*\*not\*\* include emergency calls. - **`enable`** `boolean` — Whether automatic call recording is enabled. - **`inbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for inbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`outbound_audio_notification`** `object` - **`recording_explicit_consent`** `boolean` — Whether the \*\*Press 1\*\* option that provides recording consent for outbound call is enabled. \Note:\ \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` with the same value. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started for outbound call is enabled. \Note:\ \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. \* If customers do not opt OP flag named \`Enable Caller Based Consent Options\`, update both \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` with the same value. - **`play_recording_beep_tone`** `object` - **`enable`** `boolean` — Whether to play a side tone beep for recorded users while recording. Only displayed when auto call recording policy uses the new framework. - **`play_beep_member`** `string`, possible values: `"allMember", "recordingSide"` — The beep sides. It displays only when \`enable\` is true. - **`play_beep_time_interval`** `integer`, possible values: `5, 10, 15, 20, 25, 30, 60, 120` — The beep time interval in seconds. It displays only when \`enable\` is true. - **`play_beep_volume`** `integer`, possible values: `0, 20, 40, 60, 80, 100` — The volume of the side tone beep. It displays only when \`enable\` is set to \`true\`. - **`recording_calls`** `string`, possible values: `"inbound", "outbound", "both"` — The type of calls automatically recorded: \* \`inbound\` \* \`outbound\` \* \`both\` - **`recording_explicit_consent`** `boolean` — Whether press 1 to provide recording consent is enabled. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_explicit\_consent\` and \`outbound\_audio\_notification.recording\_explicit\_consent\` to operate inbound and outbound prompt separately. \Note:\ \* If customers opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\` and \`inbound\_audio\_notification.recording\_explicit\_consent\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. \* If customers do not opt for an OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_explicit\_consent\`, \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` always remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_explicit\_consent\`, and \`outbound\_audio\_notification.recording\_explicit\_consent\` will be also updated. - **`recording_start_prompt`** `boolean` — Whether a prompt plays to call participants when the recording has started. \Deprecated:\ This field will be deprecated in a future release. As an alternative, use the \`inbound\_audio\_notification.recording\_start\_prompt\` and \`outbound\_audio\_notification.recording\_start\_prompt\` to operate inbound and outbound prompt separately. \Note:\ \* if customers who opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\` and \`inbound\_audio\_notification.recording\_start\_prompt\` will remain consistent. When the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\` will be also updated. \* if customers who do not opt OP flag named \`Enable Caller Based Consent Options\`, the values of \`recording\_start\_prompt\`, \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` always remain consistent. when the field is updated, the \`inbound\_audio\_notification.recording\_start\_prompt\`, and \`outbound\_audio\_notification.recording\_start\_prompt\` will be also updated. - **`recording_transcription`** `boolean` — Whether call recording transcription is enabled. - **`reset`** `boolean` — Whether the user's automatic call recording reset option will use the phone site's settings. - **`call_handling_forwarding_to_other_users`** `object` — Whether to allow user to forward calls to other numbers. - **`call_forwarding_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` - **`reset`** `boolean` — Whether the current settings will use the phone site's settings (applicable if the current settings are using the new policy framework). - **`call_overflow`** `object` - **`call_overflow_type`** `integer`, possible values: `1, 2, 3, 4` — \`1\` - Low restriction (external numbers not allowed) \`2\` - Medium restriction (external numbers and external contacts not allowed) \`3\` - High restriction (external numbers, external contacts and internal extensions without inbound automatic call recording not allowed) \`4\` - No restriction - **`enable`** `boolean` — Whether to allow user to forward calls to other numbers. - **`reset`** `boolean` — Whether the current settings will use the phone site's settings (applicable if the current settings are using the new policy framework). - **`call_park`** `object` - **`call_not_picked_up_action`** `integer` — The action when a parked call is not picked up. 100-Ring back to parker, 0-Forward to voicemail of the parker, 9-Disconnect, 50-Forward to another extension. - **`enable`** `boolean` — Whether to allow calls placed on hold to be resumed from another location using a retrieval code. - **`expiration_period`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60` — A time limit for parked calls, unit minutes. After the expiration period ends, the retrieval code is no longer valid and a new code will be generated. - **`forward_to_extension_id`** `string` — The extension ID. - **`call_transferring`** `object` - **`call_transferring_type`** `integer`, possible values: `1, 2, 3, 4` — 1-No restriction. 2-Medium restriction (external numbers and external contacts not allowed). 3-High restriction (external numbers, unrecorded external contacts, and internal extensions without inbound automatic recording not allowed). 4-Low restriction (external numbers not allowed). - **`enable`** `boolean` — Whether to allow the user to warm or blind transfer their calls. This does not apply to warm transfer on IP Phones except for Yealink. - **`reset`** `boolean` — Whether the current settings will use the phone site's settings (applicable if the current settings are using the new policy framework). - **`check_voicemails_over_phone`** `object` - **`enable`** `boolean` — If enabled, user can check voicemails over phone using a PIN code. - **`reset`** `boolean` — Whether the user's check voicemail over phone reset option will use the phone site's settings. - **`delegation`** `boolean` — Whether the user can use \[call delegation]\(https\://support.zoom.us/hc/en-us/articles/360032881731-Setting-up-call-delegation-shared-lines-appearance-). - **`e2e_encryption`** `object` - **`enable`** `boolean` — Whether to allow users to switch their calls to \`End-to-End Encryption\`. If users have the \`Automatic Call Recording\` turned on, they will not be able to use the \`End-to-End Encryption\`. - **`reset`** `boolean` — Whether the current settings will use the phone account's settings (applicable if the current settings are using the new policy framework). - **`elevate_to_meeting`** `boolean` — Whether the user can elevate their phone calls to a meeting. - **`emergency_address_management`** `object` - **`enable`** `boolean` — Whether to allow the current extension to manage its own emergency addresses. - **`prompt_default_address`** `boolean` — Whether to prompt the user to set or confirm a default address. - **`emergency_calls_to_psap`** `boolean` — When disabled, emergency calls placed by the user will not be delivered to the Public Safety Answering Point(PSAP), but still will be delivered to the Internal Safety Response Team based on the settings. - **`forwarding_to_external_numbers`** `boolean` — Whether to allow call forwarding to external numbers. Use the \`call\_handling\_forwarding\_to\_other\_users\` instead. - **`hand_off_to_room`** `object` - **`enable`** `boolean` — Whether to allow users to send a call to a Zoom Room. - **`international_calling`** `boolean` — Whether the current extension can make international calls outside of their calling plan. - **`mobile_switch_to_carrier`** `object` - **`enable`** `boolean` — Whether to allow the user to switch from a Zoom Phone to their native carrier. - **`online_fax`** `object` — The online fax policy update for the user. - **`enable`** `boolean` — Whether to allow the user to access transcriptions of voicemails\`. - **`enable_outbound_fax_transmission_report`** `boolean` — Whether to enable transmission report for outbound faxes. - **`fax_notification_by_email`** `boolean` — Whether to enable email notifications when a new fax is received. - **`include_fax_as_attachment`** `boolean` — Whether to include fax file as email attachment. - **`reset`** `boolean` — Whether the user's voicemail transcription reset option will use the phone site's settings. - **`personal_audio_library`** `object` - **`allow_music_on_hold_customization`** `boolean` — Whether to allow the user to customize allow music on hold. - **`allow_voicemail_and_message_greeting_customization`** `boolean` — Whether to allow the user to customize voicemail and message greeting. - **`enable`** `boolean` — Whether to allow users to change their own audio library. - **`reset`** `boolean` — Whether the user's personal audio library reset option will use the phone site's settings. - **`select_outbound_caller_id`** `object` - **`allow_hide_outbound_caller_id`** `boolean` — Whether to allow the current extension to hide outbound caller id. - **`enable`** `boolean` — Whether to allow the current extension to change the outbound caller ID when placing calls. - **`shared_voicemail_notification_by_email`** `object` - **`enable`** `boolean` — If enabled, the user will receive email notification when there is a new shared voicemail. - **`reset`** `boolean` — Whether the user's share voicemail notification by email reset option will use the phone site's settings. - **`sms`** `object` - **`allow_copy`** `boolean` — Whether to copy messages. - **`allow_paste`** `boolean` — Whether to use the paste function to paste content (e.g. text or images) into SMS/MMS conversations. - **`enable`** `boolean` — Whether the user can send and receive messages. - **`international_sms`** `boolean` — Whether the user can send and receive international messages. - **`international_sms_countries`** `array` — The country which can send and receive international messages. The \[country iso code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). **Items:** `string` - **`voicemail`** `object` - **`allow_delete`** `boolean` — This field allows the user to delete his own voicemail. - **`allow_download`** `boolean` — This field allows the user to download his own voicemail. - **`allow_transcription`** `boolean` — Whether to allow voicemail transcription. - **`allow_videomail`** `boolean` — Whether to allow users to access, share, download or delete the videomail. - **`enable`** `boolean` — Whether the current extension can access, receive, or share voicemail. - **`voicemail_access_members`** `array` — This field updates a voicemail setting. \<b\>Deprecated:\</b\> we will completely deprecate this property in a future release. Use \`Add/Update/Delete a user's shared access setting\` API instead, with settingType 'voice-mail' to manage the voicemail access members. **Items:** - **`access_user_id`** `string` — The Zoom user ID to share the voicemail access permissions with. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the user has permission to share. The default is \*\*false\*\*. - **`voicemail_notification_by_email`** `object` - **`enable`** `boolean` — If enabled, user will receive email notifications when there is a new voicemail from users, call queues, auto receptionists or shared line groups. - **`include_voicemail_file`** `boolean` — Whether to include voicemail file. - **`include_voicemail_transcription`** `boolean` — Whether to include voicemail transcription. - **`reset`** `boolean` — Whether the user's voicemail notification by email reset option will use the phone site's settings. - **`voicemail_transcription`** `object` - **`enable`** `boolean` — Whether to allow the user to access transcriptions of voicemails\`. - **`reset`** `boolean` — Whether the user's voicemail transcription reset option will use the phone site's settings. - **`zoom_phone_on_desktop`** `object` — Allows users to use Zoom Phone on desktop clients (Mac OS, Windows, VDI client and Linux). - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is mac\_os windows vdi\_client linux. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"mac_os", "windows", "vdi_client", "linux"` — The acceptable value is mac\_os windows vdi\_client linux. - **`enable`** `boolean` — Whether to allow users to use Zoom Phone on desktop clients (Mac OS, Windows, VDI clinet and Linux). - **`reset`** `boolean` — Whether the current settings use the phone account's settings if the current settings use the new policy framework. - **`zoom_phone_on_mobile`** `object` - **`allow_calling_clients`** `array` — The clients in this list are allowed to make and receive calls. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is ios android intune blackberry. - **`allow_calling_sms_mms`** `boolean` — Whether to allow Calling and SMS/MMS functions on Mobile. - **`allow_sms_mms_clients`** `array` — The clients in this list are allowed to use the SMS/MMS function. **Items:** `string`, possible values: `"ios", "android", "intune", "blackberry"` — The acceptable value is ios android intune blackberry. - **`enable`** `boolean` — Whether to allow user to use Zoom Phone on mobile clients (iOS, iPad OS and Android). - **`site_id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672) where the user should be moved or assigned. - **`template_id`** `string` — The settings template ID. If the \`site\_id\` field is set, look for the template site with the value of the \`site\_id\` field. The template ID has precedence and the policy will be ignored even if the \`policy\` field is set. **Example:** ```json { "emergency_address_id": "CCc8zYT1SN60i7uDMzDbXA", "extension_number": "1000123477", "policy": { "ad_hoc_call_recording": { "enable": true, "recording_start_prompt": true, "recording_transcription": true, "reset": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" } }, "auto_call_recording": { "allow_stop_resume_recording": true, "disconnect_on_recording_failure": true, "enable": true, "recording_calls": "inbound", "recording_transcription": true, "play_recording_beep_tone": { "enable": true, "play_beep_volume": 60, "play_beep_time_interval": 15, "play_beep_member": "allMember" }, "reset": true, "inbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true }, "outbound_audio_notification": { "recording_start_prompt": true, "recording_explicit_consent": true } }, "call_overflow": { "call_overflow_type": 1, "enable": true, "reset": true }, "call_park": { "call_not_picked_up_action": 50, "enable": true, "expiration_period": 10, "forward_to_extension_id": "CcrEGgmeQem1uyJsuIRKwA" }, "call_transferring": { "call_transferring_type": 2, "enable": true, "reset": true }, "delegation": true, "elevate_to_meeting": true, "emergency_address_management": { "enable": true, "prompt_default_address": true }, "emergency_calls_to_psap": true, "call_handling_forwarding_to_other_users": { "enable": true, "call_forwarding_type": 1, "reset": true }, "hand_off_to_room": { "enable": true }, "international_calling": true, "mobile_switch_to_carrier": { "enable": true }, "select_outbound_caller_id": { "enable": true, "allow_hide_outbound_caller_id": true }, "sms": { "enable": true, "international_sms": true, "international_sms_countries": [ "US" ], "allow_copy": true, "allow_paste": true }, "voicemail": { "allow_delete": true, "allow_download": true, "allow_transcription": true, "allow_videomail": true, "enable": true }, "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "allow_sharing": false } ], "zoom_phone_on_mobile": { "enable": true, "allow_calling_clients": [ "ios" ], "allow_sms_mms_clients": [ "ios" ] }, "personal_audio_library": { "allow_music_on_hold_customization": true, "allow_voicemail_and_message_greeting_customization": true, "enable": true, "reset": true }, "voicemail_transcription": { "enable": true, "reset": true }, "voicemail_notification_by_email": { "include_voicemail_file": true, "include_voicemail_transcription": true, "enable": true, "reset": true }, "shared_voicemail_notification_by_email": { "enable": true, "reset": true }, "check_voicemails_over_phone": { "enable": true, "reset": true }, "audio_intercom": { "enable": true, "reset": true }, "e2e_encryption": { "enable": true, "reset": true }, "zoom_phone_on_desktop": { "enable": true, "reset": true, "allow_calling_clients": [ "mac_os" ], "allow_sms_mms_clients": [ "mac_os" ] }, "online_fax": { "enable": true, "reset": true, "fax_notification_by_email": true, "include_fax_as_attachment": true, "enable_outbound_fax_transmission_report": true } }, "site_id": "8f71O6rWT8KFUGQmJIFAdQ", "template_id": "Dv4YdINdTk+Z5RToadh5ug==" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Profile updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`13800\` \
You do not enable OP flag named 'Enable Caller Based Consent Options', use the same value to update 'inbound\_audio\_notification.recording\_start\_prompt' and 'outbound\_audio\_notification.recording\_start\_prompt'. \
\*\*Error Code:\*\* \`13800\` \
You do not enable OP flag named 'Enable Caller Based Consent Options', use the same value to update 'inbound\_audio\_notification.recording\_explicit\_consent' and 'outbound\_audio\_notification.recording\_explicit\_consent'. \
\*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update user's calling plan - **Method:** `PUT` - **Path:** `/phone/users/{userId}/calling_plans` - **Tags:** Users Switches the [calling plans](https://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) of a [Zoom Phone](https://support.zoom.us/hc/en-us/categories/360001370051-Zoom-Phone) user. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:calling_plan`,`phone:update:calling_plan:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`source_type` (required)** `integer` — The \[type]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) of the calling plan. - **`target_type` (required)** `integer` — The \[type]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) of the calling plan. - **`source_billing_subscription_id`** `string` — The billing subscription ID of source type.When there is more than one plan type A in this account, it cannot be empty. - **`target_billing_subscription_id`** `string` — The billing subscription ID of target type.When there is more than one plan type A in this account, it cannot be empty. **Example:** ```json { "source_type": 100, "target_type": 200, "source_billing_subscription_id": "FT-SUBREF-21168178", "target_billing_subscription_id": "FT-SUBREF-21168178" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Calling plan updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
User did not subscribe to the source plan. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist:{userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign calling plan to a user - **Method:** `POST` - **Path:** `/phone/users/{userId}/calling_plans` - **Tags:** Users Assigns a [calling plan](https://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) to a [Zoom Phone](https://support.zoom.us/hc/en-us/categories/360001370051-Zoom-Phone) user. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:calling_plan`,`phone:write:calling_plan:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`calling_plans`** `array` **Items:** - **`billing_account_id`** `string` — The billing account ID. If the user is located in India, this field is required. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions - **`type`** `integer` — The \[type]\(https\://developers.zoom.us/docs/api/references/phone-calling-plans/) of calling plan. **Example:** ```json { "calling_plans": [ { "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_subscription_id": "FT-SUBREF-21168178" } ] } ``` #### Responses ##### Status: 200 \*\*HTTP Status code:\*\* \`200\` Calling plan assigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. Invalid field. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist:{userId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Unassign user's calling plan - **Method:** `DELETE` - **Path:** `/phone/users/{userId}/calling_plans/{planType}` - **Tags:** Users Unassigns a [Zoom Phone](https://support.zoom.us/hc/en-us/categories/360001370051) user's [calling plan](https://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans). For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:users_calling_plan`,`phone:delete:users_calling_plan:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Calling plan unassigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
\*\*Error Code:\*\* \`400\` \
Invalid field. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist:{userId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List users' phone numbers for a customized outbound caller ID - **Method:** `GET` - **Path:** `/phone/users/{userId}/outbound_caller_id/customized_numbers` - **Tags:** Users Retrieves phone numbers that can be the `user-level` customized outbound caller ID. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_user_customized_number`,`phone:read:list_user_customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Customized numbers for outbound caller ID listed successfully. ###### Content-Type: application/json - **`customize_numbers`** `array` **Items:** - **`customize_id`** `string` — The customization ID. - **`display_name`** `string` — The name of the phone number. - **`extension_id`** `string` — The extension ID. - **`extension_name`** `string` — The extension name. - **`extension_number`** `string` — The extension number. - **`extension_type`** `string` — The extension type. - **`incoming`** `boolean` — Whether the incoming policy is enabled for the phone number. - **`outgoing`** `boolean` — Whether the outgoing policy is enabled for the phone number. - **`phone_number`** `string` — The phone number in E164 format. - **`phone_number_id`** `string` — The ID of the phone number. - **`site`** `object` - **`id`** `string` — The unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`name`** `string` — The name of the site. - **`next_page_token`** `string` — 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. - **`page_size`** `integer` — The number of records returned within a single API call for each page. - **`total_records`** `integer` — The total number of records returned. **Example:** ```json { "customize_numbers": [ { "customize_id": "8_RkKw9OQ42oYsXqJJjs4A", "phone_number_id": "55JUZPwERHuGttd_j4qBsQ", "phone_number": "+12055437350", "display_name": "test abc", "incoming": true, "outgoing": true, "extension_id": "HaSokHMCSeK8taMdv2vnXQ", "extension_type": "callQueue", "extension_number": "10001", "extension_name": "SJ CQ", "site": { "id": "8f71O6rWT8KFUGQmJIFAdQ", "name": "testSite" } } ], "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 30, "total_records": 10 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
\*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist:{userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add phone numbers for users' customized outbound caller ID - **Method:** `POST` - **Path:** `/phone/users/{userId}/outbound_caller_id/customized_numbers` - **Tags:** Users Adds users' customized outbound caller ID phone numbers. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:user_customized_number`,`phone:write:user_customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`phone_number_ids`** `array` — The phone number IDs. **Items:** `string` **Example:** ```json { "phone_number_ids": [ "55JUZPwERHuGttd_j4qBsQ" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \*\*Created\*\* Customized caller ID numbers added successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. Account level settings cannot be managed until disable multiple sites. Site not exist. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist:{userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove users' customized outbound caller ID phone numbers - **Method:** `DELETE` - **Path:** `/phone/users/{userId}/outbound_caller_id/customized_numbers` - **Tags:** Users Removes the users' customized outbound caller ID phone numbers. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:user_customized_number`,`phone:delete:user_customized_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*Created\*\* Customized numbers have been deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Validation Failed. Site does not exist.\
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get user policy details - **Method:** `GET` - **Path:** `/phone/users/{userId}/policies/{policyType}` - **Tags:** Users Returns the user policy details. **Prerequisites** - Pro or higher account plan with Zoom phone license **[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:user_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Get user policy details successfully. ###### Content-Type: application/json **One of:** - **`allow_emergency_calls`** `object` — The user-level settings for whether emergency calls are allowed for users and from specific device types. - **`allow_emergency_calls_from_clients`** `boolean` — Whether users are allowed to make emergency calls from zoom clients. - **`allow_emergency_calls_from_deskphones`** `boolean` — Whether users are allowed to make emergency calls from desk phones. - **`enable`** `boolean` — Whether users are allowed to make emergency calls. - **`locked`** `boolean` — Whether this setting is locked by the account administrator and cannot be overridden. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group", "site"` — This field specifies the configuration level that has enforced the lock. This indicates where the setting was originally locked and cannot be overridden. - **`modified`** `boolean` — Whether the current settings have been changed from the inherited defaults. If true, the settings can be reset. Applicable only when using the new policy framework. **Example:** ```json { "allow_emergency_calls": { "enable": true, "locked": true, "locked_by": "account", "modified": true, "allow_emergency_calls_from_clients": true, "allow_emergency_calls_from_deskphones": true } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Invalid value for parameter 'policyType'. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update user policy - **Method:** `PATCH` - **Path:** `/phone/users/{userId}/policies/{policyType}` - **Tags:** Users Updates a user's [Zoom Phone](https://support.zoom.us/hc/en-us/categories/360001370051-Zoom-Phone) policy. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[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:user_policy:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json **One of:** - **`allow_emergency_calls`** `object` — The user-level settings for whether emergency calls are allowed for users and from specific device types. - **`allow_emergency_calls_from_clients`** `boolean` — Whether users are allowed to make emergency calls from Zoom clients. - **`allow_emergency_calls_from_deskphones`** `boolean` — Whether users are allowed to make emergency calls from desk phones. - **`enable`** `boolean` — Whether users are allowed to make emergency calls. - **`reset`** `boolean` — Whether the current settings should be reset to inherit from higher-level configurations. Only applicable when the new policy framework is in use. **Example:** ```json { "allow_emergency_calls": { "enable": true, "reset": true, "allow_emergency_calls_from_clients": true, "allow_emergency_calls_from_deskphones": true } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` User policy updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
Invalid value for parameter 'policyType'. \
\*\*Error Code:\*\* \`400\` \
Reset cannot be combined with other operations. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a user's profile settings - **Method:** `GET` - **Path:** `/phone/users/{userId}/settings` - **Tags:** Users Returns the Zoom Phone [profile settings](https://support.zoom.us/hc/en-us/articles/360021325712-Configuring-Settings) of a user. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[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:user_setting:admin`,`phone:read:user_setting` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` User Setting object returned. ###### Content-Type: application/json - **`ad_hoc_call_recording_access_members`** `array` — The shared ad hoc call recording access member list. \<b\>Deprecated\</b\>, we will completely deprecate this property in a future release. Instead use policy.ad\_hoc\_call\_recording\_access\_members property from 'Get a user's profile' API. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share the access permissions with. - **`allow_delete`** `boolean` — This field specifies whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — This field specifies whether the user has download permissions. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`area_code`** `string` — The area code of user. - **`audio_prompt_language`** `string` — The audio prompt language code. American English: \`en-US\` British English: \`en-GB\` Espa\ñol americano: \`es-US\` Fran\çais canadien: \`fr-CA\` Dansk: \`da-DK\` Deutsch: \`de-DE\` Espa\ñol: \`es-ES\` Fran\çais: \`fr-FR\` Italiano: \`it-IT\` Nederlands: \`nl-NL\` Portugues portugal: \`pt-PT\` Japanese: \`ja-JP\` Korean: \`ko-KO\` Portugues brasil: \`pt-BR\` Chinese: \`zh-CN\` Taiwanese: \`zh-TW\` - **`auto_call_recording_access_members`** `array` — The shared automatic call recording access member list. \<b\>Deprecated\</b\>, we will completely deprecate this property in a future release. Instead use policy.auto\_call\_recording\_access\_members property from 'Get a user's profile' API. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share the access permissions with. - **`allow_delete`** `boolean` — This field specifies whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — This field specifies whether the user has download permissions. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`company_number`** `string` — The \[company number]\(https\://support.zoom.us/hc/en-us/articles/360028553691) can be used by external callers to reach your phone users (by dialing the main company number and the user's extension). It can also be used by phone users as their caller ID when making calls. - **`country`** `object` — The site's country. - **`code`** `string` — The two lettered country \[code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`country_code`** `string` — The country's calling code. - **`name`** `string` — The site's country name. - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`delegation`** `object` — The user delegation. - **`assistants`** `array` — The delegation assistants. **Items:** - **`display_name`** `string` — The display name. - **`extension_id`** `string` — The extension's ID. - **`extension_number`** `integer`, format: `int64` — The extension's number. - **`extension_type`** `string` — The extension's type: \`user\` or \`commonArea\`. - **`id`** `string` — The user or common area ID. - **`locked`** `boolean` — Whether to allow users to access to the feature of delegation. - **`privacy`** `boolean` — Whether to allow members to prevent others from picking up a held call, and listening, whispering, barging, or taking over a call if it's configured. - **`privileges`** `array`, possible values: `1, 2, 3, 4, 5, 6, 7` — The delegation privileges. 1-Place Calls, 2-Answer Calls, 3-Pick Up Hold Calls, 4-Manage VIP Contacts, 5-Opt In/Out, 6-Join and Merge Calls, 7-Set Business Hours. **Items:** `integer` - **`desk_phone`** `object` — This field contains information on phones or devices provisioned for the user. - **`devices`** `array` — The information about the desk phones. **Items:** - **`device_type`** `string` — The device type, including the manufacturer and the model name. - **`display_name`** `string` — The display name of the device. - **`id`** `string` — The device ID. - **`mac_address`** `string` — The MAC address or serial number of the device. - **`policy`** `object` — The device policy. - **`call_control`** `object` - **`status`** `string`, possible values: `"unsupported", "on", "off"` — This field allows the call control feature to the current device. Configure the desk phone devices to enable call control, which allows users to perform desk phone's call control actions from the Zoom desktop client, including making and accepting calls. Options include: \* \`unsupported\` \* \`on\` \* \`off\` - **`hot_desking`** `object` - **`status`** `string`, possible values: `"unsupported", "on", "off"` — This field allows the hot desking feature to the current device. It lets the guest user sign in to the desk phone. You can't use the desk phone until the guest user signs out. Options include: \* \`unsupported\` \* \`on\` \* \`off\` - **`private_ip`** `string` — The private IP of the registered device. - **`public_ip`** `string` — The public IP of the registered device. - **`status`** `string`, possible values: `"online", "offline"` — The status of the device: \`online\` or \`offline\`. - **`keys_positions`** `object` - **`primary_number`** `string` — The primary number of the user. - **`phone_screen_lock`** `boolean` — After enabling this option, you can lock your desk phone screen. A PIN code is required to unlock your phone. This feature is not supported on some devices. See \[Supported Device Types]\(https\://support.zoom.us/hc/en-us/articles/360029698771) for more information. - **`pin_code`** `string` — The PIN code to be used to access voicemail, hot desking, and unlocking desk phones. - **`extension_number`** `integer`, format: `int64` — The owner's extension number. - **`intercom`** `object` - **`audio_intercoms`** `array` — The extensions invited into the intercom relationship. **Items:** - **`device_id`** `string` — The device ID. Applicable when the extension level is \`commonArea\`. - **`device_status`** `string`, possible values: `"online", "offline", "no device"` — The status of the device. Applicable when the extension level is \`commonArea\`. - **`display_name`** `string` — The display's name. - **`extension_id`** `string` — The extension's ID. - **`extension_number`** `string` — The extension's number. - **`extension_type`** `string` — The extension's type: \`user\` or \`commonArea\`. - **`status`** `string`, possible values: `"active", "pending"` — The status of the extension: \`active\` or \`pending\`. - **`device`** `object` — The selected default device to which all your intercom calls will be routed. - **`id`** `string` — The device's ID. - **`name`** `string` — The device's name. - **`music_on_hold_id`** `string` — The music on hold ID. Options: empty char - default and \`0\` - disable - **`outbound_caller`** `object` — The information about the outbound caller. - **`number`** `string` — The outbound calling number. - **`outbound_caller_ids`** `array` **Items:** - **`is_default`** `boolean` — Whether the outbound caller ID is the default or not. If \`true\`, the outbound caller ID is the default caller ID. - **`name`** `string` — The outbound caller's name. - **`number`** `string` — The outbound caller's number. - **`shared_lines_call_setting`** `object` — The shared lines incoming call handling options. - **`shared_line_appearances`** `object` — The shared line appearances incoming call handling options. - **`executives`** `array` — The incoming call handling options for individual executives. **Items:** - **`allow_opt_out`** `boolean` — Whether the current user is allowed to opt in or out from receiving incoming calls for this executive. If false, the \`receive\_calls\` field cannot be modified. - **`display_name`** `string` — The user display name of current executive. - **`receive_calls`** `boolean` — Whether receiving incoming calls for this executive. Default is \*\*true\*\*. - **`user_id`** `string` — The user ID of current executive. - **`shared_line_groups`** `object` — The shared line groups incoming call handling options. - **`receive_calls`** `boolean` — Whether receiving incoming calls for all of the shared line groups. Default is \*\*true\*\*. - **`shared_line_group`** `array` — The incoming call handling options for individual shared line group. **Items:** - **`display_name`** `string` — The display name of current shared line group.. - **`receive_calls`** `boolean` — Whether receiving incoming calls for this shared line group. Default is \*\*true\*\*. - **`slg_id`** `string` — The unique identifier of the Shared Line Group. - **`status`** `string`, possible values: `"Active", "Inactive"` — The status of the user. - **`voice_mail`** `array` — The shared voicemail access member list. \<b\>Deprecated\</b\>, we will completely deprecate this property in a future release. Instead use policy.voicemail\_access\_members property from 'Get a user's profile' API. **Items:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or unique identifier of the common area depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`shared_id`** `string` — The unique identifier of the shared voicemail that the user can access. **Example:** ```json { "area_code": "01", "audio_prompt_language": "en-US", "default_transcription_language": "en-US", "company_number": "+12058945640", "country": { "code": "US", "country_code": "1", "name": "United States" }, "delegation": { "assistants": [ { "display_name": "test user delegation", "extension_id": "CcrEGgmeQem1uyJsuIRKwA", "extension_number": 1000123477, "extension_type": "user", "id": "fWOgOALdT1ei4vjXK-QYsA" } ], "privacy": true, "privileges": 1, "locked": true }, "desk_phone": { "devices": [ { "device_type": "Yealink t42s", "display_name": "ApiTA_Device_2020_12_14_22_59_31_749", "id": "GHFnf5WQe-H-_r0Wwx9iQ", "policy": { "call_control": { "status": "off" }, "hot_desking": { "status": "off" } }, "status": "online", "mac_address": "203a07240534", "private_ip": "192.168.10.13", "public_ip": "220.148.231.126" } ], "keys_positions": { "primary_number": "+123456789" }, "phone_screen_lock": true, "pin_code": "0995" }, "extension_number": 1000001036, "music_on_hold_id": "NOZ98sQvTimYi0XxL_x-iQ", "outbound_caller": { "number": "+123456789" }, "outbound_caller_ids": [ { "is_default": true, "name": "Outbound caller name.", "number": "+2097392651" } ], "status": "Active", "voice_mail": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "delete": true, "download": true, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "intercom": { "audio_intercoms": [ { "extension_id": "52OdSKGSSS-EOyJwQncFvA", "extension_number": "1000001004", "extension_type": "user", "display_name": "test name", "status": "pending", "device_id": "GHFnf5WQe-H-_r0Wwx9iQ", "device_status": "offline" } ], "device": { "id": "JHwOJZ_PRICfVhQlL0x_ww", "name": "Sita's Phone" } }, "auto_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "ad_hoc_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "shared_lines_call_setting": { "shared_line_appearances": { "executives": [ { "user_id": "DJPrG46sQPmaMnzFrKecOw", "display_name": "John Doe", "receive_calls": true, "allow_opt_out": true } ] }, "shared_line_groups": { "receive_calls": true, "shared_line_group": [ { "slg_id": "RQinnFtmTJ25mx89tW5Cmw", "display_name": "jamieSLGTest0", "receive_calls": true } ] } } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a user's profile settings - **Method:** `PATCH` - **Path:** `/phone/users/{userId}/settings` - **Tags:** Users Updates the Zoom Phone [profile settings](https://support.zoom.us/hc/en-us/articles/360021325712-Configuring-Settings) of a user. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write`,`phone:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:user_setting`,`phone:update:user_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`area_code`** `string` — The user's area code. - **`audio_prompt_language`** `string` — The audio prompt language code. American English: \`en-US\` British English: \`en-GB\` Espa\ñol americano: \`es-US\` Fran\çais canadien: \`fr-CA\` Dansk: \`da-DK\` Deutsch: \`de-DE\` Espa\ñol: \`es-ES\` Fran\çais: \`fr-FR\` Italiano: \`it-IT\` Nederlands: \`nl-NL\` Portugues portugal: \`pt-PT\` Japanese: \`ja-JP\` Korean: \`ko-KO\` Portugues brasil: \`pt-BR\` Chinese: \`zh-CN\` Taiwanese: \`zh-TW\` - **`country_iso_code`** `string` — The \[country ISO code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries) - **`default_transcription_language`** `string`, possible values: `"en-US", "en-GB", "es-US", "fr-CA", "da-DK", "de-DE", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-PT", "ja", "ko-KR", "pt-BR", "zh-CN"` — The default language selection for features such as voicemail and call recording. \* \`en-US\` : English (US) \* \`en-GB\` : English (UK) \* \`es-US\` : Spanish (US) \* \`fr-CA\` : French (Canada) \* \`da-DK\` : Danish (Denmark) \* \`de-DE\` : German (Germany) \* \`es-ES\` : Spanish (Spain) \* \`fr-FR\` : French (France) \* \`it-IT\` : Italian (Italy) \* \`nl-NL\` : Dutch (Netherlands) \* \`pt-PT\` : Portuguese (Portugal) \* \`ja\` : Japanese \* \`ko-KR\` : Korean (Korea) \* \`pt-BR\` : Portuguese (Brazil) \* \`zh-CN\` : Chinese (PRC) - **`music_on_hold_id`** `string` — The music on hold prompt ID. Options: empty char - default and \`0\` - disable - **`outbound_caller_id`** `string` — The user's outbound caller ID phone number, in E164 format. If you hide the caller ID, set the value to an \`empty string\` - **`shared_lines_call_setting`** `object` — Whether handling incoming calls for this executive or modifying call settings, delegation privileges to opt in or out are required. - **`shared_line_appearances`** `object` — The shared line appearances incoming call handling options. - **`executives`** `array` — The incoming call handling options for individual executives. **Items:** - **`receive_calls`** `boolean` — Whether receiving incoming calls for this executive, modifying this setting requires opt in/out delegation privileges. - **`user_id`** `string` — The user ID of current executive. - **`shared_line_groups`** `object` — The shared line groups incoming call handling options. - **`receive_calls`** `boolean` — Whether receiving incoming calls for all of the shared line groups. - **`shared_line_group`** `array` — The incoming call handling options for individual shared line group. **Items:** - **`receive_calls`** `boolean` — Whether receiving incoming calls for this shared line group. - **`slg_id`** `string` — The unique identifier of the Shared Line Group. **Example:** ```json { "area_code": "01", "audio_prompt_language": "en-US", "default_transcription_language": "en-US", "country_iso_code": "US", "music_on_hold_id": "NOZ98sQvTimYi0XxL_x-iQ", "outbound_caller_id": "+123123123", "shared_lines_call_setting": { "shared_line_appearances": { "executives": [ { "user_id": "DJPrG46sQPmaMnzFrKecOw", "receive_calls": true } ] }, "shared_line_groups": { "receive_calls": true, "shared_line_group": [ { "slg_id": "RQinnFtmTJ25mx89tW5Cmw", "receive_calls": true } ] } } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` User Setting updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
\*\*Error Code:\*\* \`400\` \
Outbound caller id has been locked. Do not allow hiding outbound caller id. Invalid outbound caller ID. \
\*\*Error Code:\*\* \`1151\` \
User {userId} cannot disable receiving incoming calls for executive {executiveUserId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a user's shared access setting - **Method:** `POST` - **Path:** `/phone/users/{userId}/settings/{settingType}` - **Tags:** Users Adds the user setting according to the setting type, specifically for delegation, intercom and shared access for voicemail, and call recordings. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. To see the shared access settings in the Zoom web portal, go to **Admin > Phone System Management > Users & Rooms** . Choose **Users** and select **User Policy**. Go to **Voicemail, Automatic Call Recording and Ad Hoc Call Recording**. To view the delegation and intercom setting in your Zoom web portal, navigate to **Admin > Phone System Management > Users & Rooms**. Choose the **Users** tab and select **User Settings** **Prerequisites:** - A Business or Enterprise account **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:shared_setting`,`phone:write:shared_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`ad_hoc_call_recording_access_members`** `array` — The shared ad hoc call recording access member list. **Items:** - **`access_user_id`** `string` — The Zoom user ID to share access permissions. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`auto_call_recording_access_members`** `array` — The shared automatic call recording access member list. **Items:** - **`access_user_id`** `string` — The Zoom user ID to share access permissions. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`delegation_assistant_extension_id`** `string` — The extension ID of the delegation assistant: \`user\` or \`common area\`. - **`device_id`** `string` — The device ID. - **`voice_mail`** `object` — This field allows you to update the voicemail setting. \<b\>Deprecated:\</b\> we will completely deprecate this property in a future release. Use property \`voicemail\_access\_members\` instead. - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or the unique identifier of the common area, depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. The default type will be user if empty. Allowed: user | commonArea. - **`delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`voicemail_access_members`** `array` — The shared voicemail access member list. **Items:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or the unique identifier of the common area, depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. The default type will be user if empty. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the user has permission to share. The default is \*\*false\*\*. **Example:** ```json { "delegation_assistant_extension_id": "CcrEGgmeQem1uyJsuIRKwA", "device_id": "-GHFnf5WQe-H-_r0Wwx9iQ", "voice_mail": { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "delete": true, "download": true }, "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_delete": false, "allow_download": false, "allow_sharing": false } ], "auto_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false } ], "ad_hoc_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code\*\* \`201\` Created Successfully. ###### Content-Type: application/json - **`ad_hoc_call_recording_access_members`** `array` — The shared ad hoc call recording access member list. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share access permissions. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`auto_call_recording_access_members`** `array` — The shared automatic call recording access member list. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share access permissions. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`delegation`** `object` — The user delegation. - **`assistants`** `array` — The delegation assistants. **Items:** - **`display_name`** `string` — The display name. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number. - **`extension_type`** `string` — The extension type: \`user\` or \`commonArea\`. - **`id`** `string` — The user or common area ID. - **`privacy`** `boolean` — Whether to allow members to prevent others from picking up a held call, and listening, whispering, barging, or taking over a call if it's configured. - **`privileges`** `array`, possible values: `1, 2, 3` — The delegation privileges. 1-Place Calls, 2-Answer Calls, 3- Pick Up Hold Calls. **Items:** `integer` - **`voice_mail`** `object` — This field adds a voicemail setting. \<b\>Deprecated:\</b\> we will completely deprecate this property in a future release. Use property \`voicemail\_access\_members\` instead. - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or unique identifier of the common area depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`shared_id`** `string` — The unique identifier of the voicemail that the user can access. - **`voicemail_access_members`** `array` — The shared voicemail access member list. **Items:** **All of:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or unique identifier of the common area depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the user has permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. **Example:** ```json { "delegation": { "assistants": [ { "display_name": "test delegation assistants", "extension_id": "CcrEGgmeQem1uyJsuIRKwA", "extension_number": 1000001036, "extension_type": "user", "id": "w0RChiauQeqRlv5fgxYULQ" } ], "privacy": true, "privileges": 1 }, "voice_mail": { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "delete": true, "download": true, "shared_id": "--e8ugg0SeS-9clgrDkn2w" }, "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_delete": false, "allow_download": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "auto_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "ad_hoc_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. Invalid user sub-setting type. Voicemail has already been shared to the user. Delegation assistant is required. Delegation assistant is not a user or a common area. User delegation assistant does not exist: {delegation\_assistant\_extension\_id}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a user's shared access setting - **Method:** `DELETE` - **Path:** `/phone/users/{userId}/settings/{settingType}` - **Tags:** Users Removes the user setting according to the setting type, specifically for delegation, intercom and shared access for voicemail and call recordings. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. To see the shared access settings in the Zoom web portal, go to **Admin > Phone System Management > Users & Rooms** . Click **Users** and select **User Policy**. Go to **Voicemail, Automatic Call Recording and Ad Hoc Call Recording**. To view the delegation and intercom setting in your Zoom web portal, navigate to **Admin > Phone System Management > Users & Rooms**. Click the **Users** tab and select **User Settings** **Prerequisites:** - A Business or Enterprise account **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:shared_setting`,`phone:delete:shared_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user sub-setting type.\
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a user's shared access setting - **Method:** `PATCH` - **Path:** `/phone/users/{userId}/settings/{settingType}` - **Tags:** Users Updates the user setting according to the setting type, specifically for delegation, intercom and shared access for voicemail and call recordings. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. To see the shared access settings in the Zoom web portal, go to **Admin > Phone System Management > Users & Rooms** . Choose **Users** and select **User Policy**. Go to **Voicemail, Automatic Call Recording and Ad Hoc Call Recording**. To view the delegation and intercom setting in your Zoom web portal, navigate to **Admin > Phone System Management > Users & Rooms**. Choose the **Users** tab and select **User Settings** **Prerequisites:** - A Business or Enterprise account **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:shared_setting`,`phone:update:shared_setting:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`ad_hoc_call_recording_access_members`** `array` — The shared ad hoc call recording access member list. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share the access permissions with. - **`allow_delete`** `boolean` — This field specifies whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — This field specifies whether the user has download permissions. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`auto_call_recording_access_members`** `array` — The shared automatic call recording access member list. **Items:** **All of:** - **`access_user_id`** `string` — The Zoom user ID to share the access permissions with. - **`allow_delete`** `boolean` — This field specifies whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — This field specifies whether the user has download permissions. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. - **`delegation`** `object` — The user delegation. - **`locked`** `boolean` — Whether to allow users to access to the feature of delegation. - **`privacy`** `boolean` — Whether to allow members to prevent others from picking up a held call, and listening, whispering, barging, or taking over a call if it's configured. - **`privileges`** `array`, possible values: `1, 2, 3, 4, 5, 6, 7, 8` — The delegation privileges. 1-Place Calls, 2-Answer Calls, 3-Pick Up Hold Calls, 4-Manage VIP Contacts, 5-Opt In/Out, 6-Join and Merge Calls, 7-Set Business Hours, 8-Reply to SMS. **Items:** `integer` - **`desk_phone`** `object` — This field updates desk phone information. - **`devices`** `array` — The setting for the devices. **Items:** - **`id`** `string` — The device ID. - **`policy`** `object` — The device policy. - **`call_control`** `object` - **`status`** `string`, possible values: `"on", "off"` — This field allows call control features to the current device: configure the desk phone devices to mirror call control actions of the Zoom desktop client, including making and accepting calls. Options include: \* \`on\` \* \`off\` - **`hot_desking`** `object` - **`status`** `string`, possible values: `"on", "off"` — This field allows hot desking feature to the current device: letting the guest user sign in to the desk phone. You can't use the desk phone until the guest user signs out. Options include: \* \`on\` \* \`off\` - **`phone_screen_lock`** `boolean` — After enabling this option, you can lock your desk phone screen. PIN Code is required to unlock your phone. This feature is not supported on some devices. See \[Supported Device Types]\(https\://support.zoom.us/hc/en-us/articles/360029698771) for more information. - **`pin_code`** `string` — The PIN Code to access voicemail, hot desking, and unlocking desk phones. - **`intercom`** `object` — This field updates the intercom setting. - **`device_id`** `string` — The ID of the device to which all your intercom calls will be routed. - **`extension_id`** `string` — The ID of the extension that you want to invite intercom connection. - **`voice_mail`** `object` — This field updates the voicemail setting. \<b\>Deprecated:\</b\> we will completely deprecate this property in a future release. Use property \`voicemail\_access\_members\` instead. - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or unique identifier of the common area depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`download`** `boolean` — Wether the user has download permissions. The default is \*\*false\*\*. - **`shared_id`** `string` — This field specifies the ID of the voicemail. - **`voicemail_access_members`** `array` — The shared voicemail access member list. **Items:** **All of:** - **`access_user_id`** `string` — The member's ID in the shared voicemail access list determines the sharing or updating of access permissions. It must be the unique identifier of the user, or unique identifier of the common area depending on the access user type. - **`access_user_type`** `string`, possible values: `"commonArea", "user"` — The extension type of the member to be added in the shared voicemail access member list. Allowed: user | commonArea. - **`allow_delete`** `boolean` — Whether the user has delete permissions. The default is \*\*false\*\*. - **`allow_download`** `boolean` — Whether the user has download permissions. The default is \*\*false\*\*. - **`allow_sharing`** `boolean` — Whether the user has permission to share. The default is \*\*false\*\*. * **`shared_id`** `string` — The unique identifier of the shared sub-setting that the user can access. **Example:** ```json { "delegation": { "privacy": true, "privileges": 1, "locked": true }, "desk_phone": { "devices": [ { "id": "-GHFnf5WQe-H-_r0Wwx9iQ", "policy": { "call_control": { "status": "off" }, "hot_desking": { "status": "off" } } } ], "phone_screen_lock": true, "pin_code": "09912" }, "voice_mail": { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "delete": true, "download": true, "shared_id": "--e8ugg0SeS-9clgrDkn2w" }, "intercom": { "extension_id": "JHwOJZ_PRICfVhQlL0x_ww", "device_id": "wG2kKqxyTJOCETmOpS5Kww" }, "voicemail_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "access_user_type": "commonArea", "allow_delete": false, "allow_download": false, "allow_sharing": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "auto_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ], "ad_hoc_call_recording_access_members": [ { "access_user_id": "w0RChiauQeqRlv5fgxYULQ", "allow_delete": false, "allow_download": false, "shared_id": "--e8ugg0SeS-9clgrDkn2w" } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` No Content ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. Invalid user setting Type: {settingType}. Delegation privileges error. Delegation privacy error. Delegation assistants do not exist. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get user voicemail details from a call log - **Method:** `GET` - **Path:** `/phone/users/{userId}/call_logs/{id}/voice_mail` - **Tags:** Voicemails Returns the detailed information on a voicemail associated with a call log ID. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - User must belong to a Business or Enterprise account - User must have a Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`,`phone_voicemail:read`,`phone_voicemail:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:voicemail`,`phone:read:voicemail:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 The voicemail information. ###### Content-Type: application/json - **`call_element_id`** `string` — The phone call element's unique ID. - **`call_history_id`** `string` - **`call_id`** `string` — The phone call ID. - **`call_log_id`** `string` — The call log ID. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_name`** `string` — The name of the callee. - **`callee_number`** `string` — The callee's phone number. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` \— Internal number. \* \`2\` \— External number. \* \`3\` \— Customized emergency number. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_name`** `string` — The name of the caller. - **`caller_number`** `string` — The caller's phone number. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` \— Internal number. \* \`2\` \— External number. - **`date_time`** `string` — The date the voicemail was created. - **`download_url`** `string` — The URL to download the voicemail. For security purposes, you must provide an OAuth access token in the auth header to download the voicemail file using this url. Example request: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token}' \ --header 'content-type: application/json' \`\`\` - **`duration`** `integer` — The duration of voicemail in seconds. - **`id`** `string` — The voicemail ID. - **`status`** `string`, possible values: `"read", "unread"` — The voicemail status: either 'read' or 'unread'. - **`transcription`** `object` — The voicemail transcript. - **`content`** `string` — The content of the voicemail transcript. - **`engine`** `string` — This field indicates the company that provides the transcription engine technology. - **`status`** `integer`, possible values: `0, 1, 2, 4, 5, 9, 11, 12, 13, 14, 409, 415, 422, 500, 601, 602, 603, 999` — The status of the voicemail transcript: \* \`0\` \— Transcript is not available. \* \`1\` \— Transcript is processing. \* \`2\` \— Transcript processed successfully. \* \`4\` \— Transcript is disabled. \* \`5\` \— Transcript is enabled. \* \`9\` \— Transcript web error. \* \`11\` \— Transcript download error. \* \`12\` \— Transcript upload error. \* \`13\` \— Transcript web database error. \* \`14\` \— Transcript BYOS (Bring Your Own Storage) upload error. \* \`409\` \— Transcript duplicate processing request error. \* \`415\` \— Transcript unsupported media error. \* \`422\` \— Transcript cannot be processed. \* \`500\` \— Transcript server error. \* \`601\` \— Transcript AISense after retry error. \* \`602\` \— Transcript AISense upload file error. \* \`603\` \— Transcript AISense download file error. \* \`999\` \— Transcript AISense error. **Example:** ```json { "call_id": "876634343743", "call_element_id": "20210609-a297ae04-a875-4cfd-85ab-4adcead91edb", "callee_name": "Jane Doe", "callee_number": "34567889", "callee_number_type": 2, "caller_name": "John Doe", "caller_number": "12345678", "caller_number_type": 1, "date_time": "2019-05-19T20:00:00Z", "download_url": "exampleurl.io", "duration": 18, "id": "d43520fc6b7e4b26bbeef58a8a80f235", "status": "read", "transcription": { "content": "some transcript content", "status": 2, "engine": "otter" }, "caller_account_code": "111", "callee_account_code": "222" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Voice mail does not exist: {0}. \
\*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get user's voicemails - **Method:** `GET` - **Path:** `/phone/users/{userId}/voice_mails` - **Tags:** Voicemails Returns a user's Zoom Phone voicemails. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`,`phone_voicemail:read`,`phone_voicemail:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_voicemails`,`phone:read:list_voicemails:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` User object returned. ###### Content-Type: application/json - **`from`** `string`, format: `date` — The start date of the query. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_count`** `integer` — The total number of pages. - **`page_size`** `integer` — The zize of each page. - **`to`** `string`, format: `date` — The end date. - **`total_records`** `integer` — The total number of records. - **`voice_mails`** `array` — The voicemails. **Items:** - **`call_element_id`** `string` — The phone call element's unique ID. - **`call_history_id`** `string` — The phone call history's unique ID. - **`call_id`** `string` — The phone call's unique ID. - **`call_log_id`** `string` — The phone call log's unique ID. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_name`** `string` — The contact name of callee. - **`callee_number`** `string` — The number of the callee. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` \— Internal number. \* \`2\` \— External number. \* \`3\` \— Customized emergency number. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_name`** `string` — The contact name of the caller. - **`caller_number`** `string` — The number of the caller. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` \— Internal number. \* \`2\` \— External number. - **`date_time`** `string` — The time and date the voice mail started. - **`download_url`** `string` — The download URL of the attachment. For security purposes, you must provide an OAuth access token in the auth header to download the voicemail file using this URL. Example request: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token}' \ --header 'content-type: application/json' \`\`\` - **`duration`** `integer` — The duration of voicemail in seconds. - **`id`** `string` — The voicemail ID. - **`status`** `string`, possible values: `"read", "unread"` — The status of the voice mail. It can be either 'read' or 'unread' **Example:** ```json { "from": "2021-05-19", "next_page_token": "VcXBknJ0MQ7kuXun5WKmSjHC1hOBGS2bbr2", "page_count": 10, "page_size": 15, "to": "2021-06-19", "total_records": 150, "voice_mails": [ { "call_id": "876634343743", "call_element_id": "20210609-a297ae04-a875-4cfd-85ab-4adcead91edb", "callee_name": "Jane Doe", "callee_number": "34567889", "callee_number_type": 2, "caller_name": "John Doe", "caller_number": "12345678", "caller_number_type": 1, "date_time": "2019-05-19T20:00:00Z", "download_url": "exampleurl.io", "duration": 18, "id": "d43520fc6b7e4b26bbeef58a8a80f235", "status": "read", "caller_account_code": "111", "callee_account_code": "222" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Invalid user id. \
\*\*Error Code:\*\* \`400\` \
The next page token is invalid or expired. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`1001\` \
User does not exist: {userId}. \
\*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get account voicemails - **Method:** `GET` - **Path:** `/phone/voice_mails` - **Tags:** Voicemails Gets a user's Zoom Phone voicemails. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`,`phone_voicemail:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_voicemails:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` User object returned. ###### Content-Type: application/json - **`from`** `string`, format: `date` — The start time and date of the query. - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_count`** `integer` — The total number of pages. - **`page_size`** `integer` — The size of each page. - **`to`** `string`, format: `date` — The end time and date of the query. - **`total_records`** `integer` — The total number of records. - **`voice_mails`** `array` — The voicemails. **Items:** - **`call_element_id`** `string` — The phone call element's unique ID. - **`call_id`** `string` — The phone call's unique ID. - **`call_log_id`** `string` — The phone call log's unique ID. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_name`** `string` — The contact name of the callee - **`callee_number`** `string` — The phone number of the callee (the one receiving the call) - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` — Internal number. \* \`2\` — External number. \* \`3\` — Customized emergency number. - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_name`** `string` — The contact name of the caller. - **`caller_number`** `string` — The phone number of the caller. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` — Internal number. \* \`2\` — External number. - **`date_time`** `string`, format: `date-time` — The start time and date of the voicemail. - **`days_left_auto_permantely_delete`** `integer` — The number of days left until voicemail is permanently deleted. If the voicemail never auto deletes, the value is '-1'. It exists only when voicemail is from trash. - **`deleted_time`** `string`, format: `date-time` — The time and date the voicemail was deleted. It exists only when voicemail is from trash. - **`download_url`** `string` — The download URL of the attachment. For security purposes, you must provide an OAuth access token in the auth header to download the voicemail file using this URL. Example request: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token}' \ --header 'content-type: application/json' \`\`\` - **`duration`** `integer` — The duration of the voicemail. The unit of time is seconds. - **`id`** `string` — The voicemail ID. - **`owner`** `object` — The owner of the voicemail. - **`extension_deleted_time`** `string` — The date time the extension was deleted. It exists only when extension\_status is \`deleted\`. - **`extension_number`** `integer`, format: `int64` — The extension number associated with the call number. - **`extension_status`** `string`, possible values: `"inactive", "deleted"` — This field indicates the status of extension. \* \`inactive\` \* \`deleted\`. - **`id`** `string` — The owner's ID. - **`name`** `string` — The name of the owner. - **`type`** `string`, possible values: `"user", "callQueue", "sharedLineGroup", "autoReceptionist", "commonArea"` — The owner's type, can be \`user\`, \`callQueue\`, \`sharedLineGroup\`, \`autoReceptionist\`, or \`sharedOffice\`(deprecated and to be replaced by \`commonArea\`. During the transition period, if \`sharedOffice\` is provided as the \`owner\_type\` parameter, \`sharedOffice\` is returned as a response. Conversely, if \`commonArea\` is provided, \`commonArea\` will be returned. If \`null\` is provided, \`sharedOffice\` will be returned temporarily, but it will be replaced by \`commonArea\` after the transition period). - **`soft_deleted_type`** `string`, possible values: `"Manual", "Data Retention"` — This field indicates how the voicemail was deleted. It exists only when voicemail is from trash. - **`status`** `string`, possible values: `"read", "unread"` — The status of the voicemail: 'read' or 'unread'. **Example:** ```json { "from": "2021-05-19", "next_page_token": "VcXBknJ0MQ7kuXun5WKmSjHC1hOBGS2bbr2", "page_count": 10, "page_size": 15, "to": "2021-06-19", "total_records": 150, "voice_mails": [ { "call_id": "876634343743", "call_log_id": "46541323465", "call_element_id": "20210609-a297ae04-a875-4cfd-85ab-4adcead91edb", "callee_name": "Jane Doe", "callee_number": "34567889", "callee_number_type": 2, "caller_name": "John Doe", "caller_number": "12345678", "caller_number_type": 1, "date_time": "2021-05-19T20:00:00Z", "download_url": "exampleurl.io", "duration": 18, "id": "d43520fc6b7e4b26bbeef58a8a80f235", "status": "read", "owner": { "extension_number": 1000123476, "id": "NL3cEpSdRc-c2t8aLoZqiw", "name": "user@test.com", "type": "user", "extension_status": "deleted", "extension_deleted_time": "2022-10-14T22:10:54Z" }, "deleted_time": "2023-04-18T22:10:49.907Z", "days_left_auto_permantely_delete": 30, "soft_deleted_type": "Manual", "caller_account_code": "111", "callee_account_code": "222" } ] } ``` ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Download a phone voicemail - **Method:** `GET` - **Path:** `/phone/voice_mails/download/{fileId}` - **Tags:** Voicemails Downloads the Zoom phone voicemail. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`,`phone_voicemail:read`,`phone_voicemail:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:voicemail:admin`,`phone:read:voicemail` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
File does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get voicemail details - **Method:** `GET` - **Path:** `/phone/voice_mails/{voicemailId}` - **Tags:** Voicemails Returns the information about a [voicemail message](https://support.zoom.us/hc/en-us/articles/360021400211-Managing-voicemail-messages). **Prerequisites** - Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read`,`phone:read:admin`,`phone_voicemail:read:admin`,`phone_voicemail:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:voicemail`,`phone:read:voicemail:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 The voicemail information. ###### Content-Type: application/json - **`call_element_id`** `string` — The phone call element's unique ID. - **`call_history_id`** `string` — The phone call history's unique ID. - **`call_id`** `string` — The phone call's unique ID. - **`call_log_id`** `string` — The phone call log's unique ID. - **`callee_account_code`** `string` — The callee's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`callee_name`** `string` — The name of the callee. - **`callee_number`** `string` — The callee's phone number. - **`callee_number_type`** `integer`, possible values: `1, 2, 3` — The callee's number type: \* \`1\` — Internal number \* \`2\` — External number \* \`3\` — Customized emergency number - **`caller_account_code`** `string` — The caller's account code. To dial between accounts, use the format: \[Account code] - \[extension number]. - **`caller_name`** `string` — The name of the caller. - **`caller_number`** `string` — The caller's phone number. - **`caller_number_type`** `integer`, possible values: `1, 2` — The caller's number type: \* \`1\` — Internal number \* \`2\` — External number - **`date_time`** `string` — The creation date of the voicemail. - **`days_left_auto_permantely_delete`** `integer` — The number of days left until voicemail is permanently deleted. If the voicemail never auto deletes, the value is \`-1\`. It exists only when voicemail is from trash. - **`deleted_time`** `string`, format: `date-time` — The deletion time and date of the voicemail. It exists only when voicemail is from trash. - **`download_url`** `string` — The URL to download the voicemail. For security purposes, you must provide an OAuth access token in the auth header to download the voicemail file using this url. Example request: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {access\_token}' \ --header 'content-type: application/json' \`\`\` - **`duration`** `integer` — The duration of voicemail in seconds. - **`id`** `string` — The voicemail ID. - **`intent_detect_status`** `string`, possible values: `"not_started", "processing", "success", "ai_detection_failed", "unknown_reason_failed"` — The current intent detection state of the voicemail: \* \`not\_started\` \— AI detect was not started. \* \`processing\` \— processing. \* \`success\` \— success. \* \`ai\_detection\_failed\` \— failed, AI detection failed. \* \`unknown\_reason\_failed\` \— failed, unknown reason. - **`intent_results`** `array` — The matched intents of the voicemail **Items:** - **`confidence_score`** `number` — The confidence score of the intent detected by the AI to this current voicemail - **`intent_id`** `string` — The intent ID. - **`soft_deleted_type`** `string`, possible values: `"Manual", "Data Retention"` — This field indicates how the voicemail was deleted. It exists only when voicemail is from trash. - **`status`** `string`, possible values: `"read", "unread"` — The status of the voicemail. It can be either \*\*read\*\* or \*\*unread\*\*. - **`transcription`** `object` — The voicemail transcript. - **`content`** `string` — The content of the voicemail transcript. - **`engine`** `string` — This field indicates the company that provides the transcription engine technology. - **`status`** `integer`, possible values: `0, 1, 2, 4, 5, 9, 11, 12, 13, 14, 409, 415, 422, 500, 601, 602, 603, 999` — The status of the voicemail transcript: \* \`0\` — Transcript is not available. \* \`1\` — Transcript is processing. \* \`2\` — Transcript processed successfully. \* \`4\` — Transcript is disabled. \* \`5\` — Transcript is enabled. \* \`9\` — Transcript web error. \* \`11\` — Transcript download error. \* \`12\` — Transcript upload error. \* \`13\` — Transcript web database error. \* \`14\` — Transcript BYOS (Bring Your Own Storage) upload error. \* \`409\` — Transcript duplicate processing request error. \* \`415\` — Transcript unsupported media error. \* \`422\` — Transcript cannot be processed. \* \`500\` — Transcript server error. \* \`601\` — Transcript AISense after retry error. \* \`602\` — Transcript AISense upload file error. \* \`603\` — Transcript AISense download file error. \* \`999\` — Transcript AISense error. - **`voice_mail_task`** `object` - **`content`** `string` — The voicemail task extracted from the voicemail transcription. - **`feedback`** `string`, possible values: `"none", "thumbs_up", "thumbs_down"` — This field provides feedback on the voicemail task. - **`status`** `string`, possible values: `"processing", "success", "no_task", "failure"` — This field indicates the processing status of extracting task from the voicemail transcription. \* \`processing\`: Indicates that the task extraction process is still ongoing. \* \`success\`: Indicates that the task is successfully extracted from the voicemail transcription. \* \`no\_task\`: Indicates that no recognizable task is found in the voicemail transcription. \* \`failure\`: Indicates that an error occurred during the task extraction transcription. **Example:** ```json { "call_id": "876634343743", "call_element_id": "20210609-a297ae04-a875-4cfd-85ab-4adcead91edb", "callee_name": "Jane Doe", "callee_number": "34567889", "callee_number_type": 2, "caller_name": "John Doe", "caller_number": "12345678", "caller_number_type": 1, "date_time": "2021-05-19T20:00:00Z", "download_url": "exampleurl.io", "duration": 18, "id": "d43520fc6b7e4b26bbeef58a8a80f235", "status": "read", "transcription": { "content": "some transcript content", "status": 2, "engine": "otter" }, "deleted_time": "2023-04-18T22:10:49.907Z", "days_left_auto_permantely_delete": 30, "soft_deleted_type": "Manual", "intent_detect_status": "success", "intent_results": [ { "intent_id": "", "confidence_score": 1 } ], "voice_mail_task": { "status": "success", "content": "Call back the caller at +12091112222 tomorrow.", "feedback": "thumbs_up" }, "caller_account_code": "111", "callee_account_code": "222" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Voice mail does not exist: {voicemailId}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a voicemail - **Method:** `DELETE` - **Path:** `/phone/voice_mails/{voicemailId}` - **Tags:** Voicemails Deletes an account's [voicemail message](https://support.zoom.us/hc/en-us/articles/360021400211-Managing-voicemail-messages). **Prerequisites:** - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write`,`phone_voicemail:write`,`phone_voicemail:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:voicemail`,`phone:delete:voicemail:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Voicemail deleted. ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized \*\*Error Code:\*\* \`124\` \
Account does not exist: {accountId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update Voicemail Read Status - **Method:** `PATCH` - **Path:** `/phone/voice_mails/{voicemailId}` - **Tags:** Voicemails Updates the status of [voicemail message](https://support.zoom.us/hc/en-us/articles/360021400211-Managing-voicemail-messages). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`,`phone:write`,`phone_voicemail:write`,`phone_voicemail:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:voicemail`,`phone:update:voicemail:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Voicemail status updated. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400\` \
The read status is invalid.\
Request failed because "Mark Voicemail as Unread" feature has not been enabled for this account.\
\
\*\*Error Code:\*\* \`404\` \
Voice mail does not exist: {0}. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List Zoom Rooms under Zoom Phone license - **Method:** `GET` - **Path:** `/phone/rooms` - **Tags:** Zoom Rooms Retrieves a list of [Zoom Rooms](https://support.zoom.us/hc/en-us/articles/360025153711) under the account that has the Zoom Phone license assigned.**Prerequisites:** \* A Pro or higher account plan \* A Zoom Phone license **[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:list_rooms:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Zoom Rooms retrieved successfully. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through a large set of results. 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. - **`page_size`** `integer`, default: `30` — The number of records returned from a single API call. - **`rooms`** `array` **Items:** - **`calling_plans`** `array` **Items:** - **`billing_account_id`** `string` — The billing account ID. it's displayed when the zoom room is located in India. - **`billing_account_name`** `string` — The billing account name. It's displayed when the Zoom Room is located in India. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions - **`billing_subscription_name`** `string` — The billing subscription name. It displays when the account supports billing multiple subscriptions.Can be edited via the Billing page - **`name`** `string` — Name of the calling plan that Zoom Room is enrolled in. - **`type`** `integer` — The type of calling plan of which the Zoom Room is enrolled. - **`extension_id`** `string` — The extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number assigned to the Zoom Room's Zoom phone number. - **`id`** `string` — The unique Identifier of the Zoom Room. - **`name`** `string` — The name of the Zoom Room. - **`phone_numbers`** `array` **Items:** - **`id`** `string` — The ID for phone number. - **`number`** `string` — The phone number in E164 format. - **`site`** `object` - **`id`** `string` — The \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites) ID. - **`name`** `string` — The name of the site. - **`total_records`** `integer` — The total records found for this query. **Example:** ```json { "next_page_token": "BJLYC6PABbAHdjwSkGVQeeR6B1juwHqj3G2", "page_size": 30, "rooms": [ { "calling_plans": [ { "name": "AU/NZ Metered", "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_account_name": "Delhi billing", "billing_subscription_id": "FT-SUBREF-21168178", "billing_subscription_name": "My Subscription" } ], "extension_id": "_zQiBLNDQumOuA_tOnBIrw", "extension_number": 10010, "id": "3JTPXDqTQCuzYJEwH6kN4g", "name": "test", "phone_numbers": [ { "id": "CMOXjhb7RHeVeiH0zL0f9A", "number": "12058945544" } ], "site": { "id": "kLD4F3WBT-O9LYE31C0tRQ", "name": "API DZ SITE3" } } ], "total_records": 1 } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`403\` \
You do not have permission. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add a Zoom Room to a Zoom Phone - **Method:** `POST` - **Path:** `/phone/rooms` - **Tags:** Zoom Rooms Associates a [Zoom Room](https://support.zoom.us/hc/en-us/articles/360025153711#h_70c74c57-50d6-406b-a4fa-2f33d4bebdbc) with a Zoom Phone license. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[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:write:room:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`calling_plans`** `array` **Items:** - **`billing_subscription_id`** `string` — The billing subscription ID. When there is more than one plan type A in this account, it cannot be empty. - **`type`** `integer` — The \[type]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) of calling plan. - **`id`** `string` — The Zoom Room ID. - **`site_id`** `string` — The ID of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). **Example:** ```json { "id": "_zQiBLNDQumOuA_tOnBIrw", "site_id": "kLD4F3WBT-O9LYE31C0tRQ", "calling_plans": [ { "type": 100, "billing_subscription_id": "FT-SUBREF-21168178" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status code:\*\* \`201\` Zoom Room added successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Unknown or invalid calling plan: {type}.\
\
\*\*Error Code:\*\* \`404\` \
Room does not exist:{roomId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List Zoom Rooms without Zoom Phone assignment - **Method:** `GET` - **Path:** `/phone/rooms/unassigned` - **Tags:** Zoom Rooms Returns [Zoom Rooms](https://support.zoom.us/hc/en-us/articles/360025153711) that are not assigned a Zoom Phone.**Prerequisites:** \* A Pro or higher account plan \* A Zoom Phone license **[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:list_rooms:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Available Zoom Rooms retrieved successfully. ###### Content-Type: application/json - **`rooms`** `array` **Items:** - **`cost_center`** `string` — The cost center the Zoom Room belongs to. - **`department`** `string` — The department the Zoom Room belongs to. - **`display_name`** `string` — Name of the Zoom Room. - **`id`** `string` — The Zoom Room ID. - **`location_id`** `string` — The Zoom Room location ID. - **`location_info`** `string` — The Zoom Room location information. **Example:** ```json { "rooms": [ { "id": "_zQiBLNDQumOuA_tOnBIrw", "display_name": "room_1", "location_id": "3zEOmHchRaWCb7hx9XwROg", "location_info": "San Jose City,California State,Unite States Country/Region", "department": "pbx department", "cost_center": "pbx cost center" } ] } ``` ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Account does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get a Zoom Room under Zoom Phone license - **Method:** `GET` - **Path:** `/phone/rooms/{roomId}` - **Tags:** Zoom Rooms Specifies [Zoom Room](https://support.zoom.us/hc/en-us/articles/360025153711) in an account with an assigned Zoom Phone license. **Prerequisites** - A Pro or higher account plan - A Zoom Phone license **[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:room:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \*\*OK\*\* Zoom Room retrieved successfully. ###### Content-Type: application/json - **`calling_plans`** `array` **Items:** - **`billing_account_id`** `string` — Billing account ID. Displayed when the zoom room is located in India. - **`billing_account_name`** `string` — Billing account name. Displayed when the zoom room is located in India. - **`billing_subscription_id`** `string` — The billing subscription ID. It displays when the account supports billing multiple subscriptions - **`billing_subscription_name`** `string` — The billing subscription name. It displays when the account supports billing multiple subscriptions.Can be edited via the Billing page - **`name`** `string` — Name of the calling plan that Zoom Room is enrolled in. - **`type`** `integer` — Type of calling plan that Zoom Room is enrolled in. - **`emergency_address`** `object` — The emergency location's address information. - **`address_line1`** `string` — The emergency location address line 1. - **`address_line2`** `string` — The emergency location address line 2. - **`city`** `string` — The emergency location address's city. - **`country`** `string` — Two-lettered country code (Aplha-2 code in ISO-3166 format). - **`id`** `string` — The emergency location address ID. - **`state_code`** `string` — The emergency location address's state code. - **`zip`** `string` — The emergency address zip code. - **`extension_id`** `string` — Extension ID. - **`extension_number`** `integer`, format: `int64` — The extension number of the Zoom Room. - **`id`** `string` — Unique Identifier of the Zoom Room. - **`name`** `string` — Name of the Zoom Room. - **`phone_numbers`** `array` **Items:** - **`id`** `string` — ID for phone number. - **`number`** `string` — Phone number in E164 format. - **`policy`** `object` - **`international_calling`** `object` - **`enable`** `boolean` — Allow current extension to place international calls outside of the calling plan. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group", "site", "extension"` — Which level of administrator prohibits modifying the current settings. - **`select_outbound_caller_id`** `object` - **`enable`** `boolean` — Allow current extension to change outbound caller ID when placing calls. - **`locked_by`** `string`, possible values: `"invalid", "account", "user_group", "site", "extension"` — Which level of administrator prohibits modifying the current settings. - **`site`** `object` - **`id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). - **`name`** `string` — Name of the site. **Example:** ```json { "calling_plans": [ { "name": "AU/NZ Metered", "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_account_name": "Delhi billing", "billing_subscription_id": "FT-SUBREF-21168178", "billing_subscription_name": "My Subscription" } ], "emergency_address": { "address_line1": "122", "address_line2": "122", "city": "12", "country": "SG", "id": "fXEdhQmSQheGaNuLYbm8Wg", "state_code": "123", "zip": "50383" }, "extension_id": "_zQiBLNDQumOuA_tOnBIrw", "extension_number": 1233012, "id": "3JTPXDqTQCuzYJEwH6kN4g", "name": "test", "phone_numbers": [ { "id": "6fTPXDwT2CuzYrwwH6sN4g", "number": "12058945544" } ], "policy": { "international_calling": { "enable": false, "locked_by": "site" }, "select_outbound_caller_id": { "enable": false, "locked_by": "account" } }, "site": { "id": "kLD4F3WBT-O9LYE31C0tRQ", "name": "API DZ SITE3" } } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove a Zoom Room from a ZP account - **Method:** `DELETE` - **Path:** `/phone/rooms/{roomId}` - **Tags:** Zoom Rooms Use this API to remove [Zoom Room](https://support.zoom.us/hc/en-us/articles/360025153711#h_140e30ba-5a88-40b9-b799-16883fa0a037) from a Zoom Phone account. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:delete:room:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Zoom Room removed successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Room does not exist:{roomId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a Zoom Room under Zoom Phone license - **Method:** `PATCH` - **Path:** `/phone/rooms/{roomId}` - **Tags:** Zoom Rooms Use this API to update a [Zoom Room](https://support.zoom.us/hc/en-us/articles/360025153711) in an account that has the Zoom Phone license assigned. **Prerequisites:** - A Pro or higher account plan - A Zoom Phone license **[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:room:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Request Body ##### Content-Type: application/json - **`extension_number`** `integer`, format: `int64` — The extension number of the Zoom Room. The number must be complete (i.e. site number + short extension). - **`policy`** `object` - **`international_calling`** `object` - **`enable`** `boolean` — Allow current extension to place international calls outside of the calling plan. - **`reset`** `boolean` — Using site setting. - **`select_outbound_caller_id`** `object` - **`enable`** `boolean` — Allow current extension to change outbound caller ID when placing calls. - **`reset`** `boolean` — Using site setting. - **`site_id`** `string` — Unique identifier of the \[site]\(https\://support.zoom.us/hc/en-us/articles/360020809672-Managing-Multiple-Sites). **Example:** ```json { "extension_number": 123487, "policy": { "international_calling": { "enable": true, "reset": true }, "select_outbound_caller_id": { "enable": true, "reset": true } }, "site_id": "kLD4F3WBT-O9LYE31C0tRQ" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` \*\*No Content\*\* Zoom Room updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Extension number error. \*\*Error Code:\*\* \`400\` \
Policy locked: {policy\_key}. \*\*Error Code:\*\* \`404\` \
Room does not exist:{roomId} Site does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign calling plans to a Zoom Room - **Method:** `POST` - **Path:** `/phone/rooms/{roomId}/calling_plans` - **Tags:** Zoom Rooms Assigns [calling plans](https://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) to a [Zoom Room](https://support.zoom.us/hc/en-us/articles/360025153711#h_70c74c57-50d6-406b-a4fa-2f33d4bebdbc) with a maximum of 200 numbers at a time. **Prerequisites** - A Business or Enterprise account - A Zoom Phone license **[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:write:room_calling_plan:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`calling_plans`** `array` **Items:** - **`billing_account_id`** `string` — Billing account ID. If the zoom room is located in India, the field is required. - **`billing_subscription_id`** `string` — The billing subscription ID. When there is more than one plan type A in this account, it cannot be empty. - **`type`** `integer` — \[Type]\(https\://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) of the calling plan. **Example:** ```json { "calling_plans": [ { "type": 100, "billing_account_id": "3WWAEiEjTj2IQuyDiKMd_A", "billing_subscription_id": "FT-SUBREF-21168178" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status code:\*\* \`201\` Calling plan assigned successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Plan invalid. \
\*\*Error Code:\*\* \`404\` \
Room does not exist:{roomId}. \
\*\*Error Code:\*\* \`429\` \
Room batch operation is limited to 5 per request. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove a calling plan from a Zoom Room - **Method:** `DELETE` - **Path:** `/phone/rooms/{roomId}/calling_plans/{type}` - **Tags:** Zoom Rooms Use this API to unassign a [calling plan](https://marketplace.zoom.us/docs/api-reference/other-references/plans#zoom-phone-calling-plans) from a [Zoom Room](https://support.zoom.us/hc/en-us/articles/360025153711#h_140e30ba-5a88-40b9-b799-16883fa0a037). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:delete:room_calling_plan:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Calling plan removed successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`300\` \
Plan invalid. \*\*Error Code:\*\* \`404\` \
Room does not exist:{roomId}. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Assign phone numbers to a Zoom Room - **Method:** `POST` - **Path:** `/phone/rooms/{roomId}/phone_numbers` - **Tags:** Zoom Rooms [Assigns phone numbers to a Zoom Room](https://support.zoom.us/hc/en-us/articles/360025153711). Up to 200 numbers at a time. **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license **[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:write:room_phone_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`phone_numbers`** `array` **Items:** - **`id`** `string` — ID for phone number - **`number`** `string` — Phone number in E164 format. **Example:** ```json { "phone_numbers": [ { "id": "---M1padRvSUtw7YihN7sA", "number": "12058945616" } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Phone number assigned successfully. ###### Content-Type: application/json **Example:** ```json {} ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Room does not exist:{roomId}. Phone number does not exist. \
\*\*Error Code:\*\* \`409\` \
Phone number already in use. This function requires a Zoom Phone Metered, Unlimited, or Pro plan. \
\*\*Error Code:\*\* \`429\` \
Room batch operation is limited to 5 per request. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove a phone number from a Zoom Room - **Method:** `DELETE` - **Path:** `/phone/rooms/{roomId}/phone_numbers/{phoneNumberId}` - **Tags:** Zoom Rooms Use this API to unassign a [phone number](https://support.zoom.us/hc/en-us/articles/360020808292-Managing-Phone-Numbers#h_38ba8b01-26e3-4b1b-a9b5-0717c00a7ca6) from a [Zoom Room](https://support.zoom.us/hc/en-us/articles/360025153711#h_140e30ba-5a88-40b9-b799-16883fa0a037). **Prerequisites:** - A Business or Enterprise account - A Zoom Phone license - The Zoom Room must have been previously assigned a Zoom Phone number **[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:delete:room_phone_number:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` The phone number has been removed successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`404\` \
Room does not exist:{roomId}. Phone number does not exist. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).