Attendees
Event attendee management — externalId scoped by event, email optional, customQrString writable, checkInToken read-only, bulk upsert
Returns paginated attendees for an event. Requires organizer_api_token with scope org (any event in org) or event (this event only). Pure token-level, not user. Supports limit/offset and optional externalId/email/addOnId filter (addOnId returns only attendees who have selected that addon — exists in attendee_add_on). Token read permission suffices.
Organizer API token — Authorization: Bearer evtx_live_… (Org/Event scoped, read/write).
Event UUID
Limit 1-100, default 50
50Example: 50Offset
0Example: 0Filter by externalId (provider ID)
ext_123Filter by email
alex@acme.comFilter by addon ID — returns only attendees who have selected this addon (exists in attendee_add_on for this event)
473ed8f7-deae-4bee-bb32-eafd860aebe4Free-text search across firstName, lastName, email, name, organization, externalId (case-insensitive substring)
alexFilter by registration status
confirmedPossible values: Filter by approval status
approvedPossible values: Filter by suspend status
nonePossible values: Comma-separated role tags — matches attendees with ANY of the listed tags (OR)
exhibitor,speakerCustom field key to search within
dietary_restrictionsSubstring to match within the custom field value (case-insensitive)
veganSort field (default: createdAt)
createdAtPossible values: Sort direction (default: desc)
descPossible values: Paginated list
3500Validation error (invalid sortBy, registrationStatus, approvalStatus, suspendStatus, sortDirection)
Unauthorized — missing or invalid organizer token
Forbidden — token scope mismatch or read required
GET /v2/events/{eventId}/attendees HTTP/1.1
Host: api.eventx.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"eventId": "aaff0556-85b5-4ac4-a484-486c7f319c08",
"externalId": "ext_123",
"email": "alex@acme.com",
"customQrString": "WELCOME-2026-QR-A1B2C3",
"checkInToken": "ci_9f3k2a1b",
"name": "Alex Chen",
"firstName": "Alex",
"lastName": "Chen",
"jobTitle": "Engineer",
"organization": "Acme Inc",
"city": "Hong Kong",
"country": "HK",
"areaCode": "852",
"contactNo": "98765432",
"roleTags": [
"visitor"
],
"customFields": {},
"approvalStatus": "waitlisted",
"registrationStatus": "pending",
"suspendStatus": "none",
"createdAt": "2026-08-17T08:28:35.429Z",
"updatedAt": "2026-08-17T08:28:35.429Z",
"addOns": [
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"addOnId": "473ed8f7-deae-4bee-bb32-eafd860aebe4",
"qty": 1,
"selectionStatus": "waitlisted",
"confirmedAt": null,
"createdAt": "2026-08-17T08:28:35.518Z",
"updatedAt": "2026-08-17T09:36:09.620Z"
}
]
}
],
"total": 3,
"limit": 50,
"offset": 0
}Creates attendee — supply externalId at creation to enable later provider-based update (ext_123). Email optional (no unique per event). Custom QR string writable (customCheckInToken), checkInToken read-only ignored. Requires organizer_api_token write, org/event scoped.
Organizer API token — Authorization: Bearer evtx_live_… (Org/Event scoped, read/write).
Event UUID
Create attendee — supply externalId at creation to enable later update by provider ID (ext_123). Email optional. Custom QR string writable; checkInToken read-only ignored. customFields must use custom-field ids from GET /custom-fields, wrapped as {value: ...}.
Provider external ID, scoped by event, optional but recommended for upsert
ext_123Contact email (maps to invitation_email, optional, no unique)
alex@acme.comCustom QR string (maps to customCheckInToken, writable)
WELCOME-2026-QR-A1B2C3Alex ChenAlexChenEngineerAcme IncHong KongHK85298765432Visible role tags (visitor/organizer/host/speaker/exhibitor/booth-rep). Defaults to ["visitor"] when omitted — tag-less attendees are hidden from the portal people list.
["visitor"]Created
Attendee row — scoped by organizer_api_token (Org or Event, not user). Token permissions: read allows GET, write allows all. See info.description for full token scope.
Attendee ID, UUID
6daeaa1f-f82f-4068-a8b2-712894b00184Event ID
aaff0556-85b5-4ac4-a484-486c7f319c08Provider external ID, scoped by event (UNIQUE(event_id, externalId))
ext_123Contact email (maps to invitation_email, optional)
alex@acme.comCustom QR string (maps to customCheckInToken, writable)
WELCOME-2026-QR-A1B2C3System check-in token, read-only (from check_in_token, ignored on write)
ci_9f3k2a1bAlex ChenAlexChenEngineerAcme IncHong KongHK85298765432["visitor"]waitlistedpendingnone2026-08-17T08:28:35.429Z2026-08-17T08:28:35.429ZValidation error
Unauthorized
Forbidden
POST /v2/events/{eventId}/attendees HTTP/1.1
Host: api.eventx.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"externalId": "ext_123",
"email": "alex@acme.com",
"customQrString": "WELCOME-2026-QR-A1B2C3",
"name": "Alex Chen"
}{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"eventId": "aaff0556-85b5-4ac4-a484-486c7f319c08",
"externalId": "ext_123",
"email": "alex@acme.com",
"customQrString": "WELCOME-2026-QR-A1B2C3",
"checkInToken": "ci_9f3k2a1b",
"name": "Alex Chen",
"firstName": "Alex",
"lastName": "Chen",
"jobTitle": "Engineer",
"organization": "Acme Inc",
"city": "Hong Kong",
"country": "HK",
"areaCode": "852",
"contactNo": "98765432",
"roleTags": [
"visitor"
],
"customFields": {},
"approvalStatus": "waitlisted",
"registrationStatus": "pending",
"suspendStatus": "none",
"createdAt": "2026-08-17T08:28:35.429Z",
"updatedAt": "2026-08-17T08:28:35.429Z",
"addOns": [
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"addOnId": "473ed8f7-deae-4bee-bb32-eafd860aebe4",
"qty": 1,
"selectionStatus": "waitlisted",
"confirmedAt": null,
"createdAt": "2026-08-17T08:28:35.518Z",
"updatedAt": "2026-08-17T09:36:09.620Z"
}
]
}Get single attendee by UUID — token must be scoped to its event/org.
Organizer API token — Authorization: Bearer evtx_live_… (Org/Event scoped, read/write).
Event UUID
Attendee UUID
Attendee
Attendee row — scoped by organizer_api_token (Org or Event, not user). Token permissions: read allows GET, write allows all. See info.description for full token scope.
Attendee ID, UUID
6daeaa1f-f82f-4068-a8b2-712894b00184Event ID
aaff0556-85b5-4ac4-a484-486c7f319c08Provider external ID, scoped by event (UNIQUE(event_id, externalId))
ext_123Contact email (maps to invitation_email, optional)
alex@acme.comCustom QR string (maps to customCheckInToken, writable)
WELCOME-2026-QR-A1B2C3System check-in token, read-only (from check_in_token, ignored on write)
ci_9f3k2a1bAlex ChenAlexChenEngineerAcme IncHong KongHK85298765432["visitor"]waitlistedpendingnone2026-08-17T08:28:35.429Z2026-08-17T08:28:35.429ZUnauthorized
Forbidden
Not found
GET /v2/events/{eventId}/attendees/{attendeeId} HTTP/1.1
Host: api.eventx.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"eventId": "aaff0556-85b5-4ac4-a484-486c7f319c08",
"externalId": "ext_123",
"email": "alex@acme.com",
"customQrString": "WELCOME-2026-QR-A1B2C3",
"checkInToken": "ci_9f3k2a1b",
"name": "Alex Chen",
"firstName": "Alex",
"lastName": "Chen",
"jobTitle": "Engineer",
"organization": "Acme Inc",
"city": "Hong Kong",
"country": "HK",
"areaCode": "852",
"contactNo": "98765432",
"roleTags": [
"visitor"
],
"customFields": {},
"approvalStatus": "waitlisted",
"registrationStatus": "pending",
"suspendStatus": "none",
"createdAt": "2026-08-17T08:28:35.429Z",
"updatedAt": "2026-08-17T08:28:35.429Z",
"addOns": [
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"addOnId": "473ed8f7-deae-4bee-bb32-eafd860aebe4",
"qty": 1,
"selectionStatus": "waitlisted",
"confirmedAt": null,
"createdAt": "2026-08-17T08:28:35.518Z",
"updatedAt": "2026-08-17T09:36:09.620Z"
}
]
}Update attendee — identified by either attendeeId (this route) or externalId (via the by-external route); one of the two is required. Supply externalId/customQrString/email etc. checkInToken ignored (read-only). Requires write permission.
Organizer API token — Authorization: Bearer evtx_live_… (Org/Event scoped, read/write).
Event UUID
Attendee UUID
Partial update — at least one field, checkInToken ignored (read-only). customFields are merged, not replaced.
ext_123alex_new@acme.comUPDATED-QR-999Alex UpdatedAlexChenEngineerAcme IncHong KongHK85298765432Replaces visible role tags. Defaults to ["visitor"] on create when omitted; omitted on PATCH leaves tags unchanged.
["visitor"]Updated
Attendee row — scoped by organizer_api_token (Org or Event, not user). Token permissions: read allows GET, write allows all. See info.description for full token scope.
Attendee ID, UUID
6daeaa1f-f82f-4068-a8b2-712894b00184Event ID
aaff0556-85b5-4ac4-a484-486c7f319c08Provider external ID, scoped by event (UNIQUE(event_id, externalId))
ext_123Contact email (maps to invitation_email, optional)
alex@acme.comCustom QR string (maps to customCheckInToken, writable)
WELCOME-2026-QR-A1B2C3System check-in token, read-only (from check_in_token, ignored on write)
ci_9f3k2a1bAlex ChenAlexChenEngineerAcme IncHong KongHK85298765432["visitor"]waitlistedpendingnone2026-08-17T08:28:35.429Z2026-08-17T08:28:35.429ZValidation
Unauthorized
Forbidden
Not found
PATCH /v2/events/{eventId}/attendees/{attendeeId} HTTP/1.1
Host: api.eventx.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 366
{
"externalId": "ext_123",
"email": "alex_new@acme.com",
"customQrString": "UPDATED-QR-999",
"name": "Alex Updated",
"firstName": "Alex",
"lastName": "Chen",
"jobTitle": "Engineer",
"organization": "Acme Inc",
"city": "Hong Kong",
"country": "HK",
"areaCode": "852",
"contactNo": "98765432",
"customFields": {
"7180eec9-e955-462a-bfd2-ed75d37169d2": {
"value": "Patched"
}
},
"roleTags": [
"visitor"
]
}{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"eventId": "aaff0556-85b5-4ac4-a484-486c7f319c08",
"externalId": "ext_123",
"email": "alex@acme.com",
"customQrString": "WELCOME-2026-QR-A1B2C3",
"checkInToken": "ci_9f3k2a1b",
"name": "Alex Chen",
"firstName": "Alex",
"lastName": "Chen",
"jobTitle": "Engineer",
"organization": "Acme Inc",
"city": "Hong Kong",
"country": "HK",
"areaCode": "852",
"contactNo": "98765432",
"roleTags": [
"visitor"
],
"customFields": {},
"approvalStatus": "waitlisted",
"registrationStatus": "pending",
"suspendStatus": "none",
"createdAt": "2026-08-17T08:28:35.429Z",
"updatedAt": "2026-08-17T08:28:35.429Z",
"addOns": [
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"addOnId": "473ed8f7-deae-4bee-bb32-eafd860aebe4",
"qty": 1,
"selectionStatus": "waitlisted",
"confirmedAt": null,
"createdAt": "2026-08-17T08:28:35.518Z",
"updatedAt": "2026-08-17T09:36:09.620Z"
}
]
}Get attendee by provider externalId scoped by event — use after creating with externalId (ext_123). Token must be scoped to event/org.
Organizer API token — Authorization: Bearer evtx_live_… (Org/Event scoped, read/write).
Event UUID
Provider external ID, scoped by event
ext_123Attendee
Attendee row — scoped by organizer_api_token (Org or Event, not user). Token permissions: read allows GET, write allows all. See info.description for full token scope.
Attendee ID, UUID
6daeaa1f-f82f-4068-a8b2-712894b00184Event ID
aaff0556-85b5-4ac4-a484-486c7f319c08Provider external ID, scoped by event (UNIQUE(event_id, externalId))
ext_123Contact email (maps to invitation_email, optional)
alex@acme.comCustom QR string (maps to customCheckInToken, writable)
WELCOME-2026-QR-A1B2C3System check-in token, read-only (from check_in_token, ignored on write)
ci_9f3k2a1bAlex ChenAlexChenEngineerAcme IncHong KongHK85298765432["visitor"]waitlistedpendingnone2026-08-17T08:28:35.429Z2026-08-17T08:28:35.429ZUnauthorized
Forbidden
Not found
GET /v2/events/{eventId}/attendees/by-external/{externalId} HTTP/1.1
Host: api.eventx.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"eventId": "aaff0556-85b5-4ac4-a484-486c7f319c08",
"externalId": "ext_123",
"email": "alex@acme.com",
"customQrString": "WELCOME-2026-QR-A1B2C3",
"checkInToken": "ci_9f3k2a1b",
"name": "Alex Chen",
"firstName": "Alex",
"lastName": "Chen",
"jobTitle": "Engineer",
"organization": "Acme Inc",
"city": "Hong Kong",
"country": "HK",
"areaCode": "852",
"contactNo": "98765432",
"roleTags": [
"visitor"
],
"customFields": {},
"approvalStatus": "waitlisted",
"registrationStatus": "pending",
"suspendStatus": "none",
"createdAt": "2026-08-17T08:28:35.429Z",
"updatedAt": "2026-08-17T08:28:35.429Z",
"addOns": [
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"addOnId": "473ed8f7-deae-4bee-bb32-eafd860aebe4",
"qty": 1,
"selectionStatus": "waitlisted",
"confirmedAt": null,
"createdAt": "2026-08-17T08:28:35.518Z",
"updatedAt": "2026-08-17T09:36:09.620Z"
}
]
}Update attendee by externalId — identified by either externalId (this route) or attendeeId (via the by-attendee-id route); one of the two is required. Idempotent. Supply customQrString/email etc. checkInToken ignored. Use after creation with externalId.
Organizer API token — Authorization: Bearer evtx_live_… (Org/Event scoped, read/write).
Event UUID
Provider external ID, scoped by event
ext_123Partial update — at least one field, checkInToken ignored (read-only). customFields are merged, not replaced.
ext_123alex_new@acme.comUPDATED-QR-999Alex UpdatedAlexChenEngineerAcme IncHong KongHK85298765432Replaces visible role tags. Defaults to ["visitor"] on create when omitted; omitted on PATCH leaves tags unchanged.
["visitor"]Updated
Attendee row — scoped by organizer_api_token (Org or Event, not user). Token permissions: read allows GET, write allows all. See info.description for full token scope.
Attendee ID, UUID
6daeaa1f-f82f-4068-a8b2-712894b00184Event ID
aaff0556-85b5-4ac4-a484-486c7f319c08Provider external ID, scoped by event (UNIQUE(event_id, externalId))
ext_123Contact email (maps to invitation_email, optional)
alex@acme.comCustom QR string (maps to customCheckInToken, writable)
WELCOME-2026-QR-A1B2C3System check-in token, read-only (from check_in_token, ignored on write)
ci_9f3k2a1bAlex ChenAlexChenEngineerAcme IncHong KongHK85298765432["visitor"]waitlistedpendingnone2026-08-17T08:28:35.429Z2026-08-17T08:28:35.429ZValidation
Unauthorized
Forbidden
Not found
PATCH /v2/events/{eventId}/attendees/by-external/{externalId} HTTP/1.1
Host: api.eventx.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 366
{
"externalId": "ext_123",
"email": "alex_new@acme.com",
"customQrString": "UPDATED-QR-999",
"name": "Alex Updated",
"firstName": "Alex",
"lastName": "Chen",
"jobTitle": "Engineer",
"organization": "Acme Inc",
"city": "Hong Kong",
"country": "HK",
"areaCode": "852",
"contactNo": "98765432",
"customFields": {
"7180eec9-e955-462a-bfd2-ed75d37169d2": {
"value": "Patched"
}
},
"roleTags": [
"visitor"
]
}{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"eventId": "aaff0556-85b5-4ac4-a484-486c7f319c08",
"externalId": "ext_123",
"email": "alex@acme.com",
"customQrString": "WELCOME-2026-QR-A1B2C3",
"checkInToken": "ci_9f3k2a1b",
"name": "Alex Chen",
"firstName": "Alex",
"lastName": "Chen",
"jobTitle": "Engineer",
"organization": "Acme Inc",
"city": "Hong Kong",
"country": "HK",
"areaCode": "852",
"contactNo": "98765432",
"roleTags": [
"visitor"
],
"customFields": {},
"approvalStatus": "waitlisted",
"registrationStatus": "pending",
"suspendStatus": "none",
"createdAt": "2026-08-17T08:28:35.429Z",
"updatedAt": "2026-08-17T08:28:35.429Z",
"addOns": [
{
"id": "6daeaa1f-f82f-4068-a8b2-712894b00184",
"addOnId": "473ed8f7-deae-4bee-bb32-eafd860aebe4",
"qty": 1,
"selectionStatus": "waitlisted",
"confirmedAt": null,
"createdAt": "2026-08-17T08:28:35.518Z",
"updatedAt": "2026-08-17T09:36:09.620Z"
}
]
}Bulk upsert 1-50 attendees — upsert key externalId if present else email (no unique on email, app-level fallback). Each item independent, partial success allowed. Requires organizer_api_token write, org/event scoped. Fits bodyLimit 1MB and rateLimit 60/60s. Per-item autonomous, idempotent via UNIQUE(event_id, externalId).
Organizer API token — Authorization: Bearer evtx_live_… (Org/Event scoped, read/write).
Event UUID
Bulk upsert — upsert key externalId if present else email. Each item independent, idempotent. Requires organizer_api_token write, org/event scoped.
Per-item results
Validation
Unauthorized
Forbidden
POST /v2/events/{eventId}/attendees/bulk-upsert HTTP/1.1
Host: api.eventx.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 140
{
"attendees": [
{
"externalId": "ext_123",
"email": "alex@acme.com",
"customQrString": "QR-A",
"name": "Alex"
},
{
"email": "bob@acme.com",
"name": "Bob"
}
]
}{
"results": [
{
"index": 0,
"attendeeId": "a1b2c3d4-...",
"externalId": "ext_123",
"status": "created",
"error": {
"code": "ERR_PUBLIC_API_VALIDATION_ERROR",
"message": "externalId or email required"
}
}
]
}Last updated