RingCentral External Contacts API
The External Contacts API from RingCentral — 6 operation(s) for external contacts.
The External Contacts API from RingCentral — 6 operation(s) for external contacts.
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-external-contacts-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 External Contacts 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: External Contacts
paths:
/restapi/v1.0/account/{accountId}/address-book-bulk-upload:
post:
tags:
- External Contacts
summary: Upload Multiple User Contacts
description: 'Uploads multiple contacts for multiple extensions at once.
Maximum 500 extensions can be uploaded per request. Max amount
of contacts that can be uploaded per extension is 10,000.
Each contact uploaded for a certain extension is not visible
to other extensions.
'
operationId: addressBookBulkUpload
parameters:
- $ref: '#/components/parameters/AccountId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddressBookBulkUploadRequest'
required: true
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/AddressBookBulkUploadResponse'
x-feature: EditPersonalContacts
x-request-max-body-size: 20m
x-availability: Limited
x-throttling-group: Heavy
x-app-permission: Contacts
x-user-permission: EditPersonalContacts
/restapi/v1.0/account/{accountId}/address-book-bulk-upload/tasks/{taskId}:
get:
tags:
- External Contacts
summary: Get Contacts Upload Task
description: 'Returns the status of a task on adding multiple contacts to multiple extensions.
'
operationId: getAddressBookBulkUploadTask
parameters:
- $ref: '#/components/parameters/AccountId'
- name: taskId
in: path
description: Internal identifier of a task
required: true
schema:
type: string
responses:
'200':
description: Contacts upload task
content:
application/json:
schema:
$ref: '#/components/schemas/AddressBookBulkUploadResponse'
x-feature: EditPersonalContacts
x-availability: Limited
x-throttling-group: Light
x-app-permission: Contacts
x-user-permission: EditPersonalContacts
/restapi/v1.0/account/{accountId}/extension/{extensionId}/favorite:
get:
tags:
- External Contacts
summary: List Favorite Contacts
description: 'Returns the list of favorite contacts of the current extension.
Favorite contacts include both company contacts (extensions) and personal
contacts (address book records).
'
operationId: listFavoriteContacts
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
responses:
'200':
description: Favorite Contact List
content:
application/json:
schema:
$ref: '#/components/schemas/FavoriteContactList'
x-feature: ReadPersonalContacts
x-availability: High
x-throttling-group: Light
x-user-permission: ReadPersonalContacts
x-app-permission: ReadContacts
x-notifications:
- $ref: '#/components/schemas/ExtensionFavoritesEvent'
put:
tags:
- External Contacts
summary: Update Favorite Contact List
description: 'Updates the list of favorite contacts of the current extension.
Favorite contacts include both company contacts (extensions) and personal
contacts (address book records).**Please note**: Currently personal address
book size is limited to 10 000 contacts.
'
operationId: updateFavoriteContactList
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FavoriteCollection'
required: true
responses:
'200':
description: Favorite contacts list
content:
application/json:
schema:
$ref: '#/components/schemas/FavoriteContactList'
x-feature: EditPersonalContacts
x-availability: Limited
x-throttling-group: Medium
x-app-permission: Contacts
x-user-permission: EditPersonalContacts
/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact:
get:
tags:
- External Contacts
summary: List Contacts
description: 'Returns the user personal contacts.
'
operationId: listContacts
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- name: startsWith
in: query
description: 'If specified, only contacts which ''First name'' or ''Last name'' start
with the mentioned substring will be returned. Case-insensitive
'
schema:
type: string
- name: sortBy
in: query
description: Sorts results by the specified property
style: form
explode: true
schema:
type: array
items:
type: string
enum:
- FirstName
- LastName
- Company
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: phoneNumber
in: query
description: Phone number in e.164 format
style: form
explode: true
schema:
type: array
items:
type: string
responses:
'200':
description: Contact list
content:
application/json:
schema:
$ref: '#/components/schemas/ContactList'
x-feature: ReadPersonalContacts
x-availability: High
x-throttling-group: Heavy
x-app-permission: ReadContacts
x-user-permission: ReadPersonalContacts
post:
tags:
- External Contacts
summary: Create User Contact
description: 'Creates the user personal contact.
'
operationId: createContact
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- name: dialingPlan
in: query
description: 'Country code value complying with the [ISO 3166-1 alpha-2](https://ru.wikipedia.org/wiki/ISO_3166-1_alpha-2)
format. The default value is home country of the current extension
'
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalContactRequest'
required: true
responses:
'200':
description: Created contact information
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalContactResource'
'400':
description: 'Contact cannot be created: max contacts count reached ($limit)'
x-feature: EditPersonalContacts
x-availability: Limited
x-throttling-group: Heavy
x-app-permission: Contacts
x-user-permission: EditPersonalContacts
/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact/{contactId}:
get:
tags:
- External Contacts
summary: Get User Contact(s)
description: "Returns the user personal contact(s). \n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.\n"
operationId: readContact
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- $ref: '#/components/parameters/ContactIds'
responses:
'200':
description: User personal contact(s) information
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalContactResource'
x-feature: ReadPersonalContacts
x-availability: High
x-throttling-group: Heavy
x-app-permission: ReadContacts
x-user-permission: ReadPersonalContacts
put:
tags:
- External Contacts
summary: Update User Contact(s)
description: "Updates the user personal contact(s) (full resource update). \n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.\n"
operationId: updateContact
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- $ref: '#/components/parameters/ContactIds'
- name: dialingPlan
in: query
description: "Country code value complying with the [ISO 3166-1 alpha-2](https://ru.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. \nThe default value is home country of the current extension\n"
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalContactRequest'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalContactResource'
x-feature: EditPersonalContacts
x-availability: Limited
x-throttling-group: Heavy
x-app-permission: Contacts
x-user-permission: EditPersonalContacts
patch:
tags:
- External Contacts
summary: Update Contact Attributes
description: 'Updates particular values of a personal contact attributes specified in request (partial resource update). Omitted attributes will remain unchanged.
If any attribute is passed in request body with the null value, then this attribute value will be removed.
'
operationId: patchContact
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- $ref: '#/components/parameters/ContactId'
- name: dialingPlan
in: query
description: 'Country code value complying with the [ISO 3166-1 alpha-2](https://ru.wikipedia.org/wiki/ISO_3166-1_alpha-2)
format. The default value is home country of the current extension
'
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalContactRequest'
required: true
responses:
'200':
description: Edited personal contact information
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalContactResource'
x-availability: Limited
x-throttling-group: Heavy
x-app-permission: Contacts
x-user-permission: EditPersonalContacts
delete:
tags:
- External Contacts
summary: Delete User Contact(s)
description: "Deletes the user personal contact(s). \n[Batch request syntax](https://developers.ringcentral.com/api-reference/Batch-Requests) is supported.\n"
operationId: deleteContact
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- $ref: '#/components/parameters/ContactIds'
responses:
'204':
description: No Content
x-feature: EditPersonalContacts
x-availability: Limited
x-throttling-group: Heavy
x-app-permission: Contacts
x-user-permission: EditPersonalContacts
/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book-sync:
get:
tags:
- External Contacts
summary: Address Book Synchronization
description: 'Synchronizes user contacts.
'
operationId: syncAddressBook
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/ExtensionId'
- name: syncType
in: query
description: Type of synchronization
schema:
type: string
enum:
- FSync
- ISync
- name: syncToken
in: query
description: 'Value of syncToken property of the last sync request response
'
schema:
type: string
- name: perPage
in: query
description: 'Number of records per page to be returned. Max number of
records is 250, which is also the default.
For ''FSync'' - if the number of records exceeds the parameter value
(either specified or default), all of the pages can be retrieved
in several requests. For ''ISync'' - if the number of records exceeds
page size, then the number of incoming changes to this
number is limited
'
schema:
type: integer
format: int32
- name: pageId
in: query
description: 'Internal identifier of a page. It can be obtained from the ''nextPageId''
parameter passed in response body
'
schema:
type: integer
format: int64
responses:
'200':
description: Synchronized user contacts
content:
application/json:
schema:
$ref: '#/components/schemas/AddressBookSync'
x-feature: ReadPersonalContacts
x-availability: High
x-throttling-group: Heavy
x-app-permission: ReadContacts
x-user-permission: ReadPersonalContacts
components:
schemas:
ContactAddressInfo:
type: object
properties:
street:
type: string
description: Street address
example: 20 Davis Dr.
city:
type: string
description: City name
example: Belmont
country:
type: string
description: Country name
state:
type: string
description: State/province name
example: CA
zip:
type: string
description: Zip/Postal code
example: '94002'
UserContactsNavigationInfoUri:
type: object
properties:
uri:
type: string
format: uri
description: Canonical URI for a corresponding page of a list
UserContactsGroupsInfo:
type: object
properties:
uri:
type: string
format: uri
description: Link to the list of address book groups
description: Information on address book groups
FavoriteContactResource:
type: object
properties:
id:
type: integer
format: int64
extensionId:
type: string
accountId:
type: string
contactId:
type: string
AddressBookBulkUploadResponse:
description: 'Information on a task for adding multiple contacts to multiple extensions
'
required:
- id
- uri
- creationTime
- lastModifiedTime
- status
type: object
properties:
id:
type: string
description: Internal identifier of a task
uri:
type: string
format: uri
description: Link for the task status retrieval
status:
type: string
description: Task status
enum:
- Accepted
- InProgress
- Completed
- Failed
creationTime:
type: string
format: date-time
description: Date/time of a task creation
lastModifiedTime:
type: string
format: date-time
description: Date/time of a task latest update
results:
$ref: '#/components/schemas/AddressBookBulkUploadTaskResult'
ErrorEntity:
type: object
properties:
errorCode:
type: string
description: Error code
message:
type: string
description: Error message
parameterName:
type: string
description: Name of invalid parameter
parameterValue:
type: string
description: Value of invalid parameter
AddressBookBulkUploadTaskResult:
type: object
properties:
affectedItems:
type: array
items:
$ref: '#/components/schemas/AddressBookBulkUploadResource'
errors:
type: array
items:
$ref: '#/components/schemas/ErrorEntity'
PersonalContactRequest:
type: object
properties:
firstName:
type: string
description: First name of a contact
example: Charlie
lastName:
type: string
description: Last name of a contact
example: Williams
middleName:
type: string
description: Middle name of a contact
example: J
nickName:
type: string
description: Nick name of a contact
example: The Boss
company:
type: string
description: Company name of a contact
example: Example, Inc.
jobTitle:
type: string
description: Job title of a contact
example: CEO
email:
type: string
format: email
description: Email of a contact
example: charlie.williams@example.com
email2:
type: string
format: email
description: Second email of a contact
example: charlie-example@gmail.com
email3:
type: string
format: email
description: Third email of a contact
example: theboss-example@hotmail.com
birthday:
type: string
description: Date of birth of a contact
format: date-time
webPage:
type: string
format: uri
description: Contact home page URL
example: http://www.example.com
notes:
type: string
description: Notes for a contact
example: '#1 Customer'
homePhone:
type: string
description: Home phone number of a contact in e.164 (with "+") format
example: '+15551234567'
homePhone2:
type: string
description: Second home phone number of a contact in e.164 (with "+") format
example: '+15551234567'
businessPhone:
type: string
description: Business phone of a contact in e.164 (with "+") format
example: '+15551234567'
businessPhone2:
type: string
description: Second business phone of a contact in e.164 (with "+") format
example: '+15551234567'
mobilePhone:
type: string
description: Mobile phone of a contact in e.164 (with "+") format
example: '+15551234567'
businessFax:
type: string
description: Business fax number of a contact in e.164 (with "+") format
example: '+15551234567'
companyPhone:
type: string
description: Company number of a contact in e.164 (with "+") format
example: '+15551234567'
assistantPhone:
type: string
description: Phone number of a contact assistant in e.164 (with "+") format
example: '+15551234567'
carPhone:
type: string
description: Car phone number of a contact in e.164 (with "+") format
example: '+15551234567'
otherPhone:
type: string
description: Other phone number of a contact in e.164 (with "+") format
example: '+15551234567'
otherFax:
type: string
description: Other fax number of a contact in e.164 (with "+") format
example: '+15551234567'
callbackPhone:
type: string
description: Callback phone number of a contact in e.164 (with "+") format
example: '+15551234567'
homeAddress:
$ref: '#/components/schemas/ContactAddressInfo'
businessAddress:
$ref: '#/components/schemas/ContactAddressInfo'
otherAddress:
$ref: '#/components/schemas/ContactAddressInfo'
ringtoneIndex:
type: string
description: Contact ringtone. Max number of symbols is 64
PersonalContactResource:
type: object
properties:
uri:
type: string
format: uri
description: Canonical URI of a contact
example: https://platform.ringcentral.com/restapi/v1.0/account/230919004/extension/230919004/address-book/contact/623045004
availability:
type: string
description: 'This property has a special meaning only on Address Book Sync
(e.g. a contact can be `Deleted`). For simple contact list reading it
has always the default value - `Alive`
'
enum:
- Alive
- Deleted
- Purged
email:
type: string
format: email
description: Email of a contact
example: charlie.williams@example.com
id:
type: integer
format: int64
description: Internal identifier of availability contact
example: 623045004
notes:
type: string
description: Notes for a contact
example: '#1 Customer'
company:
type: string
description: Company name of a contact
example: Example, Inc.
firstName:
type: string
description: First name of a contact
example: Charlie
lastName:
type: string
description: Last name of a contact
example: Williams
jobTitle:
type: string
description: Job title of a contact
example: CEO
birthday:
type: string
description: Date of birth of a contact
format: date-time
webPage:
type: string
format: uri
description: The contact home page URL
example: http://www.example.com
middleName:
type: string
description: Middle name of a contact
example: J
nickName:
type: string
description: Nick name of a contact
example: The Boss
email2:
type: string
format: email
description: Second email of a contact
example: charlie-example@gmail.com
email3:
type: string
format: email
description: Third email of a contact
example: theboss-example@hotmail.com
homePhone:
type: string
description: Home phone number of a contact in e.164 (with "+") format
example: '+15551234567'
homePhone2:
type: string
description: Second home phone number of a contact in e.164 (with "+") format
example: '+15551234567'
businessPhone:
type: string
description: Business phone of the contact in e.164 (with "+") format
example: '+15551234567'
businessPhone2:
type: string
description: Second business phone of a contact in e.164 (with "+") format
example: '+15551234567'
mobilePhone:
type: string
description: Mobile phone of a contact in e.164 (with "+") format
example: '+15551234567'
businessFax:
type: string
description: Business fax number of a contact in e.164 (with "+") format
example: '+15551234567'
companyPhone:
type: string
description: Company number of a contact in e.164 (with "+") format
example: '+15551234567'
assistantPhone:
type: string
description: Phone number of a contact assistant in e.164 (with "+") format
example: '+15551234567'
carPhone:
type: string
description: Car phone number of a contact in e.164 (with "+") format
example: '+15551234567'
otherPhone:
type: string
description: Other phone number of a contact in e.164 (with "+") format
example: '+15551234567'
otherFax:
type: string
description: Other fax number of a contact in e.164 (with "+") format
example: '+15551234567'
callbackPhone:
type: string
description: Callback phone number of a contact in e.164 (with "+") format
example: '+15551234567'
businessAddress:
$ref: '#/components/schemas/ContactAddressInfo'
homeAddress:
$ref: '#/components/schemas/ContactAddressInfo'
otherAddress:
$ref: '#/components/schemas/ContactAddressInfo'
ringtoneIndex:
type: string
description: Contact ringtone. Max number of symbols is 64
ExtensionFavoritesEventBody:
type: object
properties:
extensionId:
type: string
description: Internal identifier of an extension
ownerId:
type: string
description: Internal identifier of a subscription owner extension
description: Notification payload body
AddressBookBulkUploadResource:
required:
- extensionId
- contacts
type: object
properties:
extensionId:
type: string
contacts:
type: array
minItems: 1
maxItems: 10000
items:
$ref: '#/components/schemas/AddressBookBulkContactResource'
AddressBookBulkContactAddressInfo:
type: object
properties:
country:
type: string
description: 'Country name of the extension user company. Not returned for Address
Book
'
state:
type: string
description: State/province name of the extension user company
city:
type: string
description: City name of the extension user company
street:
type: string
description: Street address of the extension user company
zip:
type: string
description: Zip code of the extension user company
ExtensionFavoritesEvent:
type: object
properties:
uuid:
type: string
description: Universally unique identifier of a notification
event:
type: string
description: Event filter URI
timestamp:
format: date-time
type: string
description: 'Date/time of sending a notification 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/ExtensionFavoritesEventBody'
UserContactsPagingInfo:
type: object
properties:
page:
type: integer
description: 'Current page number. 1-indexed, so the first page is 1
by default. May be omitted if the result is empty (because non-existent page
was specified or perPage=0 was requested)
'
format: int32
perPage:
type: integer
description: 'Current page size, describes how many items each page contains.
Default value is 100. Maximum value is 1000. If perPage value in the request
is greater than 1000, the maximum value (1000) is applied
'
format: int32
pageStart:
type: integer
description: 'Zero-based number of the first element on the current page.
Omitted if a page is omitted or the result is empty
'
format: int32
pageEnd:
type: integer
description: 'Zero-based index of the last element on the current page.
Omitted if a page is omitted or the result is empty
'
format: int32
totalPages:
type: integer
description: 'Total number of pages in a dataset. May be omitted for
some resources due to performance reasons
'
format: int32
totalElements:
type: integer
description: 'Total number of elements in a dataset. May be omitted for
some resource due to performance reasons
'
format: int32
description: Information on paging
FavoriteCollection:
type: object
properties:
records:
type: array
items:
$ref: '#/components/schemas/FavoriteContactResource'
AddressBookBulkContactResource:
type: object
properties:
email:
type: string
format: email
description: Email of a contact
example: charlie.williams@example.com
notes:
type: string
description: Notes for a contact
example: '#1 Customer'
company:
type: string
description: Company name of a contact
example: Example, Inc.
firstName:
type: string
description: First name of a contact
example: Charlie
lastName:
type: string
description: Last name of a contact
example: Williams
jobTitle:
type: string
description: Job title of a contact
example: CEO
birthday:
type: string
description: Date of birth of a contact
format: date-time
webPage:
type: string
description: Link to a contact home page
example: http://www.example.com
middleName:
type: string
description: Middle name of a contact
example: J
nickName:
type: string
description: Nick name of a contact
example: The Boss
email2:
type: string
format: email
description: Second email of a contact
example: charlie-example@gmail.com
email3:
type: string
format: email
description: Third email of the contact
example: theboss-example@hotmail.com
homePhone:
type: string
description: Home phone number of a contact in e.164 (with "+") format
example: '+15551234567'
homePhone2:
type: string
description: Second home phone number of a contact in e.164 (with "+") format
example: '+15551234567'
businessPhone:
type: string
description: Business phone of a contact in e.164 (with "+") format
example: '+15551234567'
businessPhone2:
type: string
description: Second business phone of a contact in e.164 (with "+") format
example: '+15551234567'
mobilePhone:
type: string
description: Mobile phone of the contact in e.164 (with "+") format
example: '+15551234567'
businessFax:
type: string
description: Business fax number of a contact in e.164 (with "+") format
example: '+15551234567'
companyPhone:
type: string
description: Company number of a contact in e.164 (with "+") format
example: '+15551234567'
assistantPhone:
type: string
description: Phone number of a contact assistant in e.164 (with "+") format
example: '+15551234567'
carPhone:
type: str
# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ringcentral/refs/heads/main/openapi/ringcentral-external-contacts-api-openapi.yml