Responses and errors
Understand JSON:API responses, status codes, and rate limits.
Collection response
{
"data": [
{
"id": "3898",
"type": "lead",
"attributes": {
"event-id": 319986,
"sponsor-ids": [103705],
"notes": "Requested a product demo"
},
"relationships": {
"registrant": {
"data": { "id": "77881", "type": "event-registrant" }
}
}
}
],
"meta": {
"total_count": 1,
"total_pages": 1,
"current_page": 1
}
}
Individual response with an included relationship
{
"data": {
"id": "3898",
"type": "lead",
"attributes": {
"event-id": 319986,
"created-by-registrant-id": null
},
"relationships": {
"created-by-registrant": {
"data": null
}
}
}
}
If the relationship is non-null and requested through include, its resource appears in included:
{
"included": [
{
"id": "77882",
"type": "event-registrant",
"attributes": {
"external-id": "CRM-42",
"first-name": "Avery",
"last-name": "Lee",
"email": "avery@example.com"
}
}
]
}
JSON:API type values are normally singular resource names. Analytics, statistics, and benchmarks retain their collective resource name as their type.
Error response
General errors use:
{
"errors": [
{
"title": "Missing required filter: comparison_event_ids"
}
]
}
Model validation errors may also contain a source pointer:
{
"errors": [
{
"title": "Name can't be blank",
"source": { "pointer": "/sponsor/name" }
}
]
}
| Status | Meaning |
|---|---|
400 Bad Request |
Wrong URL level, conflicting event/organization ID, malformed scalar/array value, invalid date, or missing required filter. |
403 Forbidden |
Missing, expired, wrong-context, or unknown token; disabled scope; missing permission; or disallowed action. |
404 Not Found |
Unknown resource, missing scope, event/record outside scope, restricted record, or foreign/missing related record. |
422 Unprocessable Content |
A model or business rule rejected the write, or an analytics request exceeded a protected dataset limit. |
429 Too Many Requests |
Rate limit exceeded. Respect the Retry-After header. |
By default, Core requests are limited to 100 requests per configured period per token and 500 per configured period per IP; the default period is 60 seconds. Brella may configure different production limits.