RSVPs
RSVPs: available fields, filters, associations, and API operations.
Operations
Event-level resource. Every operation requires an enabled Core API scope for this resource and access to the URL context.
GETList records
/api/core/organizations/123/events/456/rsvps
Permission: Read access. Readable fields, query filters and related objects must be selected in the scope.
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request GET \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/rsvps' \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}"Response: 200 OK. A JSON:API data array and pagination metadata. Default page size 30; maximum 100.
View response structure
{
"data": [
{
"id": "1201",
"type": "rsvp"
}
],
"meta": {
"total_count": 1,
"total_pages": 1,
"current_page": 1
}
}Illustrative, with no additional response fields selected.
Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 429 for rate limits. Troubleshooting and retry guidance.
GETGet a record
/api/core/organizations/123/events/456/rsvps/1201
Permission: Read access. Readable fields, query filters and related objects must be selected in the scope.
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request GET \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/rsvps/1201' \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}"Response: 200 OK. A JSON:API data object; fields depend on the token scope.
View response structure
{
"data": {
"id": "1201",
"type": "rsvp"
}
}Illustrative, with no additional response fields selected.
Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 429 for rate limits. Troubleshooting and retry guidance.
POSTCreate a record
/api/core/organizations/123/events/456/rsvps
Permission: Write access with the create action. Every request key must map to an allowed writable field; unconfigured inputs are ignored.
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request POST \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/rsvps' \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--data-raw '{
"timeslot_id": 5501,
"registrant_id": 1201
}'Response: 201 Created. Save data.id for later requests. Attributes come from Write-response fields.
View response structure
{
"data": {
"id": "1201",
"type": "rsvp"
}
}Illustrative, with no additional response fields selected.
Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 422 for validation or business rules; 429 for rate limits. Troubleshooting and retry guidance.
PATCHUpdate a record
/api/core/organizations/123/events/456/rsvps/9201
Permission: Write access with the update action. Every request key must map to an allowed writable field; unconfigured inputs are ignored.
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request PATCH \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/rsvps/9201' \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--data-raw '{
"checked_in_at": "2026-09-03T09:02:00Z"
}'Response: 200 OK. Attributes come from Write-response fields; these can differ from readable fields.
View response structure
{
"data": {
"id": "1201",
"type": "rsvp"
}
}Illustrative, with no additional response fields selected.
Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 422 for validation or business rules; 429 for rate limits. Troubleshooting and retry guidance.
PATCH changes supplied fields. Collection inputs can replace existing values; read the input notes before sending arrays.
DELETEDelete a record
/api/core/organizations/123/events/456/rsvps/1201
Permission: Write access with the delete action.
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request DELETE \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/rsvps/1201' \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}"Response: 204 No Content, with an empty response body.
Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 422 for validation or business rules; 429 for rate limits. Troubleshooting and retry guidance.
Deletion can remove related data or be refused by resource constraints. Read the resource notes and confirm the target before using this operation.
Path: events/{event_id}/rsvps
Methods: GET collection/record, POST, PATCH, DELETE.
Fields, filters and associations
Browse 7 response fields
The scope chooses these response fields. id is always returned. Configuration names and response names can differ.
event-id- Scope field:
event_id timeslot-id- Scope field:
timeslot_id registrant-id- Scope field:
registrant_id checked-in-at- Scope field:
checked_in_at status- Scope field:
status created-at- Scope field:
created_at updated-at- Scope field:
updated_at
- Filters:
timeslot_id,registrant_id,status,checked_in,created_from,created_to,updated_from,updated_to,sponsor_id. - Associations:
timeslot:title,start-time,end-time;registrant:first-name,last-name,email,company-name.
- Row restriction: named
sponsor, limiting RSVPs to a sponsor’s main- or session-sponsored content.
GET .../rsvps?checked_in=true&include=timeslot,registrant
POST inputs: timeslot_id and registrant_id, plus optional status and checked_in_at.
{
"timeslot_id": 5501,
"registrant_id": 1201
}
PATCH inputs: status and checked_in_at.
{ "status": "attended" }
{ "checked_in_at": "2026-09-03T09:02:00Z" }
The timeslot and registrant must belong to the event. Sponsor-restricted scopes can create and manage RSVPs only for sponsored sessions. Create, update and delete use Brella’s attendance-registration services, so capacity, notification and bookmark side effects are preserved.
RSVP status
status is tentative, confirmed, attended, or rejected. Filter on it with ?status=attended. Confirmed and attended RSVPs take a seat in the session. A tentative RSVP is waiting for approval or on the waitlist.
- To send
status, map it in the scope’s Writable fields. An unmappedstatusis ignored; an otherwise valid POST returns201and PATCH returns200. Scopes created beforestatusbecame writable need the mapping added. See token scopes. attendedrecords attendance without a check-in time and keeps any existingchecked-in-at.confirmed,tentative, andrejectedclear an existing check-in time. Sending one of them with a non-nullchecked_in_atreturns422.- Clearing a recorded check-in time also needs
checked_in_atmapped in Writable fields. Without it, a status change that would clear the time returns403and nothing changes. - Creating a confirmed or attended RSVP, or moving a tentative or rejected RSVP to one of those statuses, returns
422when the session is full. - A mapped
statusofnull, a boolean, an empty string, a number, or an unknown string returns422. Arrays and objects return400. - Moving a tentative RSVP to another status can send the attendee an approval, rejection or waitlist notification.
How status and checked_in_at combine:
| Request | Result |
|---|---|
POST without status or checked_in_at |
The session’s rules apply: tentative when it requires approval or the RSVP joins its waitlist, otherwise confirmed. |
POST with status |
Uses the status sent, including for sessions that require approval. |
checked_in_at set to a time or "now", without status |
Stores the time and sets attended. "now" uses the server’s current time. |
status: "attended" |
Sets attended. On PATCH, any existing check-in time stays. |
status: "attended" with checked_in_at: null |
Keeps attended and clears the check-in time. |
PATCH with checked_in_at: null, without status |
Clears the check-in time. An attended RSVP becomes confirmed; other statuses stay the same. |
status set to confirmed, tentative, or rejected |
Sets the status and clears any check-in time. |
One of those statuses with a non-null checked_in_at |
Returns 422. |
Check-in counts in analytics, such as checked-in-rsvp-count and rsvp-check-in-rate in session analytics, need a check-in time. An RSVP marked attended without one counts as an RSVP but not as checked in. Don’t assume every attended RSVP has a checked-in-at value.