Events (Tracks)
An event is a track within a super event. :slug and :id accept a UUID or slug.
Creating a track is not available via the API - adding a track to a live super event involves payment and must be done from the dashboard.
Read
List tracks GET /organizations/:orgSlug/events
{ "data": { "events": [ { "id": "5c1f8a73-6d2b-4e90-a1c4-7b8e3f0d2a16", "name": "Autonomous Agents Track", "slug": "autonomous-agents", "status": "draft", "super_event_id": "2b9d7e10-4c8a-4f23-b6e1-9a3c5d7f0e22" } ] }} Get track GET /events/:slug
{ "data": { "event": { "id": "5c1f8a73-6d2b-4e90-a1c4-7b8e3f0d2a16", "name": "Autonomous Agents Track", "slug": "autonomous-agents", "status": "final", "mode": "onsite", "start_at": "2026-07-14T09:00:00.000Z", "end_at": "2026-07-16T18:00:00.000Z", "tz": "Europe/Berlin" }, "registration_count": 142, "team_count": 18 }} List track roles GET /events/:eventId/roles
{ "data": { "roles": [ { "user_id": "b3d8e1f0-2c5a-4e9b-8d17-3f6a0c2b5e94", "role": "ORGANIZER", "email": "alice.rivera@northwind.io", "name": "Alice Rivera" } ], "count": 2 }} Get setup status GET /events/:eventId/setup-status
{ "data": { "checklist": { "has_name": true, "has_dates": true, "has_registration_open": false }, "is_ready_for_registration": false, "stats": { "registrations": 0, "teams": 0 } }}Checklist of what is configured - confirm a track is ready before opening registration.
Write
Update track PATCH /events/:id
{ "data": { "event": { "id": "5c1f8a73-6d2b-4e90-a1c4-7b8e3f0d2a16", "name": "Autonomous Agents Track", "status": "final" } }}{ "name": "Autonomous Agents Track", "start_at": "2026-07-14T09:00:00.000Z", "end_at": "2026-07-16T18:00:00.000Z", "mode": "onsite", "status": "final"}All fields optional - send any subset.
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | No | 2-100 chars; changing it regenerates the slug. |
tz | string | No | IANA timezone (e.g. Europe/Berlin). |
start_at | ISO 8601 string | No | If both dates are sent, must be before end_at. |
end_at | ISO 8601 string | No | |
mode | string (enum) | No | online, onsite, or hybrid. |
stream_url | string (URL) | No | |
config_json | object | No | Track config (team size limits, file limits). |
status | string (enum) | No | draft or final. Setting final requires tz, start_at, end_at, and mode to be set. |
Body (all optional): name, tz, start_at, end_at, mode, stream_url,
config_json, status.
Delete track DELETE /events/:id
{ "data": { "deleted": true }} Assign track role POST /events/:eventId/roles
{ "data": { "user_id": "c4e9f2a1-5d6b-4f0c-9e28-4a7b1d3c6f05", "event_id": "5c1f8a73-6d2b-4e90-a1c4-7b8e3f0d2a16", "role": "MENTOR" }}{ "user_id": "c4e9f2a1-5d6b-4f0c-9e28-4a7b1d3c6f05", "role": "MENTOR"}| Field | Type | Required | Notes |
|---|---|---|---|
user_id | string (UUID) | Yes | An existing BuilderBase user. |
role | string (enum) | Yes | ORGANIZER, MENTOR, JUDGE, or PARTICIPANT. |
Roles: ORGANIZER, MENTOR, JUDGE, PARTICIPANT (UPPERCASE).
Remove track role DELETE /events/:eventId/roles/:userId/:role
{ "data": { "deleted": true }} Open registration POST /events/:eventId/open-registration
{ "data": { "registration_opened": true, "event": { "id": "5c1f8a73-6d2b-4e90-a1c4-7b8e3f0d2a16" } }}Optional query param ?force=true skips pre-open validation warnings.
Close registration POST /events/:eventId/close-registration
{ "data": { "registration_opened": false, "event": { "id": "5c1f8a73-6d2b-4e90-a1c4-7b8e3f0d2a16" } }}