Read registration and attendee data
Synchronize successful registrations, handle multiple attendees, and match submitted values by field ID.
Use the registrations endpoint when an approved integration needs successful bookings and attendee details for an event.
GET /v1/events/{eventId}/registrations
Required scope: registrations:readThis endpoint contains personal data. Store, transmit, and retain it only for the approved integration purpose.
Request registrations
curl --request GET \
'https://api.meraevents.com/v1/events/501/registrations?limit=25' \
--header 'x-api-key: YOUR_SECRET_TOKEN'The endpoint returns only successful registrations. Incomplete and deleted registrations are omitted.
Understand the response hierarchy
Each item in data is one registration or booking. Its attendees array contains every attendee included in that registration.
{
"data": [
{
"eventSignupId": 9002,
"registrationNumber": 7002,
"barcodeNumber": "MEV-9002",
"registeredAt": "2026-08-10T09:30:00.000Z",
"attendees": [
{
"attendeeId": 11,
"ticketType": "Delegate",
"name": "Alice Client",
"email": "alice@example.com",
"phoneNumber": "+91 90000 00000",
"city": "Hyderabad",
"companyName": "Client Corp",
"designation": "Director",
"address": "Road No. 1",
"isPrimary": true,
"customFields": [
{
"fieldId": 105,
"fieldName": "Company Name",
"value": "Client Corp"
}
]
},
{
"attendeeId": 12,
"ticketType": "Workshop Add-on",
"name": "Alice Client",
"email": "alice@example.com",
"phoneNumber": "+91 90000 00000",
"city": "Hyderabad",
"companyName": "Client Corp",
"designation": "Director",
"address": "Road No. 1",
"isPrimary": false,
"customFields": []
}
]
}
],
"nextCursor": "8990",
"hasMore": true
}Registration-level fields
| Field | Meaning |
|---|---|
eventSignupId | Internal booking identifier |
registrationNumber | Customer-facing registration number |
barcodeNumber | Booking-level barcode shared by the registration's attendees |
registeredAt | ISO 8601 date and time at which the registration was created |
attendees | People and add-ons included in this registration |
Do not treat barcodeNumber as a unique attendee identifier. Use attendeeId to distinguish attendees within the same booking.
Attendee-level fields
Each attendee has a stable attendeeId, ticket name, primary-attendee status, normalized contact/company fields, and attendee-scoped customFields.
The normalized fields are provided for common integrations:
nameemailphoneNumbercitycompanyNamedesignationaddress
They are nullable because an event may not collect them. For add-on tickets, normalized values can fall back to the primary attendee when the add-on has no separate answer.
customFields contains values stored directly for that attendee. It does not copy fallback values from another attendee.
Multiple attendees in one registration
Process every object in attendees; do not read only the first attendee.
- The primary attendee has
isPrimary: true. - Secondary attendees have their own
attendeeIdand may have different tickets and answers. - An add-on can inherit normalized display fields from the primary attendee while keeping an empty attendee-specific
customFieldsarray. - The registration number, barcode, and registration date belong to the booking and should not be duplicated as attendee-unique identifiers.
For relational storage, a useful model is:
Registration (eventSignupId)
└── Attendee (attendeeId)
└── Custom field answer (fieldId, value)Match custom-field answers
For every answer, join:
customFields[].fieldId = custom-fields.fields[].idUse the definition returned by GET /custom-fields for the current field label, type, options, group, and ticket applicability. Treat the fieldName included with an answer as display-only.
Paginate by registration
limit controls the number of registrations per page, not the total number of attendees. A page of 25 registrations can contain more than 25 attendees.
Continue requesting pages until hasMore is false:
- Make the first request without
cursor. - Process all registrations and all nested attendees.
- When
hasMoreistrue, sendnextCursoras the next request'scursor. - Stop when
hasMoreisfalseandnextCursorisnull.
Do not calculate or modify the cursor yourself.
Next step
Review pagination, errors, and reliable syncs before running a complete registration export.