Developers & API
A small, real, read-only API -- two endpoints, both documented below with working examples. Plus OAuth applications and outgoing webhooks for anything that needs delegated access or real-time events.
Authentication
Create an API key from your organization's Settings page. Every key is scoped to specific permissions (at minimum, projects:view for the two endpoints below), can be restricted to a list of IP addresses, and can be given an expiration date. Send it as a bearer token:
Authorization: Bearer bak_your_api_keyGET /api/v1/projects
Lists your organization's projects (up to 200, most recently created first), including each project's latest processing status.
curl https://api.briefant.com/api/v1/projects \
-H "Authorization: Bearer bak_your_api_key"const res = await fetch("https://api.briefant.com/api/v1/projects", {
headers: { Authorization: "Bearer bak_your_api_key" },
});
const projects = await res.json();import httpx
resp = httpx.get(
"https://api.briefant.com/api/v1/projects",
headers={"Authorization": "Bearer bak_your_api_key"},
)
projects = resp.json()[
{
"id": "b3f1...e02a",
"name": "Weekly sync",
"template_id": null,
"created_at": "2026-09-01T10:00:00Z",
"latest_job_status": "completed"
}
]GET /api/v1/projects/{project_id}/document
Returns the most recently generated document for a project. 404s if the project has no completed document yet.
curl https://api.briefant.com/api/v1/projects/PROJECT_ID/document \
-H "Authorization: Bearer bak_your_api_key"{
"id": "9a21...c4f0",
"job_id": "7cd8...11b2",
"title": "Weekly sync -- 2026-09-01",
"document": {
"key_decisions": ["..."],
"action_items": ["..."]
},
"created_at": "2026-09-01T10:42:00Z"
}OAuth applications
Register an application from Settings to let it act on a member's behalf with a scoped slice of their own permissions -- for example, an internal tool your team builds that reads project data as whoever is logged into it. Uses the standard OAuth 2.0 Authorization Code flow with PKCE (S256 required); confidential (web) applications receive a client secret, native and single-page applications are treated as public clients (PKCE only, no secret).
- ✓An OAuth token's effective permissions are always the intersection of its granted scope and the granting user's live permissions -- re-checked on every request, so a demoted user's connected apps lose access immediately too.
- ✓Scoped to a single organization -- a token issued for one organization can never read another's data.
- ✓Tokens are opaque and instantly revocable, not long-lived self-contained JWTs.
GET https://api.briefant.com/oauth/authorize -- start authorization
POST https://api.briefant.com/oauth/authorize -- user approves/denies
POST https://api.briefant.com/oauth/token -- exchange code for a token
POST https://api.briefant.com/oauth/revoke -- revoke a tokenOutgoing webhooks
Register an HTTPS endpoint from Settings and Briefant sends a signed POST request whenever one of the events below happens. Failed deliveries retry automatically (five attempts, backing off over several hours) and every delivery attempt -- successful or not -- is visible in a delivery log.
Projects
- project.created
- project.deleted
Meetings
- job.completed
- job.failed
Team
- member.invited
- member.joined
- member.removed
- member.role_changed
Every request includes an X-Briefant-Signature header -- verify it against your endpoint's signing secret before trusting the payload:
POST https://your-endpoint.example.com/webhooks/briefant
X-Briefant-Signature: sha256=<hex-encoded HMAC-SHA256 of the raw body>
Content-Type: application/json
{
"event": "job.completed",
"org_id": "...",
"data": { "job_id": "...", "project_id": "..." },
"created_at": "2026-09-14T12:00:00Z"
}Ready to build?
Create an API key or register an OAuth application from your workspace Settings once you've signed up.