Skip to content
Core API
Esc
↑↓navigate↵open⌘Jpreview
On this page

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 unmapped status is ignored; an otherwise valid POST returns 201 and PATCH returns 200. Scopes created before status became writable need the mapping added. See token scopes.
  • attended records attendance without a check-in time and keeps any existing checked-in-at.
  • confirmed, tentative, and rejected clear an existing check-in time. Sending one of them with a non-null checked_in_at returns 422.
  • Clearing a recorded check-in time also needs checked_in_at mapped in Writable fields. Without it, a status change that would clear the time returns 403 and nothing changes.
  • Creating a confirmed or attended RSVP, or moving a tentative or rejected RSVP to one of those statuses, returns 422 when the session is full.
  • A mapped status of null, a boolean, an empty string, a number, or an unknown string returns 422. Arrays and objects return 400.
  • 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.

Last updated on October 22, 2026