Skip to content
Core API
Esc
navigateopen⌘Jpreview
On this page

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.

Last updated on August 21, 2026