Skip to main content
The OpenWhispr API lets you manage notes, folders, transcriptions, and usage programmatically. All endpoints live under /api/v1 and require an API key.

Base URL

https://api.openwhispr.com/api/v1

Authentication

Every request needs a Bearer token in the Authorization header.
curl -H "Authorization: Bearer owk_live_YOUR_KEY" \
  https://api.openwhispr.com/api/v1/notes/list
Generate API keys from the OpenWhispr desktop app under Settings > API Keys. Keys start with owk_live_ and are shown once at creation.

Scopes

Each key has scoped permissions. Requests missing the required scope get a 403 Forbidden response.
ScopeAccess
notes:readList, get, and search notes. List folders.
notes:writeCreate, update, and delete notes. Create folders.
transcriptions:readList and get transcription history.
usage:readRead usage statistics.

Response format

All responses use a consistent envelope.
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "title": "Meeting notes",
    "content": "Discussed the roadmap..."
  }
}

Pagination

List endpoints use cursor-based pagination. Pass the next_cursor value from a previous response as the cursor query parameter.
# First page
curl -H "Authorization: Bearer $KEY" \
  "https://api.openwhispr.com/api/v1/notes/list?limit=50"

# Next page
curl -H "Authorization: Bearer $KEY" \
  "https://api.openwhispr.com/api/v1/notes/list?limit=50&cursor=2026-04-15T10:30:00.000Z"
When has_more is false, you’ve reached the end.

Rate limits

Limits are per API key with minute and daily windows. Search requests cost 5x.
PlanPer minutePer day
Free301,000
Pro12010,000
Business30050,000
Every response includes rate limit headers:
HeaderDescription
X-RateLimit-LimitMax requests per minute
X-RateLimit-RemainingRemaining in current window
X-RateLimit-ResetUnix timestamp when window resets
Retry-AfterSeconds to wait (only on 429)