Developer-friendly & type-safe Csharp SDK specifically catered to leverage Cvent.SDK API.
Cvent REST APIs: Official Cvent SDK providing typed access to Cvent REST APIs for event management, contacts, attendees, and more using OAuth2 authentication. For documentation, see the README and USAGE. To get credentials, visit https://developers.cvent.com/docs/rest-api/overview.
For more information about the API: Cvent Developer Documentation
To add the NuGet package to a .NET project:
dotnet add package Cvent.SDKTo add a reference to a local instance of the SDK in a .NET project:
dotnet add reference src/Cvent/SDK/Cvent.SDK.csprojusing Cvent.SDK;
using Cvent.SDK.Models.Components;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK(security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
});
GetAccountUserGroupsRequest req = new GetAccountUserGroupsRequest() {
Token = "1a2b3c4d5e6f7g8h9i10j11k",
Filter = "name eq 'My User Group'",
};
GetAccountUserGroupsResponse? res = await sdk.Users.GetAccountUserGroupsAsync(req);
while (res != null)
{
// handle items
res = await res.Next!();
}This SDK supports the following security schemes globally:
| Name | Type | Scheme |
|---|---|---|
OAuth2ClientCredentials |
oauth2 | OAuth2 token |
OAuth2AuthorizationCode |
oauth2 | OAuth2 token |
You can set the security parameters through the security optional parameter when initializing the SDK client instance. The selected scheme will be used by default to authenticate with the API for all operations that support it. For example:
using Cvent.SDK;
using Cvent.SDK.Models.Components;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK(security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
});
GetAccountUserGroupsRequest req = new GetAccountUserGroupsRequest() {
Token = "1a2b3c4d5e6f7g8h9i10j11k",
Filter = "name eq 'My User Group'",
};
GetAccountUserGroupsResponse? res = await sdk.Users.GetAccountUserGroupsAsync(req);
while (res != null)
{
// handle items
res = await res.Next!();
}Some operations in this SDK require the security scheme to be specified at the request level. For example:
using Cvent.SDK;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK();
Oauth2TokenRequest req = new Oauth2TokenRequest() {
GrantType = GrantType.ClientCredentials,
ClientId = "djc98u3jiedmi283eu928",
Scope = "event/events:read event/attendees:read",
RedirectUri = "https://example.com/redirect",
RefreshToken = "dn43ud8uj32nk2je",
Code = "AUTHORIZATION_CODE",
};
var res = await sdk.Authentication.Oauth2TokenAsync(
security: new Oauth2TokenSecurity() {
Username = "",
Password = "",
},
request: req
);
// handle responseAvailable methods
- ListAppointmentAttendees - List Appt Attendees
- GetAppointmentAttendeeById - Get Appt Attendee
- ListAvailability - List Availability
- GetAvailabilityById - Get Availability
- ListAppointmentEvents - List Appt Events
- GetAppointmentEventById - Get Appt Event
- ListAvailableTimes - List Available Times
- ListAppointmentTypes - List Appointment Types
- CreateAppointment - Create Appointment
- UpdateAppointment - Update Appointments
- CancelAppointment - Cancel Appointment
- ListLocations - List Locations
- ListMeetingInterests - List Interests
- GetMeetingInterestById - Get Interest
- ListAppointments - List Appointments
- GetAppointmentById - Get Appointment
- ListAttendeeActivities - List Activities
- CreateAttendeeActivity - Add External Activity
- ListExternalAttendeeActivitiesMetadata - List Ext. Activities Metadata
- CreateExternalAttendeeActivityMetadata - Add Ext. Activities Metadata
- DeleteExternalAttendeeActivityMetadata - Delete Ext Activities Metadata
- UpdateExternalAttendeeActivityMetadata - Update Ext Activities Metadata
- ListAttendeeInsights - List Engagement Scores
- GetAttendeeInsightsById - Get Engagement Score
- GetScores - Get Scores
- GetStats - Get Stats
- GetAttendeeMessagesMembers - Get Messaging Members
- ListDurations - List Attendance Duration
- CreateAttendee - Add Attendees
- ListAttendees - List Attendees
- ListAttendeesPostFilter - List Attendees
- GetAttendeeById - Get Attendee
- UpdateAttendee - Update Attendee
- UpdateAttendeeSubscriptionStatus - Update Email Subscription
- UpdateInternalInfoAnswers - Update Internal Information
- PostBadge - Create Badge
- GetBadge - Get Badge
- GetBadgesPostFilters - Get Badges
- UpdateBadge - Update Badge
- DisassociateAttendeeFromAudienceSegments - Delete Attendee Associations
- CreateAudienceSegment - Create Audience Segment
- ListAudienceSegments - List Audience Segments
- ListAudienceSegmentsPostFilter - List Audience Segments
- GetAudienceSegmentById - Get Audience Segment
- UpdateAudienceSegment - Update Audience Segment
- DeleteAudienceSegment - Delete Audience Segment
- ListSegmentAssociatedAttendees - List Associated Attendees
- AssociateAttendeeToSegment - Associate Attendee to Segment
- DisassociateAttendeeFromAudienceSegment - Disassociate Attendee
- Oauth2Authorize - Authorize
- Oauth2Token - Token
- ValidateToken - Validate Token
- CreateBadgePrintJob - Create Badge Print Job
- GetEventBadgePrintJobs - List Badge Print Jobs
- GetBadgePrintJob - Get Badge Print Job
- GetBadgePrinterPools - List Badge Printer Pools
- GetBadgePrinterPool - Get Badge Printer Pool
- GetAccountBudgetItems - List Budget Items
- GetAccountVendors - List Account Vendors
- GetCards - List Cards
- GetCardTransactions - List Card Transactions
- CreateCardTransaction - Create Card Transaction
- DeleteCardTransaction - Delete Card Transaction
- UpdateCardTransaction - Update Card Transaction
- GetCurrencyConversionRate - List Currency Conversion Rates
- CreateCurrencyConversionRate - Create Conversion Rate
- UpdateCurrencyConversionRate - Update Conversion Rate
- DeleteCurrencyConversionRate - Delete Conversion Rate
- GetBudgetItems - List Event Budget Items
- CreateBudgetItem - Create Budget Item
- GetBudgetAllocations - List Budget Allocations
- UpdateBudgetItem - Update Budget Item
- UpdateBudgetAllocations - Update Budget Allocations
- DeleteBudgetAllocations - Delete Budget Allocations
- CreatePayment - Create Budget Payment
- UpdatePayment - Update Budget Payment
- DeletePayment - Delete Budget Payment
- AnswerBudgetCustomField - Update Budget Cstm Fld Answers
- GetPayments - List Budget Payments
- AttachInvoiceToPayment - Assign Invoice To Payment
- GetEventBudgetTotals - List Budget Totals
- CreateBulkJob - Create Bulk Job
- GetBulkJobById - Get Bulk Job
- CancelBulkJob - Cancel Bulk Job
- UploadBulkJobData - Upload Bulk Job Data
- ListBulkJobResult - List Bulk Job Result
- RunBulkJob - Run Bulk Job
- GetCampaigns - List eMarketing Campaigns
- GetEmailTemplates - List Email Templates
- SendEMarketingEmails - Send Email To Recipients
- GetEmarketingEmailStatus - List Emarketing Email Status
- CreateCardTokens - Create a Credit Card Token
-
GetConfiguration - Get Communication Config
-
UpdateConfiguration - Update Communication Config
-
GetCommunicationLogMessages - List Communication
-
FilterCommunicationLogMessages - List Communication
- CreateContactGroup - Create Contact Group
- ListContactGroups - List Contact Groups
- GetContactGroupById - Get Contact Group
- UpdateContactGroup - Update Contact Group
- DeleteContactGroup - Delete Contact Group
- GetContactIdsByContactGroup - Get Ids in Contact Group
- AddContactToContactGroup - Add Contact To Group
- RemoveContactFromContactGroup - Remove Contact From Group
- ListContactTypes - List Contact Types
- ListContacts - List Contacts
- UpdateContacts - Update Contacts
- PatchContacts - Patch Contacts
- CreateContacts - Create Contacts
- ListContactsPostFilters - List Contacts
- GetContactObfuscationStatusById - Get Obfuscation Status
- GetChangeHistoryForASpecificContact - Get Contact Change History
- GetContactById - Get Contact
- UpdateContactById - Update Contact
- PatchContactById - Patch Contact
- DeleteContactById - Delete Contact
- UpdateContactCustomFieldAnswers - Update Custom Field Answers
- MergeContacts - Merge Contacts
- ObfuscateContactById - Obfuscate a Contact
- DeleteContactProfileImage - Delete Contact Profile Picture
- AssignContactProfileImage - Assign Contact Profile Picture
- GetContactRelationshipsById - Get Related Contact Ids
- CreateContactRelationship - Add Contact Relationship
- DeleteContactRelationship - Delete Contact Relationship
- ListCustomFields - List Custom Fields
- CreateCustomField - Create Custom Field
- UpdateCustomField - Update Custom Field
- GetCustomField - Get Custom Field
- UpdateCustomFieldAdvancedLogic - Update Advanced Logic
- CreateCustomFieldTranslation - Create Custom Fld. Translation
- UpdateCustomFieldTranslation - Update Custom Fld. Translation
- ListEventDiscounts - List Event Discounts
- CreateEventDiscount - Create Event Discount
- ListDiscountedAgendaItems - List Discounted Agenda Items
- UpdateEventDiscount - Update Event Discount
- LinkAgendaItemToDiscount - Link Agenda Item to Discount
- UnlinkAgendaItemFromDiscount - Unlink Agenda Item Discount
- GetBounceDetails - List Email Bounces
- GetEmailsHistory - Get Emails History Data
GetEmailStatus- List Email Status⚠️ Deprecated
- GetAttendeeCredits - List Attendee Event Credits
- GetEventFeatures - List Event Features
- UpdateEventFeatures - Update Event Feature
- LaunchEventFeatures - Launch Event Feature
- ListEventWeblinks - List Event Weblinks
- ListEventRoleAssignment - List Event Role Assignments
- GetAirActualDetail - Get Air Actual
- GetAirRequests - Get Air Requests
- GetAlternateTravelAnswers - Get Alternate Travel Answers
- GetHotelRequests - Get Hotel Requests
- GetHousingReservationRequests - Get Housing Requests
- ListAdmissionItems - List Admission Items
- ListAdmissionItemsPostFilters - List Admission Items
- GetEventQuestions - List Event Questions
- GetChoicesForQuestion - Get Question Choices
- GetEvents - List Events
- CreateEventAsync - Create Event Async
- GetEventAsyncStatus - Get Event Async Status
- GetEventCopyStatus - Get Event Copy Status
- SendEventEmails - Send Email To Attendees
- GetEventEmailStatus - List Event Email Status
- GetEventsPostFilters - List Events
- GetEventById - Get Event
- UpdateEvent - Update Event
- EventCheckIn - Event Check-In
- DeleteEventCheckIn - Remove Check-In
- CopyEvent - Copy Event
- AnswerEventCustomField - Event Custom Field Answers
- ListDonationItems - List Donation Items
- ListDonationItemsPostFilter - List Donation Items
- ListEventEmails - List Event Emails
- ListFeeItems - List Fee Items
- GetInvitationList - List Invitation Lists
- ListMembershipItems - List Membership Items
- GetOrders - List Orders
- GetOrderItems - List Order Items
- AssociateDiscountCodeToOrderItem - Assign Discount to Order Item
- GetEventPlanningDocuments - List Event Planning Documents
- ListQuantityItems - List Quantity Items
- ListQuantityItemsPostFilter - List Quantity Items
- ListRegistrationPaths - List Registration Paths
- ListRegistrationTypes - List Registration Types
- UpdateRegistrationType - Update Event Registration Type
- GetTransactions - List Transactions
- PostTransactions - Create Transactions
- GetTransactionItems - List Transaction Items
- ListEventUserGroups - List Event User Groups
- AssociateEventUserGroup - Associate User Group to Event
- DisassociateEventUserGroup - Disassociate Group from Event
- UpdateQuantityItemRegistrationForAttendee - Update Quantity Item
- ListSessionsAttendance - Session Attendance
- ListSessionsEnrollment - List Session Registrants
- ListSessionsEnrollmentPostFilter - List Session Registrants
- DeleteSessionAttendance - Del Session Check-in
- SessionCheckIn - Session Check-In
- UpdateSessionCheckIn - Update Session Check-In
- CreateSessionEnrollment - Create Session Registration
- DeleteSessionEnrollment - Delete Session Registration
- ListHubs - List Events+ Hubs
- GetHubMembers - Get Events+ Hub Members
- GetExhibitorCategories - List Exhibitor Categories
- CreateExhibitorCategory - Create Exhibitor Category
- UpdateExhibitorCategory - Update Exhibitor Category
- DeleteExhibitorCategory - Delete Exhibitor Category
- UpdateExhibitorCategoryBanner - Assign Banner to Category
- DeleteExhibitorCategoryImage - Delete Banner from Category
- ListExhibitors - List Category's Exhibitors
- AddExhibitorToExhibitorCategory - Assign Exhibitor to Category
- RemoveExhibitorFromExhibitorCategory - Delete Exhibitor from Category
- GetExhibitorQuestions - List Exhibitor Questions
- GetExhibitors - List Exhibitors
- CreateExhibitor - Create Exhibitor
- GetExhibitor - Get Exhibitor
- UpdateExhibitor - Update Exhibitor
- DeleteExhibitor - Delete Exhibitor
- UpdateExhibitorBanner - Assign Exhibitor Banner Image
- DeleteExhibitorBanner - Delete Exhibitor Banner Image
- GetExhibitorAnswers - List Exhibitor Answers
- UpdateExhibitorAnswers - Update Exhibitor Answers
- ListExhibitorCategories - List Exhibitor's Categories
- UpdateExhibitorLogo - Assign Exhibitor Logo Image
- DeleteExhibitorLogo - Delete Exhibitor Logo Image
- GetLeadQualificationQuestions - List Qualification Questions
- PostRegistrationPack - Create Registration Pack
- GetExhibitorRegistrationPacks - List Registration Pack
- GetRegistrationPack - Get Registration Pack
- UpdateRegistrationPack - Update Registration Pack
- DeleteRegistrationPack - Delete Registration Pack
- GetSponsorshipLevels - List Sponsorship Levels
- GetSponsorshipLevel - Get Sponsorship Level
- ListExhibitorFiles - List Exhibitor Files
- GetExhibitorFile - Get Exhibitor File
- UpdateExhibitorFile - Associate Exhibitor File
- DisassociateExhibitorFile - Disassociate Exhibitor File
- ListExhibitorWeblinks - List Exhibitor Weblinks
- CreateExhibitorWeblink - Create Exhibitor Weblink
- GetExhibitorWeblink - Get Exhibitor Weblink
- UpdateExhibitorWeblink - Update Exhibitor Weblink
- DeleteExhibitorWeblink - Delete Exhibitor Weblink
- ListExhibitorAdmins - List Exhibitor Admins
- PostExhibitorAdmin - Create Exhibitor Admin
- GetExhibitorAdmin - Get Exhibitor Admin
- UpdateExhibitorAdmin - Update Exhibitor Admin
- ListBoothStaff - List Booth Staff
- AssociateBoothStaff - Create Booth Staff
- GetBoothStaff - Get Booth Staff member
- DeleteBoothStaff - Delete Booth Staff member
- UploadFile - Upload a File
- GetFile - Get File Location
- ListContactHooks - List Contact Hooks
- CreateContactHook - Create Contact Hook
- UpdateContactHook - Update Contact Hook
- DeleteContactHook - Delete Contact Hook
- CreateConnection - Create Connection
- GetHousingEventsSummaries - Get Housing Events Summaries
- GetHousingEventInfo - Get Housing Event Info
- GetHousingEventHotels - Get Housing Event Hotels
- GetHousingEventHotel - Get Housing Event Hotel
- GetHousingEventHotelAvailability - Get Event Hotel Availability
- GetHousingEventRoomTypes - Get Housing Event Room Types
- GetRoomTypeDetails - Get Room Type Details
- GetRoomTypeInventory - Get Room Type Inventory
- GetHousingEventInventory - Get Housing Event Inventory
- GetHousingEventReservations - Get Housing Event Reservations
- CreateReservationRequest - Create Reservation Request
- GetReservationRequest - Get Reservation Request
- UpdateReservationRequest - Update Reservation Request
- CancelReservationRequest - Cancel Reservation Request
- LinkReservation - Link Reservation
- UnlinkReservation - Unlink Reservation
- CreateReservation - Create Reservation
- GetReservation - Get Reservation
- CancelReservation - Cancel Reservation
- UpdateReservationSync - Update Reservation
- UpdateHotelRoomRates - Update Hotel Room Rates
- GetEliteratureRequests - List E-literature Requests
- GetLeadQualificationAnswers - List Qualification Answers
- GetLeads - List Leads
- GetLeadsPostFiltersData - List Leads
- GetMeetingRequestByEventId - Get MR by Event ID
- ListMRF - List MR Forms
- GetMRFById - Get MR Form
- CreateMeetingRequest - Create MR (Bulk)
- UpdateMeetingRequest - Update MR (Bulk)
- ListMeetingRequest - List MR
- GetMeetingRequestById - Get MR
- ListMeetingRequestDocuments - List MR Documents
- ListProcessFormSubmission - List Process Form Submissions
- CreateProposalDraft - Beta - Create Proposal Draft
- ListRfpPastEvents - List RFP Past Events
- GetRfpLeadSource - Get RFP Lead Source
- GetRfpLeadSourceSection - Get RFP Lead Source Section
- GetRFP - Get RFP
- ListRfpAgendaItems - List RFP Agenda Items
- ListRfpAgendaItemSchedules - List RFP Agenda Item Schedules
- ListRfpAttachments - List RFP Attachments
- ListRfpCustomFields - List RFP Custom Fields Answers
- GetRfpGuestRooms - Get RFP Guest Rooms
- ListRfpInternalDocuments - List RFP Internal Documents
- ListRfpQuestions - List RFP Questions
- ListRfpRecipientsHistory - List RFP Recipients History
- GetRfpSuppliers - List RFP Suppliers
- ListSeating - List Seating
- GetEventTableAssignments - List All Seating Assignments
- GetSeating - Get Seating
- GetTableAssignment - List Seating Assignments
- ListTables - List Tables
- GetTable - Get Table
- ListSeats - List Seats
- GetSeat - Get Seat
- GetSessionLocation - List Session Locations
- AddSessionLocation - Add Session Location
- CreateProgramItem - Create Program Item
- ListProgramItems - List Program Items
- FilterProgramItemDocuments - Filter Program Item Documents
- ListProgramItemsPostFilters - List Program Items
- UpdateProgramItem - Update Program Item
- DeleteProgramItem - Delete Session Program Item
GetProgramItemDocuments- Get Program Item Documents⚠️ Deprecated- RelateProgramItemToSessionDocument - Add Program Item Document
- GetProgramItemSessionDocument - Get Program Item Document
- DeleteProgramItemSessionDocument - Delete Program Item Document
- ListSessionsCategories - List Session Categories
- CreateSessionCategory - Create Session Categories
- GetSessionSegments - Get Session Segments
- ListSessions - List Sessions
- CreateSession - Create Session
- ListSessionsPostFilters - List Sessions
- GetSessionById - Get Session
- UpdateSession - Update Session
- DeleteSession - Delete Session
- UpdateSessionCustomFieldAnswers - Update Custom Field Answers
- ListSessionDocs - List Session Documents
- GetSessionDoc - Get Session Document
- AddSessionDoc - Add Document To Session
- DeleteSessionDocument - Delete Document from Session
- ListSessionSpeakers - List Session's Speakers
- AddSpeakerToSession - Assign Speaker to Session
- RemoveSpeakerFromSession - Delete Speaker From Session
- GetSignatures - List Signatures
- GetSessionProgramSpeakers - Get Session Program Speakers
- ListSessionProgramSpeakersPostFilters - List Session Program Speakers
- CreateSessionProgramSpeaker - Add Session Program Speaker
- GetSessionProgramSpeaker - Get Session Program Speaker
- DeleteSessionProgramSpeaker - Delete Session Program Speaker
- ListSpeakersCategories - List Speakers Categories
- AddSpeakerCategory - Create Speaker Category
- ListSpeakers - List Speakers
- CreateSpeaker - Create Speaker
- ListSpeakersPostFilter - List Speakers
- UpdateSpeaker - Update Speaker
- DeleteSpeaker - Delete Speaker
- ListSpeakerDocs - List Speaker's Documents
- GetSpeakerDoc - Get a document for a speaker
- AddSpeakerDoc - Add Document To Speaker
- DeleteSpeakerDocument - Delete Document From Speaker
- DeleteSpeakerProfileImage - Delete Speaker Profile Picture
- AssignSpeakerProfileImage - Assign Speaker Profile Picture
- ListSpeakerSessions - List Speaker's Sessions
- GetAllEventSurveyResponses - List All Event Responses
- GetEventSurveys - List Event Surveys
- GetEventSurveyQuestions - List Event Survey Questions
- GetEventSurveyRespondents - List Event Survey Respondents
- CreateEventSurveyRespondent - Create Event Survey Respondent
- UpdateEventSurveyRespondent - Update Event Survey Respondent
- CreateEventSurveyResponses - Create Event Survey Responses
- GetEventSurveyResponses - List Event Survey Responses
- GetLargeChoices - List Large Choices
- GetQuestions - List Questions
- GetRespondents - List Respondents
- GetResponses - List Responses
- GetStandardSurveys - List Standalone Surveys
- GetStandardSurveyResponses - List Stdl. Survey Responses
- GetStandardSurveyEmailTemplates - List Stdl. Survey Email Templ.
- GetStandardSurveyQuestions - List Stdl. Survey Questions
- GetStandardSurveyRespondents - List Stdl. Survey Respondents
- CreateStandardSurveyRespondent - Create Stdl. Survey Respondent
- UpdateStandardSurveyRespondent - Update Stdl. Survey Respondent
- SendStandardSurveyEmail - Send Standalone Survey Email
- CreateStandardSurveyResponses - Create Stdl. Survey Responses
- UpdateStandardSurveyResponses - Update Stdl. Survey Responses
- GetSurvey - List Surveys
- ListTravelAccounts - List Travel Accounts
- ListSupplierAccounts - List Supplier Accounts
- GetTravelAccount - Get Travel Account
- GetSupplierAccount - Get Supplier Account
- ListTravelPrograms - List Travel Programs
- ListTravelProgramsQuestions - List Travel Programs Questions
- GetTravelProgram - Get Travel Program
- ListTravelProgramQuestions - List Travel Program Questions
- GetTravelProgramQuestion - Get Travel Program Question
- ListTravelProposals - List Travel Proposals
- ListTravelProposalBids - List Travel Proposal Bids
- GetTravelProposalBid - Get Travel Proposal Bid
- GetTravelProposal - Get Travel Proposal
- PropertyApiListBrands - List Supplier Brands
- PropertyApiGetBrand - Get Supplier Brand
- PropertyApiListChains - List Supplier Chains
- PropertyApiGetChain - Get Supplier Chain
- PropertyApiListProperties - List Supplier Properties
- PropertyApiGetProperty - Get Supplier Property
- BtApiGetPropertyRooms - List Supplier Property Rooms
- PropertyApiGetPropertyRoom - Get Supplier Property Room
- GetUsage - Get Current Usage
- GetUsageTier - Get Current Usage Tier
- GetUserGroups - Get SCIM Groups
- GetResourceTypes - List Resource Types
- GetResourceType - Get Resource Type
- GetSchemas - List Schemas
- GetSchema - Get Schema
- GetServiceProviderConfig - Get Service Provider Config
- CreateUser - Create User
- ListUsers - List Users
- GetUser - Get User
- UpdateUser - Update User
- DeleteUser - Delete User
- GetAccountUserGroups - List Account User Groups
- CreateAccountUserGroup - Create Account User Group
- GetAccountUserGroup - Get Account User Group
- UpdateAccountUserGroup - Update Account User Group
- DeleteAccountUserGroup - Delete Account User Group
- AddUserToAccountUserGroup - Associate User to Group
- DeleteUserFromAccountUserGroup - Delete User from Group
- ListVideos - List Videos
- GetVideoViews - List Video Views
- ListAudioTracks - List Audio Tracks
- ListVideoRenditions - List Video Renditions
- CreateTextTrack - Create Text Track
- ListVideoTextTracks - List Text Tracks
- UpdateTextTrack - Update Text Track
- CreateWebcast - Create Webcast
- ListWebcasts - List Webcasts
- ListAttendeeLinks - List Attendee Links
- ListPlayers - List Players
- GetWebcastById - Get Webcast
- DeleteWebcast - Delete Webcast
- UpdateWebcast - Update Webcast
- CreateAttendeeLinks - Create Attendee Link
- UpdateAttendeeLinks - Update Attendee Link
ListWebcastAttendeeLinks- List Attendee Links⚠️ Deprecated- DeleteAttendeeLink - Delete Attendee Link
Some of the endpoints in this SDK support pagination. To use pagination, you make your SDK calls as usual, but the
returned response object will have a Next method that can be called to pull down the next group of results. If the
return value of Next is null, then there are no more pages to be fetched.
Here's an example of one such pagination call:
using Cvent.SDK;
using Cvent.SDK.Models.Components;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK(security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
});
GetAccountUserGroupsRequest req = new GetAccountUserGroupsRequest() {
Token = "1a2b3c4d5e6f7g8h9i10j11k",
Filter = "name eq 'My User Group'",
};
GetAccountUserGroupsResponse? res = await sdk.Users.GetAccountUserGroupsAsync(req);
while (res != null)
{
// handle items
res = await res.Next!();
}Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
To change the default retry strategy for a single API call, simply pass a RetryConfig to the call:
using Cvent.SDK;
using Cvent.SDK.Models.Components;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK(security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
});
GetAccountUserGroupsRequest req = new GetAccountUserGroupsRequest() {
Token = "1a2b3c4d5e6f7g8h9i10j11k",
Filter = "name eq 'My User Group'",
};
GetAccountUserGroupsResponse? res = await sdk.Users.GetAccountUserGroupsAsync(
retryConfig: new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: new BackoffStrategy(
initialIntervalMs: 1L,
maxIntervalMs: 50L,
maxElapsedTimeMs: 100L,
exponent: 1.1
),
retryConnectionErrors: false
),
request: req
);
while (res != null)
{
// handle items
res = await res.Next!();
}If you'd like to override the default retry strategy for all operations that support retries, you can use the RetryConfig optional parameter when intitializing the SDK:
using Cvent.SDK;
using Cvent.SDK.Models.Components;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK(
retryConfig: new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: new BackoffStrategy(
initialIntervalMs: 1L,
maxIntervalMs: 50L,
maxElapsedTimeMs: 100L,
exponent: 1.1
),
retryConnectionErrors: false
),
security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
}
);
GetAccountUserGroupsRequest req = new GetAccountUserGroupsRequest() {
Token = "1a2b3c4d5e6f7g8h9i10j11k",
Filter = "name eq 'My User Group'",
};
GetAccountUserGroupsResponse? res = await sdk.Users.GetAccountUserGroupsAsync(req);
while (res != null)
{
// handle items
res = await res.Next!();
}CventSDKException is the base exception class for all HTTP error responses. It has the following properties:
| Property | Type | Description |
|---|---|---|
Message |
string | Error message |
Request |
HttpRequestMessage | HTTP request object |
Response |
HttpResponseMessage | HTTP response object |
Some exceptions in this SDK include an additional Payload field, which will contain deserialized custom error data when present. Possible exceptions are listed in the Error Classes section.
using Cvent.SDK;
using Cvent.SDK.Models.Components;
using Cvent.SDK.Models.Errors;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK(security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
});
try
{
GetAccountUserGroupsRequest req = new GetAccountUserGroupsRequest() {
Token = "1a2b3c4d5e6f7g8h9i10j11k",
Filter = "name eq 'My User Group'",
};
GetAccountUserGroupsResponse? res = await sdk.Users.GetAccountUserGroupsAsync(req);
while (res != null)
{
// handle items
res = await res.Next!();
}
}
catch (CventSDKException ex) // all SDK exceptions inherit from CventSDKException
{
// ex.ToString() provides a detailed error message
System.Console.WriteLine(ex);
// Base exception fields
HttpRequestMessage request = ex.Request;
HttpResponseMessage response = ex.Response;
var statusCode = (int)response.StatusCode;
var responseBody = ex.Body;
if (ex is Models.Errors.ErrorResponse) // different exceptions may be thrown depending on the method
{
// Check error data fields
Models.Errors.ErrorResponsePayload payload = ex.Payload;
long Code = payload.Code;
string Message = payload.Message;
// ...
}
// An underlying cause may be provided
if (ex.InnerException != null)
{
Exception cause = ex.InnerException;
}
}
catch (System.Net.Http.HttpRequestException ex)
{
// Check ex.InnerException for Network connectivity errors
}Primary exceptions:
CventSDKException: The base class for HTTP error responses.ErrorResponse: Represents an error response with additional details of cascading error messages. *
Less common exceptions (5)
-
System.Net.Http.HttpRequestException: Network connectivity error. For more details about the underlying cause, inspect theex.InnerException. -
Inheriting from
CventSDKException:ErrorResponseJson20: The error response. Applicable to 11 of 441 methods.*SegmentsErrorResponse: Segments error response details. Status code400. Applicable to 2 of 441 methods.*BadRequestException: A bad token response. Status code400. Applicable to 1 of 441 methods.*ResponseValidationError: Thrown when the response data could not be deserialized into the expected type.
* Refer to the relevant documentation to determine whether an exception applies to a specific operation.
You can override the default server globally by passing a server index to the serverIndex: int optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers:
| # | Server | Description |
|---|---|---|
| 0 | https://api-platform.cvent.com/ea |
|
| 1 | https://api-platform-eur.cvent.com/ea |
using Cvent.SDK;
using Cvent.SDK.Models.Components;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK(
serverIndex: 0,
security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
}
);
GetAccountUserGroupsRequest req = new GetAccountUserGroupsRequest() {
Token = "1a2b3c4d5e6f7g8h9i10j11k",
Filter = "name eq 'My User Group'",
};
GetAccountUserGroupsResponse? res = await sdk.Users.GetAccountUserGroupsAsync(req);
while (res != null)
{
// handle items
res = await res.Next!();
}The default server can also be overridden globally by passing a URL to the serverUrl: string optional parameter when initializing the SDK client instance. For example:
using Cvent.SDK;
using Cvent.SDK.Models.Components;
using Cvent.SDK.Models.Requests;
var sdk = new CventSDK(
serverUrl: "https://api-platform-eur.cvent.com/ea",
security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
}
);
GetAccountUserGroupsRequest req = new GetAccountUserGroupsRequest() {
Token = "1a2b3c4d5e6f7g8h9i10j11k",
Filter = "name eq 'My User Group'",
};
GetAccountUserGroupsResponse? res = await sdk.Users.GetAccountUserGroupsAsync(req);
while (res != null)
{
// handle items
res = await res.Next!();
}The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
using Cvent.SDK;
using Cvent.SDK.Models.Components;
var sdk = new CventSDK(security: new Security() {
OAuth2ClientCredentials = new SchemeOAuth2ClientCredentials() {
ClientID = "<YOUR_CLIENT_ID_HERE>",
ClientSecret = "<YOUR_CLIENT_SECRET_HERE>",
TokenURL = "<YOUR_TOKEN_URL_HERE>",
Scopes = "<YOUR_SCOPES_HERE>",
},
});
CardTokenRequest req = new CardTokenRequest() {
CreditCard = new CreditCardRequestJson() {
AccountHolderName = "John Doe",
ExpMonth = 11,
ExpYear = 2026,
Cvv = "123",
AddressLine1 = "123 Main Street",
AddressLine2 = "First Floor",
AddressLine3 = "Apt 101",
AddressCity = "McLean",
AddressStateProvince = "VA",
AddressPostalCode = "12345",
AddressCountry = "USA",
AddressCountryAlpha2 = "US",
ContactPhone = "910-999-9999",
Email = "jdoe@example.com",
Number = "4111111111111111",
},
};
var res = await sdk.CardTokens.CreateCardTokensAsync(
request: req,
serverUrl: "https://secure-ecommerce.api-platform.cvent.com/ea"
);
// handle responseThe C# SDK makes API calls using an ISpeakeasyHttpClient that wraps the native
HttpClient. This
client provides the ability to attach hooks around the request lifecycle that can be used to modify the request or handle
errors and response.
The ISpeakeasyHttpClient interface allows you to either use the default SpeakeasyHttpClient that comes with the SDK,
or provide your own custom implementation with customized configuration such as custom message handlers, timeouts,
connection pooling, and other HTTP client settings.
The following example shows how to create a custom HTTP client with request modification and error handling:
using Cvent.SDK;
using Cvent.SDK.Utils;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
// Create a custom HTTP client
public class CustomHttpClient : ISpeakeasyHttpClient
{
private readonly ISpeakeasyHttpClient _defaultClient;
public CustomHttpClient()
{
_defaultClient = new SpeakeasyHttpClient();
}
public async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null)
{
// Add custom header and timeout
request.Headers.Add("x-custom-header", "custom value");
request.Headers.Add("x-request-timeout", "30");
try
{
var response = await _defaultClient.SendAsync(request, cancellationToken);
// Log successful response
Console.WriteLine($"Request successful: {response.StatusCode}");
return response;
}
catch (Exception error)
{
// Log error
Console.WriteLine($"Request failed: {error.Message}");
throw;
}
}
public void Dispose()
{
_httpClient?.Dispose();
_defaultClient?.Dispose();
}
}
// Use the custom HTTP client with the SDK
var customHttpClient = new CustomHttpClient();
var sdk = new CventSDK(client: customHttpClient);You can also provide a completely custom HTTP client with your own configuration:
using Cvent.SDK.Utils;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
// Custom HTTP client with custom configuration
public class AdvancedHttpClient : ISpeakeasyHttpClient
{
private readonly HttpClient _httpClient;
public AdvancedHttpClient()
{
var handler = new HttpClientHandler()
{
MaxConnectionsPerServer = 10,
// ServerCertificateCustomValidationCallback = customCertValidation, // Custom SSL validation if needed
};
_httpClient = new HttpClient(handler)
{
Timeout = TimeSpan.FromSeconds(30)
};
}
public async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null)
{
return await _httpClient.SendAsync(request, cancellationToken ?? CancellationToken.None);
}
public void Dispose()
{
_httpClient?.Dispose();
}
}
var sdk = CventSDK.Builder()
.WithClient(new AdvancedHttpClient())
.Build();For simple debugging, you can enable request/response logging by implementing a custom client:
public class LoggingHttpClient : ISpeakeasyHttpClient
{
private readonly ISpeakeasyHttpClient _innerClient;
public LoggingHttpClient(ISpeakeasyHttpClient innerClient = null)
{
_innerClient = innerClient ?? new SpeakeasyHttpClient();
}
public async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null)
{
// Log request
Console.WriteLine($"Sending {request.Method} request to {request.RequestUri}");
var response = await _innerClient.SendAsync(request, cancellationToken);
// Log response
Console.WriteLine($"Received {response.StatusCode} response");
return response;
}
public void Dispose() => _innerClient?.Dispose();
}
var sdk = new CventSDK(client: new LoggingHttpClient());The SDK also provides built-in hook support through the SDKConfiguration.Hooks system, which automatically handles
BeforeRequestAsync, AfterSuccessAsync, and AfterErrorAsync hooks for advanced request lifecycle management.
This SDK is licensed under the MIT License. See LICENSE.txt for the full license text and third party notices.
Use of this SDK is subject to Cvent's Product Terms of Use.
<style> :root { --badge-gray-bg: #f3f4f6; --badge-gray-border: #d1d5db; --badge-gray-text: #374151; --badge-blue-bg: #eff6ff; --badge-blue-border: #3b82f6; --badge-blue-text: #3b82f6; } @media (prefers-color-scheme: dark) { :root { --badge-gray-bg: #374151; --badge-gray-border: #4b5563; --badge-gray-text: #f3f4f6; --badge-blue-bg: #1e3a8a; --badge-blue-border: #3b82f6; --badge-blue-text: #93c5fd; } } h1 { border-bottom: none !important; margin-bottom: 4px; margin-top: 0; letter-spacing: 0.5px; font-weight: 600; } .badge-text { letter-spacing: 1px; font-weight: 300; } .badge-container { display: inline-flex; align-items: center; background: var(--badge-gray-bg); border: 1px solid var(--badge-gray-border); border-radius: 6px; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 11px; text-decoration: none; vertical-align: middle; } .badge-container.blue { background: var(--badge-blue-bg); border-color: var(--badge-blue-border); } .badge-icon-section { padding: 4px 8px; border-right: 1px solid var(--badge-gray-border); display: flex; align-items: center; } .badge-text-section { padding: 4px 10px; color: var(--badge-gray-text); font-weight: 400; } .badge-container.blue .badge-text-section { color: var(--badge-blue-text); } .badge-link { text-decoration: none; margin-left: 8px; display: inline-flex; vertical-align: middle; } .badge-link:hover { text-decoration: none; } .badge-link:first-child { margin-left: 0; } .badge-icon-section svg { color: var(--badge-gray-text); } .badge-container.blue .badge-icon-section svg { color: var(--badge-blue-text); } </style>