Response Format
All responses are wrapped in a standard envelope:
{ "success": true, "data": { ... }}or, on error:
{ "success": false, "error": "Organization not found", "code": "ORG_NOT_FOUND"}data is not always flat
Important: payloads under data are not always flat. Most collection
endpoints nest the resource under a typed key. Read each endpoint description
carefully - body.data is rarely a bare array.
Examples of nested shapes you will see:
| Endpoint | Shape |
|---|---|
GET /organizations/:slug | data.organization |
GET /organizations/:id/members | data.members, data.pagination |
GET /events/:slug | data.event, data.registration_count, data.team_count |
GET /teams/:id | data.team, data.members, data.member_count |
GET /registrations/:id | data.registration |
When you write a client, branch on the typed key documented for each endpoint
rather than assuming data is the resource itself.
Errors
Branch on the machine-readable code, not the error text - the message may
change, the code will not. See Error Codes for the full list.