openapi: 3.0.1 info: title: HubSpot Marketing Events description: Basepom for all HubSpot Projects version: 2026-09 x-hubspot-product-tier-requirements: marketing: FREE sales: FREE service: FREE cms: FREE commerce: FREE crmHub: FREE dataHub: FREE servers: - url: https://api.hubapi.com tags: - name: Basic - name: Batch - name: Event Attendees - name: Event Status - name: Identifiers - name: List Associations - name: Participant State - name: Settings - name: Subscriber State Changes paths: /marketing/marketing-events/2026-09: get: tags: - Basic operationId: get-/marketing/marketing-events/2026-09_/marketing/marketing-events/v3 parameters: - name: after in: query description: The cursor indicating the position of the last retrieved item. required: false style: form explode: true schema: type: string - name: limit in: query description: The limit for response size. The default value is 10, the max number is 100 required: false style: form explode: true schema: type: integer format: int32 default: 10 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseMarketingEventPublicReadResponseV2ForwardPaging' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read /marketing/marketing-events/2026-09/associations/{externalAccountId}/{externalEventId}/lists: get: tags: - List Associations summary: Get lists associated with a marketing event description: Gets lists associated with a marketing event by external account id and external event id operationId: get-/marketing/marketing-events/2026-09/associations/{externalAccountId}/{externalEventId}/lists_getAllByExternalAccountAndEventIds parameters: - name: externalAccountId in: path description: The accountId that is associated with this marketing event in the external event application. required: true style: simple explode: false schema: type: string - name: externalEventId in: path description: The id of the marketing event in the external event application. required: true style: simple explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseWithTotalPublicList' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/associations/{externalAccountId}/{externalEventId}/lists/{listId}: put: tags: - List Associations summary: Associate a list with a marketing event description: Associates a list with a marketing event by external account id, external event id, and ILS list id operationId: put-/marketing/marketing-events/2026-09/associations/{externalAccountId}/{externalEventId}/lists/{listId}_associateByExternalAccountAndEventIds parameters: - name: externalAccountId in: path description: The accountId that is associated with this marketing event in the external event application. required: true style: simple explode: false schema: type: string - name: externalEventId in: path description: The id of the marketing event in the external event application. required: true style: simple explode: false schema: type: string - name: listId in: path description: The ILS ID of the list. required: true style: simple explode: false schema: type: string responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write delete: tags: - List Associations summary: Disassociate a list from a marketing event description: Disassociates a list from a marketing event by external account id, external event id, and ILS list id operationId: delete-/marketing/marketing-events/2026-09/associations/{externalAccountId}/{externalEventId}/lists/{listId}_disassociateByExternalAccountAndEventIds parameters: - name: externalAccountId in: path description: The accountId that is associated with this marketing event in the external event application. required: true style: simple explode: false schema: type: string - name: externalEventId in: path description: The id of the marketing event in the external event application. required: true style: simple explode: false schema: type: string - name: listId in: path description: The ILS ID of the list. required: true style: simple explode: false schema: type: string responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/associations/{marketingEventId}/lists: get: tags: - List Associations summary: Get lists associated with a marketing event description: Gets lists associated with a marketing event by marketing event id operationId: get-/marketing/marketing-events/2026-09/associations/{marketingEventId}/lists_getAllByMarketingEventId parameters: - name: marketingEventId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseWithTotalPublicList' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/associations/{marketingEventId}/lists/{listId}: put: tags: - List Associations summary: Associate a list with a marketing event description: Associates a list with a marketing event by marketing event id and ILS list id operationId: put-/marketing/marketing-events/2026-09/associations/{marketingEventId}/lists/{listId}_associateByMarketingEventId parameters: - name: listId in: path description: The ILS ID of the list. required: true style: simple explode: false schema: type: string - name: marketingEventId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: string responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write delete: tags: - List Associations summary: Disassociate a list from a marketing event description: Disassociates a list from a marketing event by marketing event id and ILS list id operationId: delete-/marketing/marketing-events/2026-09/associations/{marketingEventId}/lists/{listId}_disassociateByMarketingEventId parameters: - name: listId in: path description: The ILS ID of the list. required: true style: simple explode: false schema: type: string - name: marketingEventId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: string responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/attendance/{externalEventId}/{subscriberState}/create: post: tags: - Event Attendees summary: Record Participants by ContactId with Marketing Event External Ids description: 'Records the participation of multiple HubSpot contacts in a Marketing Event using their HubSpot contact IDs. Additional Functionality: - Adds a timeline event to the contacts. Allowed Properties: For the state "attend": - joinedAt - leftAt' operationId: post-/marketing/marketing-events/2026-09/attendance/{externalEventId}/{subscriberState}/create_recordByContactIds parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: subscriberState in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: false style: form explode: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventSubscriber' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/BatchResponseSubscriberVidResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/attendance/{externalEventId}/{subscriberState}/email-create: post: tags: - Event Attendees summary: Record Participants by Email with Marketing Event External Ids description: 'Records the participation of multiple HubSpot contacts in a Marketing Event using their email addresses. If a contact does not exist, it will be automatically created. The contactProperties field is used exclusively for creating new contacts and will not update properties of existing contacts. Additional Functionality: - Adds a timeline event to the contacts. Allowed Properties: For the state "attend": - joinedAt - leftAt' operationId: post-/marketing/marketing-events/2026-09/attendance/{externalEventId}/{subscriberState}/email-create_recordByContactEmails parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: subscriberState in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: false style: form explode: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventEmailSubscriber' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/BatchResponseSubscriberEmailResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/batch/archive: post: tags: - Batch summary: Delete Multiple Marketing Events by ObjectId description: 'Deletes multiple Marketing Events from the portal based on their objectId, if they exist. Responses: 204: Returned if all specified Marketing Events were successfully deleted. 207: Returned if some objectIds did not correspond to any existing Marketing Events.' operationId: post-/marketing/marketing-events/2026-09/batch/archive_archiveByObjectId parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventPublicObjectIdDeleteRequest' required: true responses: default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/batch/update: post: tags: - Batch summary: Update Multiple Marketing Events by ObjectId description: Updates multiple Marketing Events on the portal based on their objectId, if they exist. operationId: post-/marketing/marketing-events/2026-09/batch/update_updateByObjectId parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventPublicUpdateRequestFullV2' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/BatchResponseMarketingEventPublicDefaultResponseV2' '207': description: multiple statuses content: application/json: schema: $ref: '#/components/schemas/BatchResponseMarketingEventPublicDefaultResponseV2WithErrors' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/events: post: tags: - Basic summary: Create a marketing event description: Creates a new marketing event in HubSpot operationId: post-/marketing/marketing-events/2026-09/events_create parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/MarketingEventCreateRequestParams' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/MarketingEventDefaultResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/events/delete: post: tags: - Batch summary: Delete Multiple Marketing Events by External Ids description: 'Deletes multiple Marketing Events based on externalAccountId, externalEventId, and appId. Only Marketing Events created by the same apps will be deleted; events from other apps cannot be removed by this endpoint. ' operationId: post-/marketing/marketing-events/2026-09/events/delete_archive parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventExternalUniqueIdentifier' required: true responses: default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/events/search: get: tags: - Identifiers summary: Find App-Specific Marketing Events by External Event Id description: 'Retrieves Marketing Events where the externalEventId matches the value provided in the request, limited to events created by the app making the request. Marketing Events created by other apps will not be included in the results.' operationId: get-/marketing/marketing-events/2026-09/events/search_doSearch parameters: - name: q in: query description: '' required: true style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseSearchPublicResponseWrapperNoPaging' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read /marketing/marketing-events/2026-09/events/upsert: post: tags: - Batch summary: Create or Update Multiple Marketing Events description: 'Upserts multiple Marketing Events. If a Marketing Event with the specified ID already exists, it will be updated; otherwise, a new event will be created. Only Marketing Events originally created by the same app can be updated.' operationId: post-/marketing/marketing-events/2026-09/events/upsert_upsert parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventCreateRequestParams' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/BatchResponseMarketingEventPublicDefaultResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/events/{externalEventId}: get: tags: - Basic summary: Get Marketing Event by External IDs description: 'Returns the details of a Marketing Event with the specified externalAccountId, externalEventId, if it exists. Only Marketing Events created by the same app making the request can be retrieved.' operationId: get-/marketing/marketing-events/2026-09/events/{externalEventId}_getDetails parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: true style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/MarketingEventPublicReadResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read put: tags: - Basic summary: Create or update a marketing event description: Upserts a marketing event If there is an existing marketing event with the specified ID, it will be updated; otherwise a new event will be created. operationId: put-/marketing/marketing-events/2026-09/events/{externalEventId}_upsert parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MarketingEventCreateRequestParams' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/MarketingEventPublicDefaultResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write delete: tags: - Basic summary: Delete Marketing Event by External Ids description: 'Deletes the existing Marketing Event with the specified externalAccountId, externalEventId, if it exists. Only Marketing Events created by the same app can be deleted.' operationId: delete-/marketing/marketing-events/2026-09/events/{externalEventId}_archive parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: true style: form explode: true schema: type: string responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write patch: tags: - Basic summary: Update Marketing Event by External IDs description: 'Updates the details of an existing Marketing Event identified by its externalAccountId, externalEventId if it exists. Only Marketing Events created by the same app can be updated.' operationId: patch-/marketing/marketing-events/2026-09/events/{externalEventId}_update parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: true style: form explode: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MarketingEventUpdateRequestParams' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/MarketingEventPublicDefaultResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/events/{externalEventId}/cancel: post: tags: - Event Status summary: Mark a marketing event as cancelled description: Mark a marketing event as cancelled. operationId: post-/marketing/marketing-events/2026-09/events/{externalEventId}/cancel_cancel parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: true style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/MarketingEventDefaultResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/events/{externalEventId}/complete: post: tags: - Event Status summary: Mark a marketing event as completed description: Mark a marketing event as completed operationId: post-/marketing/marketing-events/2026-09/events/{externalEventId}/complete_complete parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: true style: form explode: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MarketingEventCompleteRequestParams' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/MarketingEventDefaultResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/events/{externalEventId}/{subscriberState}/email-upsert: post: tags: - Subscriber State Changes summary: Record a subscriber state by contact email description: 'Record a subscriber state between multiple HubSpot contacts and a marketing event, using contact email addresses. Note that the contact must already exist in HubSpot; a contact will not be created. The contactProperties field is used only when creating a new contact. These properties will not update existing contacts. ' operationId: post-/marketing/marketing-events/2026-09/events/{externalEventId}/{subscriberState}/email-upsert_upsertByContactEmail parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: subscriberState in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: true style: form explode: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventEmailSubscriber' required: true responses: default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/events/{externalEventId}/{subscriberState}/upsert: post: tags: - Subscriber State Changes summary: Record a subscriber state by contact ID description: Record a subscriber state between multiple HubSpot contacts and a marketing event, using HubSpot contact IDs. Note that the contact must already exist in HubSpot; a contact will not be created. operationId: post-/marketing/marketing-events/2026-09/events/{externalEventId}/{subscriberState}/upsert_upsertByContactId parameters: - name: externalEventId in: path description: '' required: true style: simple explode: false schema: type: string - name: subscriberState in: path description: '' required: true style: simple explode: false schema: type: string - name: externalAccountId in: query description: '' required: true style: form explode: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventSubscriber' required: true responses: default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/participations/contacts/{contactIdentifier}/breakdown: get: tags: - Participant State summary: Read participations breakdown by Contact identifier description: Read Contact's participations by identifier - email or internal id. operationId: get-/marketing/marketing-events/2026-09/participations/contacts/{contactIdentifier}/breakdown_getParticipationsBreakdownByContactId parameters: - name: contactIdentifier in: path description: The identifier of the Contact. It may be email or internal id. required: true style: simple explode: false schema: type: string - name: after in: query description: The cursor indicating the position of the last retrieved item. required: false style: form explode: true schema: type: string - name: limit in: query description: The limit for response size. The default value is 10, the max number is 100 required: false style: form explode: true schema: type: integer format: int32 default: 10 - name: state in: query description: The participation state value. It may be REGISTERED, CANCELLED, ATTENDED, NO_SHOW required: false style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseWithTotalParticipationBreakdown' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read /marketing/marketing-events/2026-09/participations/{externalAccountId}/{externalEventId}: get: tags: - Participant State summary: Read participations counters by Marketing Event external identifier description: Read Marketing event's participations counters by externalAccountId and externalEventId pair. operationId: get-/marketing/marketing-events/2026-09/participations/{externalAccountId}/{externalEventId}_getParticipationsCountersByEventExternalId parameters: - name: externalAccountId in: path description: The accountId that is associated with this marketing event in the external event application. required: true style: simple explode: false schema: type: string - name: externalEventId in: path description: The id of the marketing event in the external event application. required: true style: simple explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/AttendanceCounters' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read /marketing/marketing-events/2026-09/participations/{externalAccountId}/{externalEventId}/breakdown: get: tags: - Participant State summary: Read participations breakdown by Marketing Event external identifier description: Read Marketing event's participations breakdown with optional filters by externalAccountId and externalEventId pair. operationId: get-/marketing/marketing-events/2026-09/participations/{externalAccountId}/{externalEventId}/breakdown_getParticipationsBreakdownByExternalEventId parameters: - name: externalAccountId in: path description: The accountId that is associated with this marketing event in the external event application. required: true style: simple explode: false schema: type: string - name: externalEventId in: path description: The id of the marketing event in the external event application. required: true style: simple explode: false schema: type: string - name: after in: query description: The cursor indicating the position of the last retrieved item. required: false style: form explode: true schema: type: string - name: contactIdentifier in: query description: The identifier of the Contact. It may be email or internal id. required: false style: form explode: true schema: type: string - name: limit in: query description: The limit for response size. The default value is 10, the max number is 100 required: false style: form explode: true schema: type: integer format: int32 default: 10 - name: state in: query description: The participation state value. It may be REGISTERED, CANCELLED, ATTENDED, NO_SHOW required: false style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseWithTotalParticipationBreakdown' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read /marketing/marketing-events/2026-09/participations/{marketingEventId}: get: tags: - Participant State summary: Read participations counters by Marketing Event internal identifier description: Read Marketing event's participations counters by internal identifier marketingEventId. operationId: get-/marketing/marketing-events/2026-09/participations/{marketingEventId}_getParticipationsCountersByMarketingEventId parameters: - name: marketingEventId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: integer format: int64 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/AttendanceCounters' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read /marketing/marketing-events/2026-09/participations/{marketingEventId}/breakdown: get: tags: - Participant State summary: Read participations breakdown by Marketing Event internal identifier description: Read Marketing event's participations breakdown with optional filters by internal identifier marketingEventId. operationId: get-/marketing/marketing-events/2026-09/participations/{marketingEventId}/breakdown_getParticipationsBreakdownByMarketingEventId parameters: - name: marketingEventId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: integer format: int64 - name: after in: query description: The cursor indicating the position of the last retrieved item. required: false style: form explode: true schema: type: string - name: contactIdentifier in: query description: The identifier of the Contact. It may be email or internal id. required: false style: form explode: true schema: type: string - name: limit in: query description: The limit for response size. The default value is 10, the max number is 100 required: false style: form explode: true schema: type: integer format: int32 default: 10 - name: state in: query description: The participation state value. It may be REGISTERED, CANCELLED, ATTENDED, NO_SHOW required: false style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseWithTotalParticipationBreakdown' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read /marketing/marketing-events/2026-09/{appId}/settings: get: tags: - Settings summary: Retrieve the application settings description: Retrieve the current settings for the application. operationId: get-/marketing/marketing-events/2026-09/{appId}/settings_getAll parameters: - name: appId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/EventDetailSettings' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - developers-read post: tags: - Settings summary: Update the application settings description: Create or update the current settings for the application. operationId: post-/marketing/marketing-events/2026-09/{appId}/settings_update parameters: - name: appId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 requestBody: content: application/json: schema: $ref: '#/components/schemas/EventDetailSettingsUrl' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/EventDetailSettings' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - developers-write /marketing/marketing-events/2026-09/{externalEventId}/identifiers: get: tags: - Identifiers summary: Find Marketing Events by External Event Id description: 'This endpoint searches the portal for all Marketing Events whose externalEventId matches the value provided in the request. It retrieves the objectId and additional event details for each matching Marketing Event. Since multiple Marketing Events can have the same externalEventId, the endpoint returns all matching results. Note: Marketing Events become searchable by externalEventId a few minutes after creation.' operationId: get-/marketing/marketing-events/2026-09/{externalEventId}/identifiers_searchPortalEvents parameters: - name: externalEventId in: path description: The id of the marketing event in the external event application. required: true style: simple explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseWithTotalMarketingEventIdentifiersResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read /marketing/marketing-events/2026-09/{objectId}: get: tags: - Basic summary: Get Marketing Event by objectId description: Returns the details of a Marketing Event with the specified objectId, if it exists. operationId: get-/marketing/marketing-events/2026-09/{objectId}_getByObjectId parameters: - name: objectId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/MarketingEventPublicReadResponseV2' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.read delete: tags: - Basic summary: Delete Marketing Event by objectId description: Deletes the existing Marketing Event with the specified objectId, if it exists. operationId: delete-/marketing/marketing-events/2026-09/{objectId}_archiveByObjectId parameters: - name: objectId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: string responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write patch: tags: - Basic summary: Update Marketing Event by objectId description: Updates the details of an existing Marketing Event identified by its objectId, if it exists. operationId: patch-/marketing/marketing-events/2026-09/{objectId}_updateByObjectId parameters: - name: objectId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MarketingEventPublicUpdateRequestV2' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/MarketingEventPublicDefaultResponseV2' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/{objectId}/attendance/{subscriberState}/create: post: tags: - Event Attendees summary: Record Participants by ContactId with Marketing Event Object Id description: 'Records the participation of multiple HubSpot contacts in a Marketing Event using their HubSpot contact IDs. Additional Functionality: - Adds a timeline event to the contacts. Allowed Properties: For the state "attend": - joinedAt - leftAt' operationId: post-/marketing/marketing-events/2026-09/{objectId}/attendance/{subscriberState}/create_recordByContactId parameters: - name: objectId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: string - name: subscriberState in: path description: The attendance state value. It may be 'register', 'attend' or 'cancel' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventSubscriber' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/BatchResponseSubscriberVidResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write /marketing/marketing-events/2026-09/{objectId}/attendance/{subscriberState}/email-create: post: tags: - Event Attendees summary: Record Participants by Email with Marketing Event Object Id description: 'Records the participation of multiple HubSpot contacts in a Marketing Event using their email addresses. If a contact does not exist, it will be automatically created. The contactProperties field is used exclusively for creating new contacts and will not update properties of existing contacts. Additional Functionality: - Adds a timeline event to the contacts. Allowed Properties: For the state "attend": - joinedAt - leftAt' operationId: post-/marketing/marketing-events/2026-09/{objectId}/attendance/{subscriberState}/email-create_recordByEmail parameters: - name: objectId in: path description: The internal id of the marketing event in HubSpot. required: true style: simple explode: false schema: type: string - name: subscriberState in: path description: The attendance state value. It may be 'register', 'attend' or 'cancel' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputMarketingEventEmailSubscriber' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/BatchResponseSubscriberEmailResponse' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.marketing_events.write components: schemas: AppInfo: required: - id - name type: object properties: id: type: string description: The ID of the application name: type: string description: The name of the application AttendanceCounters: required: - attended - cancelled - noShows - registered type: object properties: attended: type: integer description: Number of attended contact records of a marketing event format: int32 cancelled: type: integer description: Number of cancelled contact records of a marketing event format: int32 noShows: type: integer description: Number of no-show contact records of a marketing event format: int32 registered: type: integer description: Number of registered contact records of a marketing event format: int32 BatchInputMarketingEventCreateRequestParams: required: - inputs type: object properties: inputs: type: array items: $ref: '#/components/schemas/MarketingEventCreateRequestParams' BatchInputMarketingEventEmailSubscriber: required: - inputs type: object properties: inputs: type: array description: List of marketing event details to create or update items: $ref: '#/components/schemas/MarketingEventEmailSubscriber' BatchInputMarketingEventExternalUniqueIdentifier: required: - inputs type: object properties: inputs: type: array items: $ref: '#/components/schemas/MarketingEventExternalUniqueIdentifier' BatchInputMarketingEventPublicObjectIdDeleteRequest: required: - inputs type: object properties: inputs: type: array items: $ref: '#/components/schemas/MarketingEventPublicObjectIdDeleteRequest' BatchInputMarketingEventPublicUpdateRequestFullV2: required: - inputs type: object properties: inputs: type: array items: $ref: '#/components/schemas/MarketingEventPublicUpdateRequestFullV2' BatchInputMarketingEventSubscriber: required: - inputs type: object properties: inputs: type: array description: List of HubSpot contacts to subscribe to the marketing event items: $ref: '#/components/schemas/MarketingEventSubscriber' BatchResponseMarketingEventPublicDefaultResponse: required: - completedAt - results - startedAt - status type: object properties: completedAt: type: string description: Timestamp of when the request was completed. format: date-time errors: type: array items: $ref: '#/components/schemas/StandardError' links: type: object additionalProperties: type: string description: Result of the request. numErrors: type: integer description: The number of errors that occurred during the request. format: int32 requestedAt: type: string description: Timestamp of when the request was sent. format: date-time results: type: array items: $ref: '#/components/schemas/MarketingEventPublicDefaultResponse' startedAt: type: string description: Timestamp of when the request started processing. format: date-time status: type: string description: Status of the response. enum: - CANCELED - COMPLETE - PENDING - PROCESSING BatchResponseMarketingEventPublicDefaultResponseV2: required: - completedAt - results - startedAt - status type: object properties: completedAt: type: string description: Timestamp of when the request was processed. format: date-time links: type: object additionalProperties: type: string description: Result object of the request. requestedAt: type: string description: Timestamp of when the request was sent. format: date-time results: type: array items: $ref: '#/components/schemas/MarketingEventPublicDefaultResponseV2' startedAt: type: string description: Timestamp of when the request started processing. format: date-time status: type: string description: The status of the response. enum: - CANCELED - COMPLETE - PENDING - PROCESSING BatchResponseMarketingEventPublicDefaultResponseV2WithErrors: required: - completedAt - results - startedAt - status type: object properties: completedAt: type: string description: Timestamp that represents when the request finished processing format: date-time errors: type: array items: $ref: '#/components/schemas/StandardError' links: type: object additionalProperties: type: string description: Result of the request numErrors: type: integer description: The number of errors that occurred during the processing format: int32 requestedAt: type: string description: Timestamp that represents when the request was made format: date-time results: type: array items: $ref: '#/components/schemas/MarketingEventPublicDefaultResponseV2' startedAt: type: string description: Timestamp that represents when the request started processing format: date-time status: type: string description: The status of the request processing enum: - CANCELED - COMPLETE - PENDING - PROCESSING BatchResponseSubscriberEmailResponse: required: - completedAt - results - startedAt - status type: object properties: completedAt: type: string description: Timestamp that represents when the request finished processing format: date-time errors: type: array items: $ref: '#/components/schemas/StandardError' links: type: object additionalProperties: type: string description: Result of the request numErrors: type: integer description: The number of errors that occurred during the processing format: int32 requestedAt: type: string description: Timestamp that represents when the request was made format: date-time results: type: array items: $ref: '#/components/schemas/SubscriberEmailResponse' startedAt: type: string description: Timestamp that represents when the request started processing format: date-time status: type: string description: The status of the request processing enum: - CANCELED - COMPLETE - PENDING - PROCESSING BatchResponseSubscriberVidResponse: required: - completedAt - results - startedAt - status type: object properties: completedAt: type: string description: Timestamp that represents when the request finished processing format: date-time errors: type: array items: $ref: '#/components/schemas/StandardError' links: type: object additionalProperties: type: string description: Result of the request numErrors: type: integer description: The number of errors that occurred during the processing format: int32 requestedAt: type: string description: Timestamp that represents when the request was made format: date-time results: type: array items: $ref: '#/components/schemas/SubscriberVidResponse' startedAt: type: string description: Timestamp that represents when the request started processing format: date-time status: type: string description: The status of the request processing enum: - CANCELED - COMPLETE - PENDING - PROCESSING CollectionResponseMarketingEventPublicReadResponseV2ForwardPaging: required: - results type: object properties: paging: $ref: '#/components/schemas/ForwardPaging' results: type: array items: $ref: '#/components/schemas/MarketingEventPublicReadResponseV2' CollectionResponseSearchPublicResponseWrapperNoPaging: required: - results type: object properties: results: type: array items: $ref: '#/components/schemas/SearchPublicResponseWrapper' CollectionResponseWithTotalMarketingEventIdentifiersResponse: required: - results - total type: object properties: paging: $ref: '#/components/schemas/Paging' results: type: array items: $ref: '#/components/schemas/MarketingEventIdentifiersResponse' total: type: integer format: int32 CollectionResponseWithTotalParticipationBreakdown: required: - results - total type: object properties: paging: $ref: '#/components/schemas/Paging' results: type: array items: $ref: '#/components/schemas/ParticipationBreakdown' total: type: integer format: int32 CollectionResponseWithTotalPublicList: required: - results - total type: object properties: paging: $ref: '#/components/schemas/Paging' results: type: array items: $ref: '#/components/schemas/PublicList' total: type: integer format: int32 ContactAssociation: required: - contactId - email type: object properties: contactId: type: string description: The internal ID of the contact in HubSpot email: type: string description: The email of the contact in HubSpot firstname: type: string description: The first name of the contact in HubSpot lastname: type: string description: The last name of the contact in HubSpot CrmPropertyWrapper: required: - name - value type: object properties: name: type: string description: The name of the property in the CRM value: type: string description: The value of the property in the CRM Error: required: - category - correlationId - message type: object properties: category: type: string description: The error category context: type: object additionalProperties: type: array items: type: string description: Context about the error condition example: '{invalidPropertyName=[propertyValue], missingScopes=[scope1, scope2]}' correlationId: type: string description: A unique identifier for the request. Include this value with any error reports or support tickets format: uuid example: aeb5f871-7f07-4993-9211-075dc63e7cbf errors: type: array description: further information about the error items: $ref: '#/components/schemas/ErrorDetail' links: type: object additionalProperties: type: string description: A map of link names to associated URIs containing documentation about the error or recommended remediation steps message: type: string description: A human readable message describing the error along with remediation steps where appropriate example: An error occurred subCategory: type: string description: A specific category that contains more specific detail about the error description: Represents an error response returned by the API when an operation fails. This component is used in various endpoints to provide detailed information about the error encountered. example: message: Invalid input (details will vary based on the error) correlationId: aeb5f871-7f07-4993-9211-075dc63e7cbf category: VALIDATION_ERROR links: knowledge-base: https://www.hubspot.com/products/service/knowledge-base ErrorDetail: required: - message type: object properties: code: type: string description: The status code associated with the error detail context: type: object additionalProperties: type: array items: type: string description: Context about the error condition example: '{missingScopes=[scope1, scope2]}' in: type: string description: The name of the field or parameter in which the error was found. message: type: string description: A human readable message describing the error along with remediation steps where appropriate subCategory: type: string description: A specific category that contains more specific detail about the error description: Represents detailed information about an error that occurred in the API. This component is used to provide additional context and specifics about errors, typically as part of an error response. EventDetailSettings: required: - appId - eventDetailsUrl type: object properties: appId: type: integer description: The id of the application the settings are for format: int32 eventDetailsUrl: type: string description: The url that will be used to fetch marketing event details by id EventDetailSettingsUrl: required: - eventDetailsUrl type: object properties: eventDetailsUrl: type: string description: 'The url that will be used to fetch marketing event details by id. Must contain a `%s` character sequence that will be substituted with the event id. For example: `https://my.event.app/events/%s`' ForwardPaging: type: object properties: next: $ref: '#/components/schemas/NextPage' description: Paging information for forward-only pagination. Contains the next page reference when more results are available; omitted or empty on the last page. MarketingEventAssociation: required: - marketingEventId - name type: object properties: externalAccountId: type: string description: The account ID that is associated with this marketing event in the external event application externalEventId: type: string description: The event ID that is associated with this marketing event in the external event application marketingEventId: type: string description: The internal ID of the marketing event in HubSpot name: type: string description: The name of the marketing event in HubSpot MarketingEventCompleteRequestParams: required: - endDateTime - startDateTime type: object properties: endDateTime: type: string description: The end date and time of the marketing event in ISO 8601 format format: date-time startDateTime: type: string description: The start date and time of the marketing event in ISO 8601 format format: date-time MarketingEventCreateRequestParams: required: - customProperties - eventName - eventOrganizer - externalAccountId - externalEventId type: object properties: customProperties: type: array description: 'A list of PropertyValues. These can be whatever kind of property names and values you want. However, they must already exist on the HubSpot account''s definition of the MarketingEvent Object. If they don''t they will be filtered out and not set. In order to do this you''ll need to create a new PropertyGroup on the HubSpot account''s MarketingEvent object for your specific app and create the Custom Property you want to track on that HubSpot account. Do not create any new default properties on the MarketingEvent object as that will apply to all HubSpot accounts. ' items: $ref: '#/components/schemas/PropertyValue' endDateTime: type: string description: The end date and time of the marketing event. format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled. Defaults to `false` eventCompleted: type: boolean description: Indicates if the marketing event has been completed. Defaults to `false` eventDescription: type: string description: The description of the marketing event. eventName: type: string description: The name of the marketing event. eventOrganizer: type: string description: The name of the organizer of the marketing event. eventType: type: string description: 'Describes what type of event this is. For example: `WEBINAR`, `CONFERENCE`, `WORKSHOP`' eventUrl: type: string description: A URL in the external event application where the marketing event can be managed. externalAccountId: type: string description: The accountId that is associated with this marketing event in the external event application. externalEventId: type: string description: The id of the marketing event in the external event application. startDateTime: type: string description: The start date and time of the marketing event. format: date-time MarketingEventDefaultResponse: required: - customProperties - eventName - eventOrganizer type: object properties: customProperties: type: array description: 'A list of PropertyValues. These can be whatever kind of property names and values you want. However, they must already exist on the HubSpot account''s definition of the MarketingEvent Object. If they don''t they will be filtered out and not set. In order to do this you''ll need to create a new PropertyGroup on the HubSpot account''s MarketingEvent object for your specific app and create the Custom Property you want to track on that HubSpot account. Do not create any new default properties on the MarketingEvent object as that will apply to all HubSpot accounts. ' items: $ref: '#/components/schemas/PropertyValue' endDateTime: type: string description: The end date and time of the marketing event. format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled. eventCompleted: type: boolean description: Indicates if the marketing event has been completed. eventDescription: type: string description: The description of the marketing event. eventName: type: string description: The name of the marketing event. eventOrganizer: type: string description: The name of the organizer of the marketing event. eventType: type: string description: The type of the marketing event. eventUrl: type: string description: The URL in the external event application where the marketing event can be managed. objectId: type: string description: The ID of the marketing event CRM object startDateTime: type: string description: The start date and time of the marketing event. format: date-time MarketingEventEmailSubscriber: required: - contactProperties - email - interactionDateTime - properties type: object properties: contactProperties: type: object additionalProperties: type: string description: The key-value set that contains properties of the contact. email: type: string description: The email address of the contact in HubSpot to associate with the event. interactionDateTime: type: integer description: Timestamp in milliseconds at which the contact subscribed to the event. format: int64 properties: type: object additionalProperties: type: string description: The key-value set that contains properties of the marketing event. MarketingEventExternalUniqueIdentifier: required: - appId - externalAccountId - externalEventId type: object properties: appId: type: integer description: The id of the application that created the marketing event in HubSpot. format: int32 externalAccountId: type: string description: The accountId that is associated with this marketing event in the external event application. externalEventId: type: string description: The id of the marketing event in the external event application. MarketingEventIdentifiersResponse: required: - externalEventId - marketingEventName - objectId type: object properties: appInfo: $ref: '#/components/schemas/AppInfo' externalAccountId: type: string description: The accountId that is associated with this marketing event in the external event application externalEventId: type: string description: The ID that is associated with this marketing event in the external event application marketingEventName: type: string description: The name of the marketing event objectId: type: string description: The internal ID of the marketing event in HubSpot CRM MarketingEventPublicDefaultResponse: required: - createdAt - customProperties - eventName - eventOrganizer - id - updatedAt type: object properties: createdAt: type: string description: The creation date and time of the marketing event. format: date-time customProperties: type: array description: 'A list of PropertyValues. These can be whatever kind of property names and values you want. However, they must already exist on the HubSpot account''s definition of the MarketingEvent Object. If they don''t they will be filtered out and not set. In order to do this you''ll need to create a new PropertyGroup on the HubSpot account''s MarketingEvent object for your specific app and create the Custom Property you want to track on that HubSpot account. Do not create any new default properties on the MarketingEvent object as that will apply to all HubSpot accounts. ' items: $ref: '#/components/schemas/PropertyValue' endDateTime: type: string description: The end date and time of the marketing event. format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled. eventCompleted: type: boolean description: Indicates if the marketing event has been completed. eventDescription: type: string description: The description of the marketing event. eventName: type: string description: The name of the marketing event. eventOrganizer: type: string description: The name of the organizer of the marketing event. eventType: type: string description: The type of the marketing event. eventUrl: type: string description: A URL in the external event application where the marketing event can be managed. id: type: string description: The ID of the marketing event CRM object. objectId: type: string description: The ID of the marketing event CRM object. startDateTime: type: string description: The start date and time of the marketing event. format: date-time updatedAt: type: string description: The update date and time of the marketing event. format: date-time MarketingEventPublicDefaultResponseV2: required: - createdAt - customProperties - eventName - objectId - updatedAt type: object properties: appInfo: $ref: '#/components/schemas/AppInfo' createdAt: type: string description: The creation date and time of the marketing event format: date-time customProperties: type: array items: $ref: '#/components/schemas/CrmPropertyWrapper' endDateTime: type: string description: The end date and time of the marketing event format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled eventCompleted: type: boolean description: Indicates if the marketing event has been completed eventDescription: type: string description: The description of the marketing event eventName: type: string description: The name of the marketing event eventOrganizer: type: string description: The name of the organizer of the marketing event eventType: type: string description: The type of the marketing event eventUrl: type: string description: A URL in the external event application where the marketing event can be managed objectId: type: string description: The internal ID of the marketing event in HubSpot startDateTime: type: string description: The start date and time of the marketing event format: date-time updatedAt: type: string description: The update date and time of the marketing event format: date-time MarketingEventPublicObjectIdDeleteRequest: required: - objectId type: object properties: objectId: type: string description: The internal ID of the marketing event in HubSpot MarketingEventPublicReadResponse: required: - attendees - cancellations - createdAt - customProperties - eventName - eventOrganizer - externalEventId - id - noShows - registrants - updatedAt type: object properties: attendees: type: integer description: The number of HubSpot contacts that attended this marketing event. format: int32 cancellations: type: integer description: The number of HubSpot contacts that registered for this marketing event, but later cancelled their registration. format: int32 createdAt: type: string description: The creation date and time of the marketing event. format: date-time customProperties: type: array description: 'A list of PropertyValues. These can be whatever kind of property names and values you want. However, they must already exist on the HubSpot account''s definition of the MarketingEvent Object. If they don''t they will be filtered out and not set. In order to do this you''ll need to create a new PropertyGroup on the HubSpot account''s MarketingEvent object for your specific app and create the Custom Property you want to track on that HubSpot account. Do not create any new default properties on the MarketingEvent object as that will apply to all HubSpot accounts. ' items: $ref: '#/components/schemas/PropertyValue' endDateTime: type: string description: The end date and time of the marketing event. format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled. eventCompleted: type: boolean description: Indicates if the marketing event has been completed. eventDescription: type: string description: The description of the marketing event. eventName: type: string description: The name of the marketing event. eventOrganizer: type: string description: The name of the organizer of the marketing event. eventType: type: string description: The type of the marketing event. eventUrl: type: string description: A URL in the external event application where the marketing event can be managed. externalEventId: type: string description: The id of the marketing event in the external event application. id: type: string description: The ID of the marketing event CRM object. noShows: type: integer description: The number of HubSpot contacts that registered for this marketing event, but did not attend. This field only had a value when the event is over. format: int32 objectId: type: string description: The ID of the marketing event CRM object. registrants: type: integer description: The number of HubSpot contacts that registered for this marketing event. format: int32 startDateTime: type: string description: The start date and time of the marketing event. format: date-time updatedAt: type: string description: The update date and time of the marketing event. format: date-time MarketingEventPublicReadResponseV2: required: - createdAt - customProperties - eventName - objectId - updatedAt type: object properties: appInfo: $ref: '#/components/schemas/AppInfo' attendees: type: integer description: Number of attended contact records of a marketing event format: int32 cancellations: type: integer description: Number of cancelled contact records of a marketing event format: int32 createdAt: type: string description: The creation date and time of the marketing event format: date-time customProperties: type: array items: $ref: '#/components/schemas/CrmPropertyWrapper' endDateTime: type: string description: The end date and time of the marketing event format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled eventCompleted: type: boolean description: Indicates if the marketing event has been completed eventDescription: type: string description: The description of the marketing event eventName: type: string description: The name of the marketing event eventOrganizer: type: string description: The name of the organizer of the marketing event eventStatus: type: string description: The status of the marketing event eventStatusV2: type: string eventType: type: string description: The type of the marketing event eventUrl: type: string description: A URL in the external event application where the marketing event can be managed externalEventId: type: string description: The ID that is associated with this marketing event in the external event application noShows: type: integer description: Number of no-show contact records of a marketing event format: int32 objectId: type: string description: The internal ID of the marketing event in HubSpot registrants: type: integer description: Number of registered contact records of a marketing event format: int32 startDateTime: type: string description: The start date and time of the marketing event format: date-time updatedAt: type: string description: The update date and time of the marketing event format: date-time MarketingEventPublicUpdateRequestFullV2: required: - customProperties - objectId type: object properties: customProperties: type: array items: $ref: '#/components/schemas/PropertyValue' endDateTime: type: string description: The end date and time of the marketing event format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled eventDescription: type: string description: The description of the marketing event eventName: type: string description: The name of the marketing event eventOrganizer: type: string description: The name of the organizer of the marketing event eventType: type: string description: The type of the marketing event eventUrl: type: string description: A URL in the external event application where the marketing event can be managed objectId: type: string description: The internal ID of the marketing event in HubSpot startDateTime: type: string description: The start date and time of the marketing event format: date-time MarketingEventPublicUpdateRequestV2: required: - customProperties type: object properties: customProperties: type: array items: $ref: '#/components/schemas/PropertyValue' endDateTime: type: string description: The end date and time of the marketing event format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled eventDescription: type: string description: The description of the marketing event eventName: type: string description: The name of the marketing event eventOrganizer: type: string description: The name of the organizer of the marketing event eventType: type: string description: The type of the marketing event eventUrl: type: string description: A URL in the external event application where the marketing event can be managed startDateTime: type: string description: The start date and time of the marketing event format: date-time MarketingEventSubscriber: required: - interactionDateTime - properties - vid type: object properties: interactionDateTime: type: integer description: Timestamp in milliseconds at which the contact subscribed to the event. format: int64 properties: type: object additionalProperties: type: string description: The key-value set of the properties of the contact vid: type: integer description: The ID of the contact in HubSpot format: int64 MarketingEventUpdateRequestParams: required: - customProperties type: object properties: customProperties: type: array description: 'A list of PropertyValues. These can be whatever kind of property names and values you want. However, they must already exist on the HubSpot account''s definition of the MarketingEvent Object. If they don''t they will be filtered out and not set. In order to do this you''ll need to create a new PropertyGroup on the HubSpot account''s MarketingEvent object for your specific app and create the Custom Property you want to track on that HubSpot account. Do not create any new default properties on the MarketingEvent object as that will apply to all HubSpot accounts. ' items: $ref: '#/components/schemas/PropertyValue' endDateTime: type: string description: The end date and time of the marketing event. format: date-time eventCancelled: type: boolean description: Indicates if the marketing event has been cancelled. Defaults to `false` eventCompleted: type: boolean description: Indicates if the marketing event has been completed. Defaults to `false` eventDescription: type: string description: The description of the marketing event. eventName: type: string description: The name of the marketing event. eventOrganizer: type: string description: The name of the organizer of the marketing event. eventType: type: string description: 'Describes what type of event this is. For example: `WEBINAR`, `CONFERENCE`, `WORKSHOP`' eventUrl: type: string description: A URL in the external event application where the marketing event can be managed. startDateTime: type: string description: The start date and time of the marketing event. format: date-time MaskedSubstring: required: - end - start type: object properties: end: type: integer format: int32 start: type: integer format: int32 MaskedSubstrings: required: - substrings type: object properties: substrings: type: array items: $ref: '#/components/schemas/MaskedSubstring' NextPage: required: - after type: object properties: after: type: string description: The ID element at the start of the page link: type: string description: Link to the next page description: Specifies the paging information needed to retrieve the next set of results in a paginated API response Paging: type: object properties: next: $ref: '#/components/schemas/NextPage' prev: $ref: '#/components/schemas/PreviousPage' ParticipationAssociations: required: - contact - marketingEvent type: object properties: contact: $ref: '#/components/schemas/ContactAssociation' marketingEvent: $ref: '#/components/schemas/MarketingEventAssociation' ParticipationBreakdown: required: - associations - createdAt - id - properties type: object properties: associations: $ref: '#/components/schemas/ParticipationAssociations' createdAt: type: string description: The creation time and date of the target marketing event format: date-time id: type: string description: The internal ID of the target marketing event properties: $ref: '#/components/schemas/ParticipationProperties' ParticipationProperties: required: - attendanceState - occurredAt type: object properties: attendanceDurationSeconds: type: integer description: The number of seconds the participation lasted format: int32 attendancePercentage: type: string description: Percentage of the participation duration relative to the event duration attendanceState: type: string description: The state of the participation enum: - ATTENDED - CANCELLED - EMPTY - NO_SHOW - REGISTERED occurredAt: type: integer description: Timestamp of when the participation occurred format: int64 PreviousPage: required: - before type: object properties: before: type: string description: A paging cursor token for retrieving previous pages. link: type: string description: A URL that can be used to retrieve the previous pages' results. description: specifies the paging information needed to retrieve the previous set of results in a paginated API response PropertyValue: required: - dataSensitivity - isEncrypted - isLargeValue - maskedSubstrings - name - persistenceTimestamp - requestId - selectedByUser - selectedByUserTimestamp - source - sourceId - sourceLabel - sourceMetadata - sourceUpstreamDeployable - sourceVid - timestamp - unit - updatedByUserId - useTimestampAsPersistenceTimestamp - value type: object properties: dataSensitivity: type: string description: Level of data sensitivity enum: - high - none - standard isEncrypted: type: boolean description: Indicates whether the property is encrypted isLargeValue: type: boolean description: Indicates whether the property value is stored as a large value in the storage maskedSubstrings: $ref: '#/components/schemas/MaskedSubstrings' name: type: string description: Name of custom property persistenceTimestamp: type: integer description: The timestamp that indicates when the value being written is persisted in storage format: int64 requestId: type: string description: The ID of the request selectedByUser: type: boolean description: Indicates whether the property is selected selectedByUserTimestamp: type: integer description: Timestamp of when the property was selected by the user format: int64 source: type: string description: Source of the property enum: - ACADEMY - ACCEPTANCE_TEST - ACTIVITY_AUTO_ASSOCIATE - ACTIVITY_LOG_REVERT - ADS - AI_GROUP - ANALYTICS - API - APPROVALS - ASSISTS - ASSOCIATIONS - AUTO_ASSOCIATE_BY_DOMAIN - AUTOMATION_JOURNEY - AUTOMATION_PLATFORM - AVATARS_SERVICE - BATCH_UPDATE - BCC_TO_CRM - BEHAVIORAL_EVENTS - BET_ASSIGNMENT - BET_CRM_CONNECTOR - BIDEN - BILLING - BOT - BREEZE_AGENT - CALCULATED - CENTRAL_EXCHANGE_RATES - CHATSPOT - CLONE_OBJECTS - COMMUNICATOR - COMPANIES - COMPANY_FAMILIES - COMPANY_INSIGHTS - CONNECTED_ACCOUNT - CONTACTS - CONTACTS_WEB - CONTENT_MEMBERSHIP - CONVERSATIONAL_ENRICHMENT - CONVERSATIONS - CRM_PROCESSES_PLATFORM - CRM_UI - CRM_UI_BULK_ACTION - CUSTOMER_AGENT - CUSTOMER_PORTAL - DATA_ENRICHMENT - DATA_QUALITY - DATASET - DEALS - DEFAULT - DELETE_OBJECTS - DI_WRITE_TO_CRM - EMAIL - EMAIL_INBOX_IMPORT - EMAIL_INTEGRATION - ENGAGEMENTS - EXTENSION - FILE_MANAGER - FLYWHEEL_PRODUCT_DATA_SYNC - FORECASTING - FORM - FORWARD_TO_CRM - GMAIL_INTEGRATION - GOALS - HEISENBERG - HELP_DESK - HELP_DESK_AI - IMPORT - INTEGRATION - INTEGRATIONS_PLATFORM - INTEGRATIONS_SYNC - INTENT - INTERNAL_PROCESSING - LEADIN - LEGAL_BASIS_REMEDIATION - MARKET_SOURCING - MARKETPLACE - MARKETS - MEETINGS - MERGE_COMPANIES - MERGE_CONTACTS - MERGE_OBJECTS - MERGE_REVERT_OBJECTS - MICROAPPS - MIGRATION - MOBILE_ANDROID - MOBILE_IOS - PAYMENTS - PIPELINE_SETTINGS - PLAYBOOKS - PORTAL_OBJECT_SYNC - PORTAL_USER_ASSOCIATOR - PRESENTATIONS - PRIMARY_AUTOMATION - PROPERTY_DEFAULT_VALUE - PROPERTY_RESTORE - PROPERTY_SETTINGS - PROSPECTING_AGENT - QUOTAS - QUOTES - RECYCLING_BIN - RESTORE_OBJECTS - REVENUE_PLATFORM - SALES - SALES_MESSAGES - SALESFORCE - SEQUENCES - SETTINGS - SIDEKICK - SIGNALS - SLACK_INTEGRATION - SMART_DATA_CAPTURE - SOCIAL - SUCCESS - TALLY - TASK - UNKNOWN - WAL_INCREMENTAL - WORK_UI - WORKFLOW_CONTACT_DELETE_ACTION - WORKFLOWS sourceId: type: string description: ID of the source of the property sourceLabel: type: string description: Label of the source of the property sourceMetadata: type: string description: Source metadata encoded as a base64 string sourceUpstreamDeployable: type: string description: Indicates which upstream service made the property change sourceVid: type: array description: The unique identifier associated with the source. items: type: integer format: int64 timestamp: type: integer description: Timestamp of the request format: int64 unit: type: string description: The unit updatedByUserId: type: integer description: The ID of the user who last updated the property format: int32 useTimestampAsPersistenceTimestamp: type: boolean description: Indicates if the persistence timestamp is the same as storage version timestamp value: type: string description: Custom property value description: Represents a single custom property of a marketing event, storing its name, value, metadata (like source, timestamp, and sensitivity), and related audit information for tracking changes. PublicList: required: - listId - listVersion - name - objectTypeId - processingStatus - processingType type: object properties: createdAt: type: string description: Timestamp of the creation of the list format: date-time createdById: type: string description: The ID of the user who created the list deletedAt: type: string description: Timestamp of the deletion of the list format: date-time filtersUpdatedAt: type: string description: Timestamp of the last update of the list filters format: date-time listId: type: string description: An internal ID of the list listVersion: type: integer description: A number that represents a version of the list format: int32 name: type: string description: The name of the list objectTypeId: type: string description: The internal ID of the object type of the list processingStatus: type: string description: Represents the current processing status of the list processingType: type: string description: Processing type of the list size: type: integer description: The size of the result list format: int64 updatedAt: type: string description: Timestamp of the last update of the list format: date-time updatedById: type: string description: The ID of the user who last updated the list SearchPublicResponseWrapper: required: - appId - externalAccountId - externalEventId - objectId type: object properties: appId: type: integer description: The ID of the source application of the marketing event format: int32 externalAccountId: type: string description: The account ID associated with this marketing event in the external application externalEventId: type: string description: The ID of the marketing event in the external event application objectId: type: string description: The internal ID of the marketing event in HubSpot StandardError: required: - category - context - errors - links - message - status type: object properties: category: type: string description: The category of the error context: type: object additionalProperties: type: array items: type: string description: The object that contains details of the errors errors: type: array description: The detailed error objects. items: $ref: '#/components/schemas/ErrorDetail' id: type: string description: The ID of the request links: type: object additionalProperties: type: string description: Results of the request message: type: string description: A human readable message describing the error along with remediation steps where appropriate status: type: string description: Status of the response subCategory: type: object properties: {} description: The Sub-category of the error description: Ye olde error SubscriberEmailResponse: required: - email - vid type: object properties: email: type: string description: The email of the contact vid: type: integer description: The internal ID of the contact format: int64 SubscriberVidResponse: required: - vid type: object properties: vid: type: integer description: The internal ID of the contact format: int64 responses: Error: description: An error occurred. content: '*/*': schema: $ref: '#/components/schemas/Error' securitySchemes: developer_hapikey: type: apiKey name: hapikey in: query oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://app.hubspot.com/oauth/authorize tokenUrl: https://api.hubapi.com/oauth/v1/token scopes: crm.objects.marketing_events.read: '' crm.objects.marketing_events.write: '' developers-read: '' developers-write: '' private_apps: type: apiKey name: private-app in: header private_apps_legacy: type: apiKey name: private-app-legacy in: header x-hubspot-available-client-libraries: - Node - Python - Ruby - PHP x-hubspot-product-tier-requirements: marketing: FREE sales: FREE service: FREE cms: FREE commerce: FREE crmHub: FREE dataHub: FREE