RingCentral Presence API
The Presence API from RingCentral — 5 operation(s) for presence.
The Presence API from RingCentral — 5 operation(s) for presence.
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-presence-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 Presence 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: Presence
paths:
/restapi/v1.0/account/{accountId}/call-queues/{groupId}/presence:
get:
tags:
- Presence
summary: Get Call Queue Presence
description: Returns presence status of the call queue members.
operationId: readCallQueuePresence
parameters:
- $ref: '#/components/parameters/AccountId'
- name: groupId
in: path
description: Internal identifier of a call queue extension
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CallQueuePresence'
x-request-max-body-size: 100m
x-feature: ReadPresenceStatus
x-throttling-group: Light
x-app-permission: ReadPresence
put:
tags:
- Presence
summary: Update Call Queue Presence
description: Updates presence status of the call queue members in the specified queue.
operationId: updateCallQueuePresence
parameters:
- $ref: '#/components/parameters/AccountId'
- name: groupId
in: path
description: Internal identifier of a call queue extension
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CallQueueUpdatePresence'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CallQueuePresence'
x-request-max-body-size: 100m
x-feature: EditPresenceStatus
x-throttling-group: Medium
x-app-permission: EditPresence
x-notifications:
- $ref: '#/components/schemas/CallQueuePresenceEvent'
/restapi/v1.0/account/{accountId}/presence:
get:
tags:
- Presence
summary: Get User Presence Status List
description: 'Returns presence status of all extensions of an account. Please note: The presenceStatus is returned as Offline (the parameters telephonyStatus, message, userStatus and dndStatus are not returned at all) for the following extension types: Department, Announcement Only, Voicemail (Take Messages Only), Fax User, Paging Only Group, Shared Lines Group, IVR Menu, Application Extension.'
operationId: readAccountPresence
parameters:
- $ref: '#/components/parameters/AccountId'
- name: detailedTelephonyState
in: query
description: Whether to return detailed telephony state
schema:
type: boolean
- name: sipData
in: query
description: Whether to return SIP data
schema:
type: boolean
- name: page
in: query
description: Page number for account presence information
schema:
type: integer
format: int32
- name: perPage
in: query
description: Number for account presence information items per page
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccountPresenceInfo'
x-request-max-body-size: 100m
x-feature: ReadPresenceStatus
x-throttling-group: Heavy
x-app-permission: ReadPresence
x-user-permission: ReadPresenceStatus
x-notifications:
- $ref: '#/components/schemas/AccountPresenceEvent'
/restapi/v1.0/account/{accountId}/extension/{extensionId}/call-queue-presence:
get:
tags:
- Presence
summary: Get Agent’s Call Queue Presence
description: Returns a list of agent's call queues with the agent presence status (per queue).
operationId: readExtensionCallQueuePresence
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- name: editableMemberStatus
in: query
description: Filtering by the flag 'Allow members to change their Queue Status'. If 'true' only queues where user can change his availability status are returned
schema:
type: boolean
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ExtensionCallQueuePresenceList'
x-request-max-body-size: 100m
x-feature: ReadPresenceStatus
x-throttling-group: Light
x-app-permission: ReadPresence
put:
tags:
- Presence
summary: Update Call Queue Presence
description: Updates availability of the agent for the call queues.
operationId: updateExtensionCallQueuePresence
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExtensionCallQueueUpdatePresenceList'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ExtensionCallQueuePresenceList'
x-request-max-body-size: 100m
x-feature: EditPresenceStatus
x-throttling-group: Medium
x-app-permission: EditPresence
x-notifications:
- $ref: '#/components/schemas/CallQueuePresenceEvent'
/restapi/v1.0/account/{accountId}/extension/{extensionId}/presence:
get:
tags:
- Presence
summary: Get User Presence Status
description: "Returns the presence status of an extension or several extensions by their ID(s). The `presenceStatus` is returned as Offline \n(the parameters `telephonyStatus`, `message`, `userStatus` and `dndStatus` are not returned at all) for the following extension types: \nDepartment/Announcement Only/Take Messages Only (Voicemail)/Fax User/Paging Only Group/Shared Lines Group/IVR Menu/Application Extension/Park Location.\nIf the user requests his/her own presence status, the response contains actual presence status even if the status publication is turned off.\n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported. For batch requests the number of extensions \nin one request is limited to 30. If more extensions are included in the request, the error code 400 Bad Request is returned with the logical error\ncode InvalidMultipartRequest and the corresponding message Extension Presence Info multipart request is limited to 30 extensions.\n"
operationId: readUserPresenceStatus
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- name: detailedTelephonyState
in: query
description: Specifies whether to return a detailed telephony state or not
schema:
type: boolean
- name: sipData
in: query
description: Specifies whether to return SIP data or not
schema:
type: boolean
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetPresenceInfo'
x-request-max-body-size: 100m
x-feature: ReadPresenceStatus
x-throttling-group: Light
x-app-permission: ReadPresence
x-user-permission: ReadPresenceStatus
x-notifications:
- $ref: '#/components/schemas/ExtensionPresenceEvent'
- $ref: '#/components/schemas/DetailedExtensionPresenceEvent'
- $ref: '#/components/schemas/DetailedExtensionPresenceWithSIPEvent'
put:
tags:
- Presence
summary: Update User Presence Status
description: 'Updates user-defined extension presence status, status message and DnD status by extension ID. Supported for regular User extensions only. The extension types listed do not support presence status: Department, Announcement Only, Take Messages Only (Voicemail), Fax User, Paging Only Group, Shared Lines Group, IVR Menu, Application Extension.'
operationId: updateUserPresenceStatus
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PresenceInfoRequest'
required: false
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PresenceInfoResponse'
x-request-max-body-size: 100m
x-feature: EditPresenceStatus
x-throttling-group: Medium
x-app-permission: EditPresence
x-notifications:
- $ref: '#/components/schemas/IncomingCallEvent'
- $ref: '#/components/schemas/MissedCallEvent'
/restapi/v1.0/account/{accountId}/extension/{extensionId}/unified-presence:
get:
tags:
- Presence
summary: Get Unified Presence
description: Returns the unified presence status of the requested user(s). The set of parameters returned by this method differs whether you return the requester's presence or any other user presence.
operationId: readUnifiedPresence
parameters:
- name: accountId
in: path
description: Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
required: true
schema:
type: string
default: '~'
- name: extensionId
in: path
description: Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
required: true
schema:
type: string
default: '~'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedPresence'
'207':
description: Multi-Status
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedPresenceList'
'400':
description: Some of the parameters are missing or have invalid format
'404':
description: Resource not found
x-throttling-group: Medium
x-app-permission: ReadPresence
x-user-permission: ReadPresenceStatus
patch:
tags:
- Presence
summary: Update Unified Presence
description: Updates the unified presence for the current user specified in path.
operationId: updateUnifiedPresence
parameters:
- name: accountId
in: path
description: Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
required: true
schema:
type: string
default: '~'
- name: extensionId
in: path
description: Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
required: true
schema:
type: string
default: '~'
requestBody:
description: JSON body
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUnifiedPresence'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedPresence'
'400':
description: Some of parameters are missing or have invalid format
'403':
description: User is not allowed to do this action
'404':
description: Resource not found
x-throttling-group: Medium
x-app-permission: EditPresence
x-user-permission: EditPresenceStatus
components:
schemas:
DetailedExtensionPresenceEvent:
type: object
properties:
uuid:
type: string
description: Universally unique identifier of a notification
event:
type: string
description: Event filter name
timestamp:
type: string
format: date-time
description: Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*
subscriptionId:
type: string
description: Internal identifier of a subscription
body:
$ref: '#/components/schemas/DetailedExtensionPresenceEventBody'
CallInfoCQ:
type: object
description: Primary/additional CQ information
properties:
primary:
$ref: '#/components/schemas/PrimaryCQInfo'
additional:
$ref: '#/components/schemas/AdditionalCQInfo'
ExtensionPresenceEvent:
type: object
properties:
uuid:
type: string
description: Universally unique identifier of a notification
event:
type: string
description: Event filter name
timestamp:
type: string
format: date-time
description: Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*
subscriptionId:
type: string
description: Internal identifier of a subscription
body:
$ref: '#/components/schemas/ExtensionPresenceEventBody'
DetailedExtensionPresenceEventBody:
type: object
description: Notification payload body
properties:
extensionId:
type: string
description: Internal identifier of an extension
default: '~'
telephonyStatus:
type: string
description: Telephony presence status. Returned if telephony status is changed.
enum:
- NoCall
- CallConnected
- Ringing
- OnHold
- ParkedCall
activeCalls:
type: array
description: List of the latest 7 active calls on extension
items:
$ref: '#/components/schemas/ActiveCallInfoWithoutSIP'
sequence:
type: integer
format: int32
description: Order number of a notification to state the chronology
presenceStatus:
type: string
description: Aggregated presence status, calculated from a number of sources
enum:
- Offline
- Busy
- Available
userStatus:
type: string
description: User-defined presence status (as previously published by the user)
enum:
- Offline
- Busy
- Available
meetingStatus:
type: string
description: Meetings presence status
enum:
- Connected
- Disconnected
dndStatus:
type: string
description: Extended DnD (Do not Disturb) status
enum:
- TakeAllCalls
- DoNotAcceptAnyCalls
- DoNotAcceptDepartmentCalls
- TakeDepartmentCallsOnly
allowSeeMyPresence:
type: boolean
description: If `true` enables other extensions to see the extension presence status
ringOnMonitoredCall:
type: boolean
description: If `true` enables to ring extension phone, if any user monitored by this extension is ringing
pickUpCallsOnHold:
type: boolean
description: If `true` enables the extension user to pick up a monitored line on hold
totalActiveCalls:
type: integer
format: int32
description: Total number of active calls on extension at the present moment
ownerId:
type: string
description: Internal identifier of a subscription owner extension
DetailedCallInfo:
type: object
properties:
callId:
type: string
toTag:
type: string
fromTag:
type: string
remoteUri:
format: uri
type: string
localUri:
format: uri
type: string
rcSessionId:
type: string
AccountPresenceInfo:
type: object
properties:
uri:
type: string
format: uri
description: Canonical URI of account presence resource
records:
type: array
description: List of Prompts
items:
$ref: '#/components/schemas/GetPresenceInfo'
navigation:
$ref: '#/components/schemas/PresenceNavigationInfo'
paging:
$ref: '#/components/schemas/PresencePagingInfo'
AdditionalCQInfo:
type: object
properties:
type:
type: string
description: Call information to be displayed as 'Line 2' for a call queue call session
enum:
- PhoneNumberLabel
- PhoneNumber
- QueueExtension
- QueueName
- CallerIdName
- CallerIdNumber
- None
value:
type: string
description: Call information value
description: Additional call session information. Supported for Call Queues only
ExtensionPresenceEventBody:
type: object
properties:
extensionId:
type: string
description: Internal identifier of an extension. Optional parameter
default: '~'
telephonyStatus:
type: string
description: Telephony presence status. Returned if telephony status is changed.
enum:
- NoCall
- CallConnected
- Ringing
- OnHold
- ParkedCall
sequence:
type: integer
format: int32
description: Order number of a notification to state the chronology
presenceStatus:
type: string
description: Aggregated presence status, calculated from a number of sources
enum:
- Offline
- Busy
- Available
userStatus:
type: string
description: User-defined presence status (as previously published by the user)
enum:
- Offline
- Busy
- Available
dndStatus:
type: string
description: Extended DnD (Do not Disturb) status
enum:
- TakeAllCalls
- DoNotAcceptAnyCalls
- DoNotAcceptDepartmentCalls
- TakeDepartmentCallsOnly
allowSeeMyPresence:
type: boolean
description: If `true` enables other extensions to see the extension presence status
ringOnMonitoredCall:
type: boolean
description: If `true` enables to ring extension phone, if any user monitored by this extension is ringing
pickUpCallsOnHold:
type: boolean
description: If `true` enables the extension user to pick up a monitored line on hold
ownerId:
type: string
description: Internal identifier of a subscription owner extension
UnifiedPresenceMeeting:
type: object
properties:
status:
type: string
description: Meeting status calculated from all user`s meetings
enum:
- NoMeeting
- InMeeting
description: Returned if *Meetings* feature is switched on
AccountPresenceEventBody:
type: object
description: Notification payload body
properties:
extensionId:
type: string
description: Internal identifier of an extension. Optional parameter
default: '~'
telephonyStatus:
type: string
description: Telephony presence status. Returned if telephony status is changed.
enum:
- NoCall
- CallConnected
- Ringing
- OnHold
- ParkedCall
sequence:
type: integer
format: int32
description: Order number of a notification to state the chronology
presenceStatus:
type: string
description: Aggregated presence status, calculated from a number of sources
enum:
- Offline
- Busy
- Available
userStatus:
type: string
description: User-defined presence status (as previously published by the user)
enum:
- Offline
- Busy
- Available
dndStatus:
type: string
description: Extended DnD (Do not Disturb) status
enum:
- TakeAllCalls
- DoNotAcceptAnyCalls
- DoNotAcceptDepartmentCalls
- TakeDepartmentCallsOnly
allowSeeMyPresence:
type: boolean
description: If `true` enables other extensions to see the extension presence status
ringOnMonitoredCall:
type: boolean
description: If `true` enables to ring extension phone, if any user monitored by this extension is ringing
pickUpCallsOnHold:
type: boolean
description: If `true` enables the extension user to pick up a monitored line on hold
ownerId:
type: string
description: Internal identifier of a subscription owner extension
DetailedExtensionPresenceWithSIPEventBody:
type: object
description: Notification payload body
properties:
extensionId:
type: string
description: Internal identifier of an extension
default: '~'
telephonyStatus:
type: string
description: Telephony presence status. Returned if telephony status is changed.
enum:
- NoCall
- CallConnected
- Ringing
- OnHold
- ParkedCall
activeCalls:
type: array
description: List of the latest 7 active calls on extension
items:
$ref: '#/components/schemas/ActiveCallInfo'
sequence:
type: integer
format: int32
description: Order number of a notification to state the chronology
presenceStatus:
type: string
description: Aggregated presence status, calculated from a number of sources
enum:
- Offline
- Busy
- Available
userStatus:
type: string
description: User-defined presence status (as previously published by the user)
enum:
- Offline
- Busy
- Available
meetingStatus:
type: string
description: Meetings presence status
enum:
- Connected
- Disconnected
dndStatus:
type: string
description: Extended DnD (Do not Disturb) status
enum:
- TakeAllCalls
- DoNotAcceptAnyCalls
- DoNotAcceptDepartmentCalls
- TakeDepartmentCallsOnly
allowSeeMyPresence:
type: boolean
description: If `true` enables other extensions to see the extension presence status
ringOnMonitoredCall:
type: boolean
description: If `true` enables to ring extension phone, if any user monitored by this extension is ringing
pickUpCallsOnHold:
type: boolean
description: If `true` enables the extension user to pick up a monitored line on hold
totalActiveCalls:
type: integer
format: int32
description: Total number of active calls on extension at the present moment
ownerId:
type: string
description: Internal identifier of a subscription owner extension
ExtensionCallQueueUpdatePresence:
type: object
properties:
callQueue:
$ref: '#/components/schemas/CallQueueId'
acceptCalls:
type: boolean
description: Call queue agent availability for calls of this queue
CallQueueMemberId:
type: object
description: Call queue member information
properties:
id:
type: string
description: Internal identifier of an extension - queue member
PrimaryCQInfo:
type: object
properties:
type:
type: string
description: Call information to be displayed as 'Line 1' for a call queue call session
enum:
- PhoneNumberLabel
- PhoneNumber
- QueueExtension
- QueueName
- CallerIdName
- CallerIdNumber
- None
value:
type: string
description: Call information value
description: Primary call session information. Supported for Call Queues only
CallQueueMemberPresence:
type: object
properties:
member:
$ref: '#/components/schemas/CallQueueMember'
acceptQueueCalls:
type: boolean
description: Private member telephony availability status applied to calls of all queues
acceptCurrentQueueCalls:
type: boolean
description: Call queue member availability in this particular queue
APNSInfo:
type: object
description: APNS (Apple Push Notification Service) information
properties:
aps:
$ref: '#/components/schemas/APSInfo'
GetPresenceExtensionInfo:
type: object
description: Information on extension, for which this presence data is returned
properties:
id:
type: integer
format: int64
description: Internal identifier of an extension
uri:
type: string
format: uri
description: Canonical URI of an extension
extensionNumber:
type: string
description: Extension number (usually 3 or 4 digits)
PresenceInfoResponse:
type: object
properties:
uri:
type: string
format: uri
description: Link to the presence resource
userStatus:
type: string
enum:
- Offline
- Busy
- Available
dndStatus:
type: string
enum:
- TakeAllCalls
- DoNotAcceptDepartmentCalls
- TakeDepartmentCallsOnly
- DoNotAcceptAnyCalls
- Unknown
message:
maxLength: 75
minLength: 0
type: string
allowSeeMyPresence:
type: boolean
default: false
callerIdVisibility:
type: string
description: "Configures the user presence visibility. When the `allowSeeMyPresence` parameter is set to `true`, \nthe following visibility options are supported via this parameter - All, None, PermittedUsers\n"
enum:
- All
- None
- PermittedUsers
ringOnMonitoredCall:
type: boolean
default: false
pickUpCallsOnHold:
type: boolean
default: false
activeCalls:
type: array
items:
$ref: '#/components/schemas/ActiveCallInfo'
extension:
$ref: '#/components/schemas/GetPresenceExtensionInfo'
meetingStatus:
type: string
description: Meetings presence status
enum:
- Connected
- Disconnected
telephonyStatus:
type: string
description: Telephony presence status. Returned if telephony status is changed
enum:
- NoCall
- CallConnected
- Ringing
- OnHold
- ParkedCall
presenceStatus:
type: string
description: Aggregated presence status, calculated from a number of sources
enum:
- Offline
- Busy
- Available
AccountPresenceEvent:
type: object
properties:
uuid:
type: string
description: Universally unique identifier of a notification
event:
type: string
description: Event filter name
timestamp:
type: string
format: date-time
description: Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*
subscriptionId:
type: string
description: Internal identifier of a subscription
body:
$ref: '#/components/schemas/AccountPresenceEventBody'
UnifiedPresenceGlip:
type: object
properties:
status:
type: string
description: Glip connection status calculated from all user's apps. Returned always for the requester's extension; returned for another users if their glip visibility is set to 'Visible'
enum:
- Offline
- Online
visibility:
type: string
description: Visibility setting allowing other users to see the user's Glip presence status; returned only for requester's extension
enum:
- Visible
- Invisible
availability:
type: string
description: Shows whether user wants to receive Glip notifications or not.
enum:
- Available
- DND
description: Returned if *Glip* feature is switched on
UpdateUnifiedPresenceGlip:
type: object
properties:
visibility:
type: string
description: Visibility setting allowing other users to see Glip presence status
enum:
- Visible
- Invisible
availability:
type: string
description: Availability setting specifying whether to receive Glip notifications or not
enum:
- Available
- DND
CallQueuePresence:
type: object
properties:
records:
type: array
items:
$ref: '#/components/schemas/CallQueueMemberPresence'
UpdateUnifiedPresenceTelephony:
type: object
properties:
availability:
type: string
description: Telephony DND status
enum:
- TakeAllCalls
- DoNotAcceptAnyCalls
- DoNotAcceptQueueCalls
DetailedExtensionPresenceWithSIPEvent:
type: object
properties:
uuid:
type: string
description: Universally unique identifier of a notification
event:
type: string
description: Event filter name
timestamp:
type: string
format: date-time
description: Timestamp when this notification was sent in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format including timezone, for example *2016-03-10T18:07:52.534Z*
subscriptionId:
type: string
description: Internal identifier of a subscription
body:
$ref: '#/components/schemas/DetailedExtensionPresenceWithSIPEventBody'
PresenceCallQueueInfo:
type: object
description: Call queue information
properties:
id:
type: string
description: Internal identifier of a call queue
name:
type: string
description: Name of a call queue
extensionNumber:
type: string
description: Extension number of a call queue
editableMemberStatus:
type
# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ringcentral/refs/heads/main/openapi/ringcentral-presence-api-openapi.yml