Authentication
Every request carries a bearer credential:- an API key (
brf_live_…), for programmatic and agent use - a session JWT, issued to the signed-in browser app
- an OAuth access token, issued when you approve a client such as the MCP server. It resolves to you rather than to a key, so it carries no scopes and is bounded by your entitlement
Which plans have API access
The Workflows API is available on Max and Team seats. Pro includes Workflows in the browser but not programmatic access, and cannot create API keys. These scopes cover the Workflows surface only. Terminal is reachable as a step inside a workflow graph (terminal.*) and has no API of its own. Anya does: her own surface under /anya, gated by the anya entitlement rather than by these scopes, and a key granted Workflows scopes is not thereby granted Anya.
A caller on a plan without it receives 402:
Product scoping
A key carries a set of products. To reach this API the key must includebriefed_research in its products. A key scoped only to Consumer Intelligence resolves as a valid key but is refused here.
Scopes
Running a workflow draws on your research usage allowance. Reading one does not. They are therefore separate grants, so a key handed to an automation, a script, or an MCP server can be made incapable of incurring cost.write:workflows implies read:workflows; a key that can publish can obviously list.
A request needing a scope the key lacks returns 403:
Which routes need which
Classification is explicit, not inferred from the HTTP method. Two POSTs are reads because they change nothing and cost nothing. An agent must be able to check its own work without also being able to spend:POST /api/v1/workflows/catalogue/validate-definitionPOST /api/v1/workflows/catalogue/resolve-subjects
write:workflows, including any added in future.
A session JWT is not scope-limited. A signed-in user is bounded by their plan entitlement rather than by a key, so scopes apply to API keys only.
Recommended split
Issue two keys rather than one:- a read-only key (
read:workflows) for dashboards, monitoring, CI checks, and any agent that inspects but must not act - a write key (
write:workflows) held by the small number of callers that publish or run, with an expiry set