Headers on every request
Two headers apply to every endpoint, so the endpoint pages don’t repeat them.Authorization (required) — your API key, sent bare:
Bearer <your_api_key> and Token <your_api_key> are accepted too. See Authentication
for keys, workspaces, and failures.
Happyscribe-Version (optional) — serve this request as the API was on a given date:
How the API is organized
In the order you meet them while integrating:
Start with What you build.
Conventions
- JSON everywhere — send request bodies as JSON with
Content-Type: application/json; responses are JSON. A JSON body that arrives with a missing or wrongContent-Type(saytext/plainfromfetch, or the form typecurl -ddefaults to) is parsed as JSON anyway. Form-encoded bodies work too. The exception isPOST /files, which takesmultipart/form-data. - Trailing slashes are fine —
/botsand/bots/are the same endpoint. Neither redirects. - Pagination — list endpoints return
{ "object": "list", "data", "has_more", "_links" }. Set the page size withlimit(1 to 100, default 25) and follow_links.next.url, absent on the last page, as it is; don’t build cursors.pageandper_pageare refused with a400. - Webhooks over polling — meetings and bots change asynchronously; follow them with Webhooks.
- Signed URLs expire — download and media links are short-lived unless their field says otherwise; fetch them fresh.
- API history — additions and migrations live in the Changelog, not as deprecated clutter in the sidebar.