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 — Attendees
version: ea
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.
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: 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](#operation/listAttendees) 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:
Link:
title: Link
required:
- href
type: object
description: Represents a link to a related resource.
properties:
href:
type: string
description: A url provided that can be followed for linking
example: ?token=90c5f062-76ad-4ea4-aa53-00eb698d9262
duration-paginated-response:
title: DurationPaginatedResponse
description: Paginated collection of durations.
required:
- data
- paging
type: object
properties:
paging:
$ref: '#/components/schemas/paging.json'
data:
type: array
items:
$ref: '#/components/schemas/existing-duration'
description: Collection of durations.
CustomFieldType:
title: CustomFieldType
enum:
- AutoIncrement
- ConsentQuestion
- Currency
- Decimal
- Date
- DateTime
- Email
- FileUpload
- FreeText
- General
- MultiChoice
- MultiSelect
- Number
- OpenEndedDateTime
- OpenEndedText
- SingleChoice
- SingleSelect
- USPhoneNumber
- Unknown
type: string
description: The type of data collected by a custom field.
example: General
uuid-property:
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
attendee-internal-info:
title: AttendeeInternalInfo
description: Model representing internal information answers for an attendee to be added or updated.
type: object
required:
- question
- value
properties:
question:
type: object
properties:
id:
description: The question ID.
type: string
format: uuid
example: adcc4376-4560-4fb3-8594-2fdbb637c07c
code:
type: string
example: DIETARY
description: The planner configured internal information question code.
description: The registration question. Use either question ID or code to identify the question. If both are provided,
they must match the same question.
value:
type: array
items:
type: string
example: '1234'
description: The set of answers to a question.
filter:
title: A filter sent in the body of a request
description: A filter which is sent through the body of the request.
type: object
properties:
filter:
type: string
example: property eq 'value'
description: Filter included in the request.
paging.json:
title: Paging
required:
- _links
type: object
description: Represents pagination information for a collection of resources.
properties:
previousToken:
type: string
description: The pagination token for the previous page, if one exists. You can use this token to navigate to the
previous page of data.
example: 1a2b3c4d5e6f7g8h9i10j11k
nextToken:
type: string
description: The pagination token for the next page. If this value is present in the response, there is another
page of data you can fetch.
example: 1a2b3c4d5e6f7g8h9i10j11k
currentToken:
type: string
description: The pagination token for the current page.
example: 1a2b3c4d5e6f7g8h9i10j11k
limit:
type: integer
description: The number of records to return on the page. Not to exceed 200.
example: 100
totalCount:
type: integer
description: The total number of records available. This field may return blank, even if there are more records.
To confirm if there are more records, check the `nextToken` field.
example: 2
_links:
$ref: '#/components/schemas/pagination-links.json'
AttendeeResponseMethod:
title: AttendeeResponseMethod
deprecated: true
enum:
- Administrator Responded
- Administrator Responded Widget
- API-Responded
- Appointments Event Website
- Cvent Salesforce App
- Cvent Salesforce App - Campaign Page
- Cvent Salesforce App - Contact Page
- Cvent Salesforce App - Event Page
- Cvent Salesforce App - Lead Page
- Cvent Salesforce App - Person Account Page
- Cvent Salesforce App - Recommendation Widget
- External Registration
- Group Leader Responded
- Group Leader Responded Widget
- Historical Import
- Imported
- No Response
- On-site Responded
- Planner-Imported
- Planner-Responded
- Post Event
- Self-Responded
- Self-Responded Mobile
- Self-Responded Widget
type: string
description: 'Method by which attendee registered for the event. Note: This field is deprecated. Previous documentation
incorrectly listed support for this feature.'
example: Self-Responded
AttendeeContactMembership:
title: AttendeeContactMembership
description: 'Attendee''s contact membership information. Note: This field is deprecated. Previous documentation incorrectly
listed support for this feature.'
type: object
readOnly: true
deprecated: true
properties:
type:
type: string
description: The type of membership the contact has signed up for.
maxLength: 300
example: Corporate Sponsor
plan:
type: string
description: Describes the specific plan the contact has signed up for.
maxLength: 300
example: Gold Level
joined:
type: string
format: date
description: The ISO-8601 formatted date the contact began their membership.
readOnly: true
example: '2017-02-10'
expiration:
type: string
format: date
description: The ISO-8601 formatted date the contact's membership will expire.
readOnly: true
exam
# --- truncated at 32 KB (130 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cvent/refs/heads/main/openapi/cvent-attendees-api-openapi.yml