Skip to content

API reference

Every route a personal API token can call, grouped as in the sidebar. Each entry gives the route’s scopes, whether it spends minutes, its rate limit, and its parameters and fields.

  • Base URL: https://app.lobbe.ai/api/v1
  • Authentication: every request sends Authorization: Bearer $LOBBE_TOKEN.
  • OpenAPI document: https://app.lobbe.ai/api/v1/openapi.json, also served here as /openapi.json. These pages are generated from the same document.
Route What it does Scopes
GET /whoami Who this token belongs to, its scopes, its daily cap and the upload limits Any live token
Route What it does Scopes
GET /recordings/ready List finished meetings, newest first recordings:read
GET /recordings/search Search the owner’s finished meetings by their words, newest meeting first recordings:query
GET /recordings/{id}/ask/quote What asking this meeting a question will cost, in minutes recordings:query
POST /recordings/{id}/ask Ask one meeting a question, answered from its transcript and Lobbe; each answer is charged recordings:query
GET /recordings/{id}/bundle One finished meeting: its transcript, its Lobbe and its stats; ?format=markdown returns one Markdown document recordings:read
GET /recordings/{id}/status One meeting’s progress; at NAMING, the link that asks the owner to name the speakers recordings:read or recordings:write
POST /recordings Submit a meeting’s audio (multipart); answers 202 with its status link recordings:write
POST /recordings/{id}/naming Skip naming the speakers: unnamed voices take Lobbe’s suggestions and the Lobbe is made recordings:write
POST /recordings/{id}/retry Retry a failed meeting: the step that failed runs again, at no new charge recordings:write
Route What it does Scopes
GET /events What happened to the owner’s meetings since a cursor: created, waiting for names, ready, failed, updated, deleted recordings:read or recordings:write
Route What it does Scopes
GET /series/readable The series you own or joined series:read
GET /series/{id} One series you own or joined: its name, its defaults and how many finished meetings it holds series:read
PATCH /series/{id} Change a series you own: its name, type and default language, title style or calendar series:write
POST /series Create a series: its name, type and default language, title style and calendar series:write
GET /series/{id}/keyterms A series’ vocabulary (owner only), and whether the account’s vocabulary applies too series:read
PUT /series/{id}/keyterms Replace a series’ vocabulary (owner only); a meeting that uses vocabulary carries its surcharge series:write
GET /series/{id}/ask/quote What asking this series a question will cost, in minutes, and over how many meetings series:query
POST /series/{id}/ask Ask a whole series a question, answered across its finished meetings; each answer is charged series:query
Route What it does Scopes
GET /account The account: who owns it, its wallet balance in minutes, and its settings account:read
GET /account/keyterms The account’s vocabulary: words transcription should recognize account:read
PUT /account/keyterms Replace the account’s vocabulary; a meeting that uses vocabulary carries its surcharge account:write
GET /account/memory What Lobbe remembers about the account’s owner, as the settings screen lists it account:read
PATCH /account/settings Change speaker naming, memory learning or the summary email; nothing else account:write
PATCH /account/memory/{id} Rewrite one memory item; an edited item is kept as you wrote it account:write
DELETE /account/memory/{id} Delete one memory item account:write
  • Every successful JSON response carries schemaVersion: 1. Ignore fields you don’t know. An error body is { error: … } only, with no schemaVersion, and ?format=markdown answers Markdown text.
  • x-lobbe-scopes lists the scopes that open a route: any one of them admits a token. "any" (on GET /whoami) means every live token, whatever its scopes.
  • x-lobbe-spends is true on a route that can spend minutes; send those an Idempotency-Key header (Idempotency and retries).
  • x-lobbe-rate-limit names the route’s class and that class’s budget per token, requests per windowSeconds. Every route in a class shares the one budget (the table below).
  • x-lobbe-summary-fa and x-lobbe-description-fa carry the same texts in Persian.
  • PATCH /series/{id} and PATCH /account/settings take at least one field (minProperties: 1): an empty body is a 400.
  • Errors answer { error: { code, message, details? } }: code is the contract, and message may change. Every code is on Errors.
  • One exception keeps its original shape: the bundle’s 409 NOT_READY puts details beside error, not inside it, and details.status says where the meeting is:
{
"error": { "code": "NOT_READY", "message": "…" },
"details": { "status": "TRANSCRIBING" }
}
Class Budget per token Routes
read 600 requests per 10 minutes GET /whoami, GET /recordings/ready, GET /recordings/{id}/bundle, GET /recordings/{id}/status, GET /events, GET /series/readable, GET /series/{id}, GET /series/{id}/keyterms, GET /account, GET /account/keyterms, GET /account/memory
submit 30 requests per 10 minutes POST /recordings, POST /recordings/{id}/naming, POST /recordings/{id}/retry
search 120 requests per 10 minutes GET /recordings/search, GET /recordings/{id}/ask/quote, GET /series/{id}/ask/quote
ask 30 requests per 10 minutes POST /recordings/{id}/ask, POST /series/{id}/ask
settings 60 requests per 10 minutes POST /series, PATCH /series/{id}, PUT /series/{id}/keyterms, PATCH /account/settings, PUT /account/keyterms, PATCH /account/memory/{id}, DELETE /account/memory/{id}