Skip to main content
The OpenWhispr API lets you manage notes, folders, transcriptions, your dictionary and snippets, and usage programmatically — and, in beta, transcribe audio files. All endpoints live under /api/v1. Most require an API key — the exceptions are covered below.

Base URL

Authentication

Most requests need a Bearer token in the Authorization header.
Generate API keys from the OpenWhispr desktop app: open Integrations in the left sidebar and use the API card. Keys start with owk_live_ and are shown once at creation. API key management is offered on paid plans.
Two exceptions: the agent bootstrap endpoints (/auth/email-code, /auth/email-code/verify) take no credentials at all — that’s how an assistant gets its first token. And the /keys/* management endpoints also accept the short-lived session token (owt_) that bootstrap produces, not just an owk_live_ API key. Every other endpoint needs a Bearer owk_live_ (or ow_wks_live_) key, or the short-lived owo_ access token that Claude’s Connectors flow obtains through the MCP server — those carry the same personal scopes.

Scopes

Each key has scoped permissions. Requests missing the required scope get a 403 Forbidden response. Keys that start with ow_wks_live_ are workspace keys and carry a different set of scopes — see Workspace API keys. The dictionary, snippet, and transcribe routes take personal keys only; a workspace key gets 403 there.

Response format

All responses use a consistent envelope.

Pagination

List endpoints use cursor-based pagination. Treat next_cursor as an opaque token — pass it back exactly as received via the cursor query parameter; never parse or construct one yourself.
When has_more is false, you’ve reached the end.

Rate limits

Limits are per API key with minute and daily windows. A search request counts as 5 against both windows, and so does a transcription. Every response includes rate limit headers: