error.code, not the human-readable message.
Error response format
details is optional and machine-readable. Unknown detail fields should be ignored.
Request correlation
Every response includes anX-Request-Id header, and error bodies repeat it as error.request_id. Log that identifier with the failed operation and provide it to Brightalk support. Do not log API keys or full contact data.
You may send X-Request-Id using 1–64 characters from A-Z, a-z, 0-9, ., _, :, or -. Brightalk replaces a missing or invalid value with a generated identifier.
Authentication distinctions
These responses describe credential usability without revealing resources belonging to another organization.
Status and error catalog
A known path with an unsupported method also includes
Allow. Retry-After appears where waiting before another attempt is meaningful. Error responses never expose implementation names, private payloads, query details, or stack traces.
Recording download errors use a different, simpler body
The signed URL returned asdownload_url is not part of the versioned JSON API above — it is served from a different host with no API key, and a failed request returns {"error": "<code>"}, a bare string code with no message, request_id, or details. Two of its codes carry a contract you must act on differently:
Treat these as opposites, not degrees of the same failure:
503 means try again later, 410 means the bytes are gone for good. A sync job that collapses both into “give up” will silently abandon recordings that come back on retry. The other codes on this URL (403 invalid_link, 404 not_found, 502 upstream_unavailable, 503 server_configuration_error) do not carry this specific retry/no-retry contract, but 502 and 503 server_configuration_error are also safe to retry with backoff — both mean a problem on our side, not a permanent statement about the recording.