Base URL and headers
The Unified API needs the
BU-Connection-Id header. Unlike the Proxy and MCP, it doesn’t accept the connection ID appended to the API key.
Response envelope
Successful responses are JSON with adata field. List endpoints also have metadata:
/v1/me, /v1/tasks/tasks/{id}) return data as an object and no metadata.
Null vs missing
Every field in the schema is always present. When a provider doesn’t have a value, the field isnull rather than missing, so your code can rely on the shape.
Dates
Timestamps are ISO 8601 strings. All-day calendar events use aYYYY-MM-DD date instead. See Calendar.
IDs
IDs are the provider’s own, passed through. Most are strings. A few are numbers where the provider uses numbers (GitHub and GitLab repository IDs, for example). Treat IDs as opaque values.Pagination
List endpoints are cursor-paginated:metadata.next is null on the last page. Cursors are opaque: don’t build or modify them.
Include the raw response
Addinclude_raw=true to any endpoint to receive the provider’s original response in a _raw field, next to the normalized data:
_raw is the provider’s format, so code that reads it is provider-specific.
Provider parameters
List endpoints accept aparams query parameter: a JSON object whose keys are added to the provider request’s query string. Use it to pass provider-specific filters the Unified API doesn’t model:
Errors
The Unified API returns errors in this envelope:
Provider errors are passed through unchanged. If the provider answers with an error (a
403 for a missing scope, a 404 for a repository that doesn’t exist), you get the provider’s status, headers and body, not the envelope above. Check success or the content type before assuming which kind you have.
More detail in the errors reference.
