Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.0.2
info:
title: Cvent REST APIs — Contacts
version: ea
description: A contact is a record in your account’s address book that represents an individual. The data stored within
these records includes personal information, group memberships, and historical data on event attendance. Contact APIs
will allow you to get contact information, track updates to contact information, and create contacts.
contact:
name: Cvent Development Platform
url: https://developers.cvent.com/
externalDocs:
description: Cvent REST API documentation
url: https://developers.cvent.com/documentation
servers:
- url: https://api-platform.cvent.com/ea
- url: https://api-platform-eur.cvent.com/ea
tags:
- name: Contacts
description: A contact is a record in your account’s address book that represents an individual. The data stored within
these records includes personal information, group memberships, and historical data on event attendance. Contact APIs
will allow you to get contact information, track updates to contact information, and create contacts.
paths:
/contact-groups:
post:
security:
- OAuth2.clientCredentials:
- event/contact-groups:write
- OAuth2.authorizationCode:
- event/contact-groups:write
summary: Create Contact Group
description: Create a contact group
operationId: createContactGroup
tags:
- Contacts
requestBody:
description: Contact Group to be created
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/contact-group'
responses:
'201':
description: Successfully created a contact group.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-group'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
get:
security:
- OAuth2.clientCredentials:
- event/contact-groups:read
- OAuth2.authorizationCode:
- event/contact-groups:read
summary: List Contact Groups
description: Gets a paginated list of contact groups
operationId: listContactGroups
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- name: filter
in: query
required: false
description: 'Use filter query parameters to limit results
to data that matches your criteria. See
[Filters](/docs/rest-api/reference/filters) for details.
Supported fields and operators are listed below:
| Field | Operators | Notes |
|------------------|-------------------------------------|-------|
| name | `eq`, `ne`, `sw`, `contains` | |
| type | `eq` | Not supported with before or after parameters |
The following logical operators are supported for combining filters:
* and
'
schema:
type: string
example: name eq 'groupName' and type eq 'STANDARD'
responses:
'200':
description: Successfully retrieved a paginated list of Contact Groups.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-group-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contact-groups/{id}:
parameters:
- $ref: '#/components/parameters/contactGroupId'
get:
security:
- OAuth2.clientCredentials:
- event/contact-groups:read
- OAuth2.authorizationCode:
- event/contact-groups:read
summary: Get Contact Group
description: Get a single contact group
operationId: getContactGroupById
tags:
- Contacts
responses:
'200':
description: Successfully retrieved a Contact Group object.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-group'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
put:
security:
- OAuth2.clientCredentials:
- event/contact-groups:write
- OAuth2.authorizationCode:
- event/contact-groups:write
summary: Update Contact Group
description: Update a contact group
operationId: updateContactGroup
tags:
- Contacts
requestBody:
description: Contact Group to be updated
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/contact-group'
responses:
'200':
description: Successfully updated a contact group.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-group'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
delete:
security:
- OAuth2.clientCredentials:
- event/contact-groups:write
- OAuth2.authorizationCode:
- event/contact-groups:write
summary: Delete Contact Group
description: Delete a contact group
operationId: deleteContactGroup
tags:
- Contacts
responses:
'204':
description: Successfully deleted a contact group.
headers: {}
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contact-groups/{id}/contacts:
parameters:
- $ref: '#/components/parameters/contactGroupId'
get:
summary: Get Ids in Contact Group
description: Get all contact ids in a single contact group
operationId: getContactIdsByContactGroup
security:
- OAuth2.clientCredentials:
- event/contact-groups:read
- OAuth2.authorizationCode:
- event/contact-groups:read
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
responses:
'200':
description: Successfully retrieved Contact ids.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-id-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contact-groups/{id}/contacts/{contactId}:
parameters:
- $ref: '#/components/parameters/contactGroupId'
- $ref: '#/components/parameters/contactId'
put:
summary: Add Contact To Group
description: Adds a single Contact to a single Contact Group
operationId: addContactToContactGroup
security:
- OAuth2.clientCredentials:
- event/contact-groups:write
- OAuth2.authorizationCode:
- event/contact-groups:write
tags:
- Contacts
responses:
'204':
description: Successfully added Contact to Contact Group
headers: {}
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
delete:
summary: Remove Contact From Group
description: Removes a single Contact from a single Contact Group
operationId: removeContactFromContactGroup
security:
- OAuth2.clientCredentials:
- event/contact-groups:write
- OAuth2.authorizationCode:
- event/contact-groups:write
tags:
- Contacts
responses:
'204':
description: Successfully removed a Contact from a Contact Group
headers: {}
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contact-types:
get:
security:
- OAuth2.clientCredentials:
- event/contact-types:read
- OAuth2.authorizationCode:
- event/contact-types:read
summary: List Contact Types
description: Gets a paginated list of contact types.
operationId: listContactTypes
tags:
- Contacts
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- name: filter
in: query
required: false
description: 'Use filter query parameters to limit results
to data that matches your criteria. See
[Filters](/docs/rest-api/reference/filters) for details.
Supported fields and operators are listed below:
| Field | Operators |
|------------------|-------------------------------------|
| name | `eq`, `ne`, `sw`, `contains` |
No logical operators are supported on this endpoint, only one filter
can be passed in each request.
'
schema:
type: string
example: name eq 'groupType'
responses:
'200':
description: Successfully retrieved a paginated list of contact types.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-type-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contacts:
get:
security:
- OAuth2.clientCredentials:
- event/contacts:read
- OAuth2.authorizationCode:
- event/contacts:read
summary: List Contacts
description: 'Gets a paginated list of Contacts.
For information on reading secure contact fields, see the description of
<a href="#operation/getContactById">GET Contact</a>.
'
operationId: listContacts
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- name: filter
in: query
required: false
description: 'Use filter query parameters to limit results
to data that matches your criteria. See
[Filters](/docs/rest-api/reference/filters) for details.
Supported fields and operators are listed below:
| Field | Operators | Notes |
|------------------|-------------------------------------|-------|
| id | `eq`, `ne` | |
| sourceId | `eq`, `ne` | |
| firstName | `eq`, `ne`, `contains`, `sw` | |
| lastName | `eq`, `ne`, `contains`, `sw` | |
| email | `eq`, `ne`, `contains`, `sw` | |
| ccEmail | `eq`, `ne` | |
| company | `eq`, `ne` | |
| type.id | `eq`, `ne` | |
| nickname | `eq`, `ne` | |
| title | `eq`, `ne` | |
| workPhone | `eq`, `ne` | |
| middleName | `eq`, `ne` | |
| mobilePhone | `eq`, `ne` | |
| homeFax | `eq`, `ne` | |
| designation | `eq`, `ne` | |
| homePhone | `eq`, `ne` | |
| pager | `eq`, `ne` | |
| workFax | `eq`, `ne` | |
| lastModifiedBy | `eq`, `ne` | |
| lastModified | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| created | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| createdBy | `eq`, `ne` | |
| workAddress.address1 | `eq`, `ne` | |
| workAddress.address2 | `eq`, `ne` | |
| workAddress.address3 | `eq`, `ne` | |
| workAddress.city | `eq`, `ne` | |
| workAddress.country | `eq`, `ne` | |
| homeAddress.address1 | `eq`, `ne` | |
| homeAddress.address2 | `eq`, `ne` | |
| homeAddress.address3 | `eq`, `ne` | |
| homeAddress.city | `eq`, `ne` | |
| homeAddress.country | `eq`, `ne` | |
| deleted | `eq`, `ne` | Filters for deleted contacts. To retrieve purged contacts,
see the `includePurged` parameter. |
| customField.{uuid of custom field} | `eq`, `ne`, `lt`, `le`, `gt`, `ge`, `sw`, `contains` | |
| optOut.optedOut | `eq`, `ne` | |
The following logical operators are supported for combining filters:
* and
* or
'
schema:
type: string
example: firstName eq 'John' or lastName eq 'Anderson'
- $ref: '#/components/parameters/includePurged'
tags:
- Contacts
responses:
'200':
description: Successfully retrieved a Paginated list of Contacts.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
put:
security:
- OAuth2.clientCredentials:
- event/contacts:write
- OAuth2.authorizationCode:
- event/contacts:write
summary: Update Contacts
description: 'Updates a list of contacts based on the values provided in the request body. If you''re changing [de-duplication
fields](https://support.cvent.com/s/communityarticle/Allowing-Multiple-People-to-Use-the-Same-Email-Address), the
new values must be unique in your account.
For information on updating secure contact fields, see the description of <a href="#operation/updateContactById">PUT
Contact</a>.
'
operationId: updateContacts
tags:
- Contacts
requestBody:
description: List of contacts to be updated. Up to **10 contacts** can be updated per call.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/contact-bulk-update'
responses:
'207':
description: Successfully updated a list of Contacts.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-bulk-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
patch:
security:
- OAuth2.clientCredentials:
- event/contacts:write
- OAuth2.authorizationCode:
- event/contacts:write
summary: Patch Contacts
description: 'Updates a list of contacts based on the values provided only, keeping the existing values intact for every
contact.
For information on PATCH behavior, see the description of
<a href="#operation/patchContactById">PATCH Contact</a>.
For information on updating secure contact fields, see the description of
<a href="#operation/updateContactById">PUT Contact</a>.
'
operationId: patchContacts
tags:
- Contacts
requestBody:
description: List of contacts to be updated. Up to **10 contacts** can be updated per call.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/contact-bulk-patch'
responses:
'207':
description: Successfully updated a list of contacts.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-bulk-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
post:
security:
- OAuth2.clientCredentials:
- event/contacts:write
- OAuth2.authorizationCode:
- event/contacts:write
summary: Create Contacts
description: 'Creates a list of contacts based on the values provided in the request body. If you''re changing [de-duplication
fields](https://support.cvent.com/s/communityarticle/Allowing-Multiple-People-to-Use-the-Same-Email-Address), the
new values must be unique in your account.
For information on creating contacts with secure contact fields, see the description of <a href="#operation/updateContactById">PUT
Contact</a>.
'
operationId: createContacts
tags:
- Contacts
parameters:
- name: upsert
in: query
required: false
description: 'This parameter determines whether the POST operation should be treated as an upsert. Upserts update
existing contacts if they already exist, and otherwise create new contacts.
True indicates that this operation creates new contacts and updates existing contacts if they exist. False means
that it only creates new contacts, and attempting to create an existing contact will result in the API returning
an error.
Existing contacts are matched to the upsert request via the account''s [match key](https://support.cvent.com/s/communityarticle/Allowing-Multiple-People-to-Use-the-Same-Email-Address).
By default, the match key for contacts is their email. The match key can also be altered to match contacts based
on a combination of their first name, last name, and email.
'
schema:
type: boolean
example: true
default: false
requestBody:
description: List of contacts to be created. Up to **10 contacts** can be created per call.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/contact-bulk-create'
responses:
'207':
description: Successfully created a list of contacts.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-bulk-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contacts/filter:
post:
security:
- OAuth2.clientCredentials:
- event/contacts:read
- OAuth2.authorizationCode:
- event/contacts:read
summary: List Contacts
description: 'Gets a paginated list of Contacts by sending a filter in the body of the request. This method will return
the same data as the GET List Contacts but allows for longer filters.
For information on reading secure contact fields, see the description of <a href="#operation/getContactById">GET
Contact</a>.
'
operationId: listContactsPostFilters
requestBody:
description: See the request body of <a href="#operation/listContacts">GET List Contacts</a> for full filtering information
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/filter'
example:
filter: firstName eq 'John' or lastName eq 'Anderson'
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
tags:
- Contacts
responses:
'200':
description: Successfully retrieved a Paginated list of Contacts.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contacts/obfuscate/{obfuscateId}/status:
parameters:
- $ref: '#/components/parameters/obfuscateId'
get:
summary: Get Obfuscation Status
description: Get the obfuscation status of a contact by the Obfuscate ID provided.
operationId: getContactObfuscationStatusById
security:
- OAuth2.clientCredentials:
- event/contacts:read
- OAuth2.authorizationCode:
- event/contacts:read
tags:
- Contacts
responses:
'200':
description: Successfully retrieved a contact's obfuscation status.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact-obfuscation-status'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contacts/{contactId}/history:
get:
summary: Get Contact Change History
description: Get the change history for a specific contact.
security:
- OAuth2.clientCredentials:
- event/contacts:read
- OAuth2.authorizationCode:
- event/contacts:read
tags:
- Contacts
operationId: getChangeHistoryForASpecificContact
parameters:
- $ref: '#/components/parameters/contactId'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
responses:
'200':
description: Successfully retrieved change history for the given contact.
content:
application/json:
schema:
$ref: '#/components/schemas/contact-history-paginated-response'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
/contacts/{id}:
parameters:
- $ref: '#/components/parameters/id'
get:
summary: Get Contact
description: "Get a single contact.\n\nWhen reading a contact, the following secure contact fields are only returned\
\ when\nalso providing the `event/contacts:read-sensitive` scope:\n * socialSecurityNumber\n * passportNumber\n\
\ * nationalIdentificationNumber\n * dateOfBirth\n"
operationId: getContactById
security:
- OAuth2.clientCredentials:
- event/contacts:read
- OAuth2.authorizationCode:
- event/contacts:read
tags:
- Contacts
responses:
'200':
description: Successfully retrieved a contact.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
deprecated: false
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
put:
security:
- OAuth2.clientCredentials:
- event/contacts:write
- OAuth2.authorizationCode:
- event/contacts:write
summary: Update Contact
description: "Updates a contact based on contact ID and the values provided in the request body. If you're changing\
\ [de-duplication fields](https://support.cvent.com/s/communityarticle/Allowing-Multiple-People-to-Use-the-Same-Email-Address),\
\ the new values must be unique in your account.\nWhen writing a contact, the following secure contact fields are\
\ only written when also providing the `event/contacts:write-sensitive` scope:\n * socialSecurityNumber\n * passportNumber\n\
\ * nationalIdentificationNumber\n * dateOfBirth\n"
operationId: updateContactById
tags:
- Contacts
requestBody:
description: Contact to be updated
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/contact-update'
responses:
'200':
description: Successfully updated the contact.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
$ref: '#/components/responses/Unauthorized1'
'403':
$ref: '#/components/responses/Forbidden1'
'404':
$ref: '#/components/responses/NotFound1'
'429':
$ref: '#/components/responses/TooManyRequests1'
externalDocs:
description: More about OAuth2 authorization code support for administrators
url: '#oauth2-auth-code-planner-admin'
patch:
security:
- OAuth2.clientCredentials:
- event/contacts:write
- OAuth2.authorizationCode:
- event/contacts:write
summary: Patch Contact
description: 'Updates a part of a contact based on the given contactId.
To update a field, pass the value to be updated. To delete a field, set the field to null. Fields not passed in the
request body will remain unchanged.
For information on updating secure contact fields, see the description of
<a href="#operation/updateContactById">PUT Contact</a>.
'
operationId: patchContactById
tags:
- Contacts
requestBody:
description: Contact to be updated
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/contact-patch'
responses:
'200':
description: Successfully updated the contact.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/contact'
'400':
$ref: '#/components/responses/BadRequest1'
'401':
# --- truncated at 32 KB (133 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cvent/refs/heads/main/openapi/cvent-contacts-api-openapi.yml