Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Cvent REST Attendees API
description: '# Introduction
The Cvent API Platform is built around REST.'
contact:
name: Cvent Development Platform
url: https://developers.cvent.com/
version: ea
servers:
- url: https://api-platform.cvent.com/ea
- url: https://api-platform-eur.cvent.com/ea
tags:
- name: Attendees
description: The Attendee entity primarily refers to the person throughout the lifecycle of an event including registration, enrollment into sessions, and participation. Once contacts are added to events, an Attendee entity is created. This API allows you to read attendee data and add new attendees to your Cvent events.
paths:
/attendance-durations:
get:
summary: List Attendance Duration
operationId: listDurations
description: Gets a paginated list of durations attendees were engaged (in person or virtually) in a session, appointment or watching a video.
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- event/attendance-durations:read
- OAuth2.authorizationCode:
- event/attendance-durations:read
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit1'
- $ref: '#/components/parameters/token'
- $ref: '#/components/parameters/sort5'
- 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 |
|-------------|------------------------------------|
| id | `eq`, `ne` |
| event.id | `eq`, `ne`, `in` |
| session.id | `eq`, `ne`, `in` |
| attendee.id | `eq`, `ne`, `in` |
| type | `contains`, `eq`, `ne`, `in` |
| deleted | `eq`, `ne` |
| firstSeen | `eq`, `ne`, `lt`, `le`, `gt`, `ge` |
| lastSeen | `eq`, `ne`, `lt`, `le`, `gt`, `ge` |
| duration | `eq`, `ne`, `lt`, `le`, `gt`, `ge` |
| created | `eq`, `ne`, `lt`, `le`, `gt`, `ge` |
The following logical operators are supported for combining filters:
* and
* or
'
schema:
type: string
example: firstSeen gt '2020-02-07T12:00:00.000Z' and session.id = '0e2f583e-62ae-40d8-9b5c-b8e67a6ba1ab'
responses:
'200':
description: Successfully retrieved a Paginated list of Durations.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/duration-paginated-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'
/attendees:
post:
tags:
- Attendees
operationId: createAttendee
security:
- OAuth2.clientCredentials:
- event/attendees:write
- OAuth2.authorizationCode:
- event/attendees:write
summary: Add Attendees
description: Adds given contacts to an event as attendees, either inviting them or registering them directly.
requestBody:
description: 'This endpoint supports both the invite and the ability to push registered attendees into Cvent.
There are some slight differences in how you use each path.
**Invite**
Fields supported for invite:
* event.id *(required)*
* contact.id *(required)*
* invitationList.id
**Note:** Up to 100 attendees can be invited per call. Sending a *status* of `No Response` will invite the attendee.
**Register**
* All fields are supported for register.
* admissionItem.id *(required)*
**Note:** When sending registration, one attendee per call is supported. Sending a status of `Accepted` will register the attendee.
'
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-add-bulk'
required: true
responses:
'207':
description: Attendee(s) were successfully added to the event.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-add-bulk-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'
get:
security:
- OAuth2.clientCredentials:
- event/attendees:read
- OAuth2.authorizationCode:
- event/attendees:read
summary: List Attendees
description: Gets a paginated list of attendees in your account.
operationId: listAttendees
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- $ref: '#/components/parameters/expand'
- $ref: '#/components/parameters/sort7'
- $ref: '#/components/parameters/includeDeletedGuests'
- 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 |
|------------------|-------------------------------------|------------------------------------------|
| event.id | `eq`, `ne` | |
| id | `eq`, `ne` | |
| confirmationNumber | `eq`, `ne` | |
| checkedIn | `eq`, `ne` | |
| checkIn | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| checkOut | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| registrationPath.id | `eq`, `ne` | |
| invitationList.id | `eq`, `ne` | |
| registrationType.id | `eq`, `ne`, `is null`, `is not null`, `is empty`, `is not empty` | |
| referenceId | `eq`, `ne` | |
| externalReference.type | `eq` | |
| externalReference.id | `eq` | |
| externalReference.referenceId | `eq` | |
| note | `eq`, `ne` | |
| guest | `eq`, `ne` | |
| group.leader | `eq`, `ne` | |
| group.id | `eq`, `ne` | |
| unsubscribed | `eq`, `ne` | Read-only. To update an attendee''s subscription status, use [PUT /attendees/{id}/email-subscriptions](#operation/updateAttendeeSubscriptionStatus) |
| registeredAt | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| registrationLastModified | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| invitedBy | `eq`, `ne` | |
| responseMethod | `eq`, `ne` | |
| status | `eq`, `ne` | |
| lastModified | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | Will be updated when any field in the response has changed. Used by the ''before'' and ''after'' filters. |
| created | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | |
| contact.id | `eq`, `ne` | |
| visibility | `eq`, `ne` | |
| contact.title | `eq`, `ne`, `sw` | |
| contact.company | `eq`, `ne`, `sw` | |
| contact.firstName | `eq`, `ne`, `sw` | |
| contact.lastName | `eq`, `ne`, `sw` | |
| answers.question.{question id} | `eq`, `ne` | |
| contact.email | `eq`, `ne`, `sw` | |
| attendeeLastModified | `eq`, `ne`, `lt`, `le`, `gt`, `ge` | Will be updated only when some field other than contact.* has changed. Not used by the ''before'' and ''after'' filters. |
| appointmentGroup.id | `eq`, `ne` | |
| contact.deleted | `eq`, `ne` | |
| primaryId | `eq`, `ne` | |
| deletedGuest | `eq`, `ne` | Filter returns guests marked as deleted. This filter works only when the query parameter `includeDeletedGuests` is `true`. |
'
schema:
type: string
example: contact.id eq '04ca6ae2-0dc3-487b-953e-86d6abbdf7d3' or checkedIn eq 'true'
tags:
- Attendees
responses:
'200':
description: Successfully retrieved a paginated list of attendees.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-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'
/attendees/filter:
post:
security:
- OAuth2.clientCredentials:
- event/attendees:read
- OAuth2.authorizationCode:
- event/attendees:read
summary: List Attendees
description: Gets a paginated list of attendees by sending a filter in the body of the request. This method will return the same data as GET List Attendees but allows for longer filters.
operationId: listAttendeesPostFilter
requestBody:
description: 'The request body accepts filters to refine the data returned. Refer to available filter details in [GET List Attendees](#operation/listAttendees).
'
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/filter'
parameters:
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- $ref: '#/components/parameters/expand'
- $ref: '#/components/parameters/sort7'
- $ref: '#/components/parameters/includeDeletedGuests'
tags:
- Attendees
responses:
'200':
description: Successfully retrieved a paginated list of attendees.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-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'
/attendees/{id}:
parameters:
- $ref: '#/components/parameters/attendeeId2'
get:
summary: Get Attendee
description: Gets a single attendee based on their ID.
operationId: getAttendeeById
security:
- OAuth2.clientCredentials:
- event/attendees:read
- OAuth2.authorizationCode:
- event/attendees:read
tags:
- Attendees
parameters:
- $ref: '#/components/parameters/expand'
responses:
'200':
description: Successfully retrieved an attendee object.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee'
'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:
summary: Update Attendee
description: Updates a single attendee based on their ID.
operationId: updateAttendee
security:
- OAuth2.clientCredentials:
- event/attendees:write
- OAuth2.authorizationCode:
- event/attendees:write
tags:
- Attendees
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-update'
required: true
responses:
'200':
description: Successfully updated the attendee.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee'
'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'
/attendees/{id}/email-subscriptions:
put:
summary: Update Email Subscription
description: Updates an attendee's email subscription status for a specific event.
operationId: updateAttendeeSubscriptionStatus
security:
- OAuth2.clientCredentials:
- event/attendees:write
- OAuth2.authorizationCode:
- event/attendees:write
tags:
- Attendees
parameters:
- $ref: '#/components/parameters/attendeeId2'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-subscription-request'
responses:
'200':
description: Successfully updated the attendee's subscription status.
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-subscription-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'
/attendees/{id}/internal-information-questions:
parameters:
- $ref: '#/components/parameters/attendeeId2'
put:
operationId: updateInternalInfoAnswers
security:
- OAuth2.clientCredentials:
- event/attendees:write
- OAuth2.authorizationCode:
- event/attendees:write
summary: Update Internal Information
description: Update internal information answers for an attendee. Use either question code or id to identify which question's answers are being updated.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-internal-info'
tags:
- Attendees
responses:
'200':
description: Successfully updated attendee internal information.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/attendee-internal-info'
'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'
/events/{id}/badges:
post:
summary: Create Badge
description: Create a badge for an attendee associated with an event.
operationId: postBadge
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- exhibitor/badges:write
- OAuth2.authorizationCode:
- exhibitor/badges:write
parameters:
- $ref: '#/components/parameters/id6'
requestBody:
description: Badge details
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/badge'
responses:
'200':
description: Successfully created a badge.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/badge'
'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'
get:
summary: Get Badge
description: Retrieves a list of third-party badge associations for attendees within the event.
operationId: getBadge
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- exhibitor/badges:read
- OAuth2.authorizationCode:
- exhibitor/badges:read
parameters:
- $ref: '#/components/parameters/id6'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
- name: filter
in: query
required: false
description: 'A filter query string narrows search results and supports the combination of logical and comparison operators.
The filter adheres to the pattern filter=''field'' comparisonType ''value''.
These are the comparison types that can be used in filter expressions:
* equal: eq
The following fields are filterable:
* id (eq)
* attendee.id (eq)
'
schema:
type: string
example: id eq '{string}' and attendee.id eq '{UUID}'
responses:
'200':
description: Successfully get badges.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/badge-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'
/events/{id}/badges/filter:
post:
summary: Get Badges
description: Gets a paginated list of Badges by sending a filter in the body of the request. This method will return the same data as the getBadge but allows for longer filters.
operationId: getBadgesPostFilters
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- exhibitor/badges:read
- OAuth2.authorizationCode:
- exhibitor/badges:read
parameters:
- $ref: '#/components/parameters/id6'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/token'
requestBody:
description: See the filter query parameter of <a href="#operation/getBadge">Get Badges</a> for full filtering information
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/filter'
example:
filter: id eq '04ca6ae2-0dc3-487b-953e-86d6abbdf7d3' AND attendee.id eq 'edf40757-3bc3-4a66-8180-93bff15b890b'
responses:
'200':
description: Successfully get badges.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/badge-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'
/events/{id}/badges/{badgeId}:
put:
summary: Update Badge
description: Update a badge for an attendee associated with an event.
operationId: updateBadge
tags:
- Attendees
security:
- OAuth2.clientCredentials:
- exhibitor/badges:write
- OAuth2.authorizationCode:
- exhibitor/badges:write
parameters:
- $ref: '#/components/parameters/id6'
- $ref: '#/components/parameters/badgeId'
requestBody:
description: Badge details
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/badge'
responses:
'200':
description: Successfully updated the badge.
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/badge'
'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'
components:
schemas:
AppointmentGroup:
title: AppointmentGroup
description: An appointment group.
type: object
properties:
id:
type: string
description: The ID of the appointment group.
format: uuid
example: bf183d50-56ad-454b-8b9f-06d8e923e1fd
AttendeeInvitedBy:
title: AttendeeInvitedBy
deprecated: true
enum:
- Planner-Invited
- No Invitation
- Guest-Invited
- Alternate Campaign
- Weblink
- Import
- Historical Import
- API Invited
type: string
description: 'Method by which the attendee was invited to the event. Note: This field is deprecated. Previous documentation incorrectly listed support for this feature.'
example: Planner-Invited
UUIDProperty:
title: UUID Property
description: A string that has to be a format matching the industry standard uuid
type: string
format: uuid
example: 04ca6ae2-0dc3-487b-953e-86d6abbdf7d3
Event4:
description: The Associated Event.
title: Event
type: object
required:
- id
properties:
id:
type: string
format: uuid
example: 3db28cfc-db22-11eb-8d19-0242ac130003
description: Event id
Audit:
title: Audit
description: Audit information
type: object
properties:
created:
type: string
format: date-time
description: The ISO 8601 zoned date time when this record was created.
readOnly: true
example: '2017-01-02T02:00:00Z'
createdBy:
type: string
description: The identifier of the user that created this record.
readOnly: true
example: hporter
lastModified:
type: string
format: date-time
description: The ISO 8601 zoned date time when this record was updated.
readOnly: true
example: '2019-02-12T03:00:00Z'
lastModifiedBy:
type: string
description: The identifier of the user that last updated this record.
readOnly: true
example: hporter
AttendeeContact:
title: AttendeeContact
description: An Attendee Contact
type: object
allOf:
- $ref: '#/components/schemas/AttendeeContactAudit'
properties:
id:
type: string
format: uuid
description: The id of contact
firstName:
type: string
description: The first name of the contact
maxLength: 30
example: Henry
lastName:
type: string
description: The last name of the contact
maxLength: 50
example: Potterfield
middleName:
type: string
description: The middle name of the contact
maxLength: 30
example: A
nickname:
type: string
description: The nickname of the contact.
maxLength: 30
example: Harry
email:
type: string
format: email
description: The email address of the contact
minLength: 6
maxLength: 80
example: h.potterfield@test.com
ccEmail:
type: string
format: email
description: An alternate email address of the contact that will be cc'd on all email communications
minLength: 6
maxLength: 80
example: h.porter@tesing.com
gender:
$ref: '#/components/schemas/Gender'
company:
type: string
description: The company/organization the contact belongs to.
minLength: 1
example: Cvent Inc.
designation:
type: string
description: The designation of the contact
maxLength: 30
example: Event
title:
type: string
description: The job title of the contact
maxLength: 100
example: Event Planner
type:
$ref: '#/components/schemas/AttendeeContactType'
membership:
$ref: '#/components/schemas/AttendeeContactMembership'
primaryAddressType:
$ref: '#/components/schemas/AddressType'
homeAddress:
$ref: '#/components/schemas/Address4'
homePhone:
type: string
description: Home phone number
maxLength: 30
example: 555-555-5555
homeFax:
type: string
description: Home FAX number
maxLength: 30
example: 555-555-5555
workAddress:
$ref: '#/components/schemas/Address4'
workPhone:
type: string
description: Work phone number
maxLength: 30
example: 555-555-5555
workFax:
type: string
description: Work FAX number
maxLength: 30
example: 555-555-5555
optOut:
type: object
description: Opt-out choices.
properties:
optedOut:
type: boolean
default: false
description: True indicates a contact has opted-out of receiving system generated emails.
example: false
customFields:
type: array
items:
$ref: '#/components/schemas/CustomField'
description: Collection of custom fields.
readOnly: true
sourceId:
description: 'This is a ID for the contact in an external system. NOTE: This value is expected to be unique for each contact within an account. Consider adding the external system name has part of the ID'
type: string
maxLength: 50
example: system-a-00000000-0000-0000-0000-000000000000
mobilePhone:
type: string
description: Mobile phone number
maxLength: 30
example: 555-555-5555
compliance:
type: array
items:
$ref: '#/components/schemas/Compliance'
description: Detail related to compliance with the contact's privacy rights under various legislation.
readOnly: true
prefix:
type: string
description: Used to denote what is traditionally a title of an individual. For example, Mr., Mrs., Dr., etc.
maxLength: 30
example: Dr.
pager:
type: string
description: The pager number of the contact.
maxLength: 30
example: 555-555-5555
deleted:
type: boolean
description: True indicates a contact is deleted.
default: false
example: false
readOnly: true
headline:
type: string
description: The headline of the contact'
# --- truncated at 32 KB (129 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cvent-hospitality-cloud/refs/heads/main/openapi/cvent-hospitality-cloud-attendees-api-openapi.yml