RingCentral Devices API
The Devices API from RingCentral — 8 operation(s) for devices.
The Devices API from RingCentral — 8 operation(s) for devices.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/ringcentral-devices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: RingCentral Adaptive Cards Devices API
description: RingCentral API specification
version: 1.0.58-20240529-47eda8bd
contact:
name: RingCentral Developers Support
url: https://developers.ringcentral.com/support
termsOfService: https://www.ringcentral.com/legal/apilitos.html
license:
name: RingCentral API License Agreement
url: https://www.ringcentral.com/legal/apilitos.html
servers:
- url: https://platform.ringcentral.com
description: Production API entry point
- url: https://media.ringcentral.com
description: Production Media entry point
- url: https://platform.devtest.ringcentral.com
description: Developer sandbox API entry point
- url: https://platform.devtest.ringcentral.com
description: Developer sandbox Media entry point
security:
- OAuth2: []
tags:
- name: Devices
paths:
/restapi/v2/accounts/{accountId}/device-inventory:
post:
summary: Add Phone to Inventory
description: Adds an existing phone (customer provided device - BYOD) as an unassigned device to the account inventory.
tags:
- Devices
operationId: addDeviceToInventory
parameters:
- $ref: '#/components/parameters/AccountId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddDeviceToInventoryRequest'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/AddDeviceToInventoryResponse'
'400':
$ref: '#/components/responses/InvalidRequest'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceNotAvailable'
x-feature: EditAccountDevices
x-availability: Limited
x-throttling-group: Heavy
x-app-permission: EditAccounts
delete:
summary: Delete Device from Inventory
description: 'Deletes an existing unassigned (without digital line or phone number) device or multiple devices
from the account inventory. It is possible to delete up to 10 devices per request.
'
tags:
- Devices
operationId: deleteDeviceFromInventory
parameters:
- $ref: '#/components/parameters/AccountId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteDeviceFromInventoryRequest'
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteDeviceFromInventoryResponse'
'400':
$ref: '#/components/responses/InvalidRequest'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceNotAvailable'
x-feature: AddRemoveDevices
x-availability: Limited
x-throttling-group: Heavy
x-app-permission: EditAccounts
/restapi/v2/accounts/{accountId}/devices/{deviceId}:
delete:
tags:
- Devices
summary: Remove phone line
description: "Disassociates a phone line (DL & Device) from an extension:\n\n - if the value of `keepAssetsInInventory` is `true`,\nthe given device is moved to unassigned devices and the number is moved to the number inventory;\n - if the value of `keepAssetsInInventory` is `false`, the given device and number is removed from the account;\n - if the parameter `keepAssetsInInventory` is not set (empty body), default value `true` is set.\n"
operationId: removeLineJWSPublic
parameters:
- $ref: '#/components/parameters/AccountId'
- name: deviceId
in: path
description: Internal identifier of a source device
required: true
schema:
type: string
example: '65462346462'
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/RemoveLineRequest'
responses:
'200':
description: 'Successful response (when `keepAssetsInInventory` is `true`)
'
content:
application/json:
schema:
$ref: '#/components/schemas/RemoveLineResponse'
'204':
description: 'Successful response (when `keepAssetsInInventory` is `false`)
'
'400':
$ref: '#/components/responses/InvalidRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
x-availability: Limited
x-throttling-group: Medium
x-app-permission: EditAccounts
x-user-permission: EditAccountDevices
/restapi/v2/accounts/{accountId}/devices/bulk-add:
post:
tags:
- Devices
summary: Add BYOD Devices
description: Adds multiple BYOD (customer provided) devices to an account.
operationId: bulkAddDevicesV2
parameters:
- $ref: '#/components/parameters/AccountId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAddDevicesRequest'
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAddDevicesResponse'
'400':
$ref: '#/components/responses/InvalidRequest'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceNotAvailable'
x-availability: Limited
x-throttling-group: Heavy
x-app-permission: EditAccounts
x-user-permission: AddRemoveDevices
/restapi/v2/accounts/{accountId}/extensions/{extensionId}/devices/{deviceId}/replace:
post:
tags:
- Devices
summary: Swap Devices
description: "Replaces the user device with another device, which is assigned to an extension\nor is stored in the inventory of the same account.\nCurrently, the following device types can be swapped - `HardPhone` and `OtherPhone`.\n\nPlease note:\n\n - This method allows replacing a device itself, while a phone number,\n a digital Line and an emergency address associated with this device remain unchanged\n and will still work together in a chain with the replacement device.\n - If a target device is from the inventory, then a source device will be moved\n to the inventory, and a target device will be assigned to the current extension.\n - If a target device is currently assigned to another extension,\n then the devices will be just swapped.\n"
operationId: replaceDevicesJWSPublic
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- name: deviceId
in: path
description: Internal identifier of a source device that is currently assigned to the given extension
required: true
schema:
type: string
example: '65462346462'
responses:
'204':
description: No content
'400':
$ref: '#/components/responses/InvalidRequest'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SwapDeviceRequest'
required: true
x-availability: Limited
x-throttling-group: Medium
x-app-permission: EditAccounts
x-user-permission: EditUserDevices
/restapi/v1.0/account/{accountId}/device/{deviceId}:
get:
tags:
- Devices
summary: Get Device
description: Returns account device(s) by their ID(s).
operationId: readDevice
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/DeviceId'
- name: syncEmergencyAddress
in: query
description: Specifies if an emergency address should be synchronized or not
schema:
type: boolean
default: false
responses:
'200':
description: Account device(s) information
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceResource'
x-feature: ReadAccountDevices
x-availability: High
x-throttling-group: Light
x-app-permission: ReadAccounts
x-user-permission: ReadCompanyDevices
put:
tags:
- Devices
summary: Update Device
description: Updates account device(s) by their ID(s).
operationId: updateDevice
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/DeviceId'
- name: prestatement
in: query
schema:
type: boolean
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountDeviceUpdate'
required: true
responses:
'200':
description: Updated device(s) information
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceResource'
x-feature: EditAccountDevices
x-availability: Limited
x-throttling-group: Medium
x-app-permission: EditAccounts
x-user-permission: EditCompanyDevices
/restapi/v1.0/account/{accountId}/device/{deviceId}/sip-info:
get:
tags:
- Devices
summary: Get Device SIP Info
description: Returns device SIP information.
operationId: readDeviceSipInfo
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/DeviceId'
responses:
'200':
description: Device SIP information
content:
application/json:
schema:
$ref: '#/components/schemas/SipInfoResource'
x-feature: ReadAccountDevices
x-availability: High
x-throttling-group: Light
x-app-permission: ReadAccounts
x-user-permission: ReadCompanyDevices
/restapi/v1.0/account/{accountId}/device/{deviceId}/emergency:
put:
tags:
- Devices
summary: Update Device Emergency Info
description: Updates account device emergency information.
operationId: updateDeviceEmergency
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/DeviceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountDeviceUpdate'
required: true
responses:
'200':
description: Updated emergency information of a device
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceResource'
x-availability: Limited
x-throttling-group: Medium
x-app-permission: EditAccounts
x-user-permission: EditCompanyDevices
/restapi/v1.0/account/{accountId}/extension/{extensionId}/device:
get:
tags:
- Devices
summary: List Extension Devices
description: 'Returns devices of an extension or multiple extensions by their ID(s). Batch request
is supported.
'
operationId: listExtensionDevices
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: linePooling
in: query
description: Pooling type of device - Host - a device with standalone paid phone line which can be linked to a soft client instance - Guest - a device with a linked phone line - None - a device without a phone line or with specific line (free, BLA, etc.)
schema:
type: string
enum:
- Host
- Guest
- None
- name: feature
in: query
description: Device feature or multiple features supported
schema:
$ref: '#/components/schemas/DeviceFeatureEnum'
- name: type
in: query
description: Device type
schema:
type: string
default: HardPhone
enum:
- HardPhone
- SoftPhone
- OtherPhone
- MobileDevice
- BLA
- Paging
- WebPhone
- WebRTC
- Room
- name: lineType
in: query
description: Phone line type
schema:
$ref: '#/components/schemas/PhoneLineTypeEnum'
responses:
'200':
description: Extension devices information
content:
application/json:
schema:
$ref: '#/components/schemas/GetExtensionDevicesResponse'
x-feature: ReadExtensionDevices
x-availability: High
x-throttling-group: Light
x-app-permission: ReadAccounts
x-user-permission: ReadUserDevices
components:
schemas:
ShippingMethodInfo:
allOf:
- $ref: '#/components/schemas/ShippingMethodIdModel'
- type: object
properties:
name:
type: string
description: Method name, corresponding to the identifier
enum:
- Ground
- 2 Day
- Overnight
BulkAddDevicesSuccessItem:
type: object
required:
- successful
- id
- extension
- phoneNumber
properties:
successful:
type: boolean
description: Indicates if the provisioning operation was successful for this item, always `true` in this model
example: true
id:
description: Internal identifier of the created device
type: string
example: '787878'
extension:
$ref: '#/components/schemas/BulkOperationExtensionReference'
phoneNumber:
$ref: '#/components/schemas/PhoneNumberE164'
ShippingMethodIdModel:
type: object
description: 'Devices shipping method. It is required if devices are ordered.
Availability of different shipping methods depends on package
definition.
'
required:
- id
properties:
id:
type: string
description: 'Shipping method ID:
- "1" - Ground Shipping (5-7 business days)
- "2" - Expedited Shipping (2-days)
- "3" - Overnight Shipping
'
enum:
- '1'
- '2'
- '3'
default: '1'
PhoneNumberInfoIntId:
type: object
properties:
id:
type: integer
description: Internal identifier of a phone number
format: int64
country:
$ref: '#/components/schemas/PhoneNumberCountryInfo'
extension:
$ref: '#/components/schemas/DeviceProvisioningExtensionInfo'
label:
type: string
description: Custom user-defined name of a phone number, if any
location:
type: string
description: Location (City, State). Filled for local US numbers
paymentType:
type: string
description: 'Payment type. ''External'' is returned for forwarded numbers
which are not terminated in the RingCentral phone system
'
enum:
- External
- Local
phoneNumber:
type: string
description: Phone number
status:
type: string
description: 'Status of a phone number. If the value is ''Normal'', the phone
number is ready to be used. Otherwise, it is an external number not yet
ported to RingCentral
'
type:
type: string
description: Phone number type
enum:
- VoiceFax
- FaxOnly
- VoiceOnly
usageType:
type: string
description: Usage type of the phone number
enum:
- MainCompanyNumber
- AdditionalCompanyNumber
- CompanyNumber
- DirectNumber
- CompanyFaxNumber
- ForwardedNumber
- ForwardedCompanyNumber
- ContactCenterNumber
description: Phone number information
DeviceProvisioningExtensionInfo:
type: object
properties:
id:
type: string
description: Internal identifier of an extension
uri:
type: string
format: uri
description: Canonical URI of an extension
extensionNumber:
type: string
description: Number of extension
partnerId:
type: string
description: 'For Partner Applications Internal identifier of an extension
created by partner. The RingCentral supports the mapping of accounts and
stores the corresponding account ID/extension ID for each partner ID of
a client application. In request URIs partner IDs are accepted instead
of regular RingCentral native IDs as path parameters using `pid=XXX` clause.
Though in response URIs contain the corresponding account IDs and extension
IDs. In all request and response bodies these values are reflected via
partnerId attributes of account and extension
'
description: Information on the extension, to which the phone number is assigned. Returned only for the request of Account phone number list
PhoneLinesInfo:
type: object
properties:
id:
type: string
description: Internal identifier of a phone line
lineType:
$ref: '#/components/schemas/PhoneLineTypeEnum'
phoneInfo:
$ref: '#/components/schemas/PhoneNumberInfoIntId'
emergencyAddress:
$ref: '#/components/schemas/EmergencyAddress'
CommonEmergencyLocationAddressInfoDefault:
type: object
properties:
country:
type: string
description: Country name
countryId:
type: string
description: Internal identifier of a country
countryIsoCode:
type: string
description: ISO code of a country
countryName:
type: string
description: Full name of a country
state:
type: string
description: 'State/Province name. Mandatory for the USA, the UK and Canada
'
stateId:
type: string
description: Internal identifier of a state
stateIsoCode:
type: string
description: ISO code of a state
stateName:
type: string
description: Full name of a state
city:
type: string
description: City name
street:
type: string
description: First line address
street2:
type: string
description: 'Second line address (apartment, suite, unit, building, floor,
etc.)
'
zip:
type: string
description: Postal (Zip) code
customerName:
type: string
description: Customer name
BulkAddDevicesResponse:
type: object
required:
- results
properties:
results:
type: array
items:
oneOf:
- $ref: '#/components/schemas/BulkAddDevicesSuccessItem'
- $ref: '#/components/schemas/BulkAddDevicesErrorItem'
UpdateDevicePhoneInfo:
type: object
properties:
id:
type: string
description: Internal identifier of a phone number
PhoneNumberDefinitionTollType:
type: object
description: To use as selection criteria when a number to be selected from the number pool.
required:
- tollType
properties:
tollType:
$ref: '#/components/schemas/PhoneNumberTollType'
DeviceResource:
type: object
properties:
id:
type: string
description: Internal identifier of a device
uri:
type: string
format: uri
description: Canonical URI of a device
sku:
type: string
description: 'Device identification number (SKU, Stock Keeping Unit) in the format
TP-ID [-AT-AC], where TP is device type (HP for RC desk phones, DV for all
other devices including soft phones); ID - device model ID; AT - add-on type
ID; AC - add-on count (if any). For example ''HP-56-2-2''
'
type:
type: string
description: Device type
default: HardPhone
enum:
- BLA
- SoftPhone
- OtherPhone
- HardPhone
- WebPhone
- Paging
- Room
- WebRTC
name:
type: string
description: 'Device name. Mandatory if ordering SoftPhone or OtherPhone.
Optional for HardPhone. If not specified for HardPhone, then
a device model is used as a device name
'
serial:
type: string
description: 'Serial number for HardPhone (is returned only when the phone
is shipped and provisioned); endpoint ID for SoftPhone and
mobile applications
'
status:
type: string
description: Device status
enum:
- Offline
- Online
computerName:
type: string
description: Computer name (for devices of `SoftPhone` type only)
model:
$ref: '#/components/schemas/ModelInfo'
extension:
$ref: '#/components/schemas/ExtensionInfoIntId'
emergency:
$ref: '#/components/schemas/DeviceEmergencyInfo'
emergencyServiceAddress:
$ref: '#/components/schemas/EmergencyServiceAddressResource'
phoneLines:
type: array
description: Phone lines information
items:
$ref: '#/components/schemas/PhoneLinesInfo'
shipping:
$ref: '#/components/schemas/ShippingInfo'
boxBillingId:
type: integer
format: int64
description: 'Box billing identifier of a device. Applicable only for devices of `HardPhone` type.
It is an alternative way to identify the device to be ordered. Either
`model` structure, or `boxBillingId` must be specified
'
useAsCommonPhone:
type: boolean
description: 'Supported only for devices assigned to Limited extensions.
If true, enables users to log in to this phone as a common phone.
'
hotDeskDevice:
type: boolean
description: This flag indicates whether this device is used for hot desking or not
inCompanyNet:
type: boolean
description: 'Network location status. `true` if the device is located in
the configured corporate network (On-Net); `false` for Off-Net location.
Parameter is not returned if `EmergencyAddressAutoUpdate` feature is not
enabled for the account/user, or if device network location is not determined
'
site:
$ref: '#/components/schemas/DeviceSiteInfo'
lastLocationReportTime:
type: string
format: date-time
description: 'Date/time of receiving last location report in
[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
format including timezone, for example *2016-03-10T18:07:52.534Z
'
linePooling:
$ref: '#/components/schemas/LinePoolingEnum'
billingStatement:
$ref: '#/components/schemas/BillingStatementInfo'
BillingStatementCharges:
type: object
properties:
description:
type: string
amount:
type: number
format: double
feature:
type: string
freeServiceCredit:
type: number
format: double
PhoneNumberDefinitionDirectNumberWithReservationId:
type: object
description: To be used for direct number assignment in case number pool is not supported
required:
- phoneNumber
properties:
phoneNumber:
type: string
description: Phone number ID
reservationId:
type: string
description: Phone number reservation ID
ModelInfo:
type: object
properties:
id:
type: string
description: Internal identifier of a HardPhone device model
name:
type: string
description: Device name
addons:
type: array
description: Add-ons description
items:
$ref: '#/components/schemas/AddonInfo'
deviceClass:
type: string
features:
type: array
description: Device feature or multiple features supported
items:
$ref: '#/components/schemas/DeviceFeatureEnum'
lineCount:
type: integer
format: int32
description: Max supported count of phone lines
description: HardPhone model information
GetExtensionDevicesResponse:
required:
- navigation
- paging
- records
type: object
properties:
uri:
type: string
format: uri
description: Link to a list of extension devices
records:
type: array
description: List of extension devices
items:
$ref: '#/components/schemas/DeviceResource'
navigation:
$ref: '#/components/schemas/PageNavigationModel'
paging:
$ref: '#/components/schemas/EnumeratedPagingModel'
EmergencyServiceAddressResource:
type: object
properties:
street:
type: string
street2:
type: string
city:
type: string
zip:
type: string
customerName:
type: string
state:
type: string
description: State/province name
stateId:
type: string
description: Internal identifier of a state
stateIsoCode:
type: string
description: ISO code of a state
stateName:
type: string
description: Full name of a state
countryId:
type: string
description: Internal identifier of a country
countryIsoCode:
type: string
description: ISO code of a country
country:
type: string
description: Country name
countryName:
type: string
description: Full name of a country
outOfCountry:
type: boolean
description: Specifies if emergency address is out of country
syncStatus:
type: string
description: 'Resulting status of emergency address synchronization. Returned
if `syncEmergencyAddress` parameter is set to `true`
'
enum:
- Verified
- Updated
- Deleted
- NotRequired
- Unsupported
- Failed
additionalCustomerName:
type: string
description: 'Name of an additional contact person. Should be specified for
countries except the US, Canada, the UK and Australia.
'
customerEmail:
type: string
format: email
description: 'Email of a primary contact person (receiver). Should be specified
for countries except the US, Canada, the UK and Australia.
'
additionalCustomerEmail:
type: string
format: email
description: 'Email of an additional contact person. Should be specified
for countries except the US, Canada, the UK and Australia.
'
customerPhone:
type: string
description: 'Phone number of a primary contact person (receiver). Should
be specified for countries except the US, Canada, the UK and Australia
'
additionalCustomerPhone:
type: string
description: 'Phone number of an additional contact person. Should be specified
for countries except the US, Canada, the UK & Australia.
'
lineProvisioningStatus:
type: string
description: Status of digital line provisioning
enum:
- Provisioning
- Valid
- Invalid
taxId:
type: string
description: Internal identifier of a tax
description: 'Address for emergency cases. The same emergency address is assigned
to all the numbers of one device
'
AddonInfo:
type: object
properties:
id:
type: string
name:
type: string
count:
type: integer
format: int32
PhoneNumberE164:
type: string
pattern: ^\+[1-9]\d{1,14}$
description: Phone number in e.164 format (with '+' prefix)
maxLength: 18
example: '+16501234567'
AddDeviceToInventoryResponse:
type: object
required:
- devices
- site
properties:
devices:
type: array
items:
type: object
required:
- id
properties:
id:
type: string
description: Internal identifier of a created device
site:
$ref: '#/components/schemas/SiteBasicInfo'
ShippingInfo:
type: object
properties:
status:
$ref: '#/components/schemas/ShippingStatus'
carrier:
type: string
description: 'Shipping carrier name. Appears only if the device status is ''Shipped''
'
trackingNumber:
type: string
description: 'Carrier-specific tracking number. Appears only if the device status is ''Shipped''
'
method:
$ref: '#/components/schemas/ShippingMethodInfo'
address:
$ref: '#/components/schemas/ShippingAddressInfo'
description: 'Shipping information, according to which devices (in case of HardPhone)
or e911 stickers (in case of SoftPhone and OtherPhone) will be delivered
to the customer
'
PhoneLineTypeEnum:
type: string
description: The type of phone line
enum:
- Unknown
- Standalone
- StandaloneFree
- BlaPrimary
- BlaSecondary
ParameterizedErrorResponseModel:
type: object
description: Standard error response which may include parameterized errors
required:
- errors
properties:
errors:
type: array
description: The array of errors (there will be just one in the most of the cases)
minItems: 1
items:
$ref: '#/components/schemas/ApiErrorWithParameter'
RemoveLineResponse:
type: object
required:
- id
- type
- name
properties:
id:
type: string
description: Internal identifier of a source device
type:
type: string
description: Device type
default: HardPhone
enum:
- HardPhone
- SoftPhone
- OtherPhone
- MobileDevice
- BLA
- Paging
- WebPhone
- WebRTC
- ZoomMobile
- ZoomPhone
- Room
- Unknown
name:
type: string
description: The display name of a source device
example: My Device N1
se
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ringcentral/refs/heads/main/openapi/ringcentral-devices-api-openapi.yml