Skip to content

Changelog

What changed for a caller of the API, newest first. What may change within v1 is in Versioning.

  • These docs, at docs.lobbe.ai, in English and in Persian. The reference is generated from the same list of routes the API is built from.
  • For agents: llms.txt, llms-full.txt, every page as Markdown, and a copy of the OpenAPI document at /openapi.json. See Connect an AI agent.
  • openapi.json now describes every field and parameter, in English (description) and in Persian (x-lobbe-description-fa). x-lobbe-rate-limit names the route’s rate class (class), and the bodies of PATCH /series/{id} and PATCH /account/settings say they need at least one field (minProperties: 1).
  • The Markdown bundle writes the title, the subtitle, the series name and each speaker’s name on one line: each run of white space in them, line breaks included, becomes a single space.
  • Tokens now need Developer mode, in the app under Account › Developers. It is off for a new account, and it was turned on for every account that had a token that wasn’t revoked.
  • While it is off, every request with a token answers 403 DEVELOPER_MODE_OFF. The tokens are paused, never revoked: once it is back on, they work again. Tell the person, and don’t retry in a loop. See Errors.
  • A revoked or expired token still answers 401 TOKEN_INVALID: the token is checked before the mode.
  • Tokens are made and managed in Connections, which replaces the token page in Settings. There you pick the scopes on offer, set a daily cap, follow each token’s spending and requests, and copy the setup for an AI agent, n8n or curl.
  • naming.url now opens the meeting’s speaker naming itself, for its owner, signed in.
  • A meeting a token sent shows that token’s name, in the archive and on the meeting.

Eight scopes: send, follow, search, ask, events, series and account

Section titled “Eight scopes: send, follow, search, ask, events, series and account”
  • Eight scopes, fixed when a token is made: recordings:read, recordings:write, recordings:query, series:read, series:write, series:query, account:read and account:write. See Tokens and scopes. GET /series/readable moved to series:read, and every token that held recordings:read was given series:read too.
  • GET /whoami: who the token belongs to, its scopes, its cap and the upload limits. It answers every token.
  • Limits per token: each token has a request budget of its own for each class of route, over any 10 minutes (429 RATE_LIMITED with Retry-After), and it can have a daily minute cap (429 TOKEN_DAILY_CAP). See Minutes, caps and limits.
  • Send a meeting and follow it (recordings:write): POST /recordings, with an optional Idempotency-Key, then GET /recordings/{id}/status, skip naming and retry. See The meeting lifecycle.
  • When a meeting happened: a meeting can be sent with recordedAt, and the list and the bundle now carry it.
  • Search and Ask: GET /recordings/search, and the free quotes and the Asks, of a meeting (recordings:query) and of a series (series:query). See Search and Ask.
  • The events feed, GET /events: what happened to your meetings, oldest first. It holds what happened from this release on, and nothing before it. See Polling and the events feed.
  • Formats: the bundle as Markdown, with ?format=markdown, and the OpenAPI document at https://app.lobbe.ai/api/v1/openapi.json.
  • Series and account: read, create and edit series and their vocabulary (series:read, series:write); read the account, change three of its settings, and read and change its vocabulary and its memory (account:read, account:write). See Series and Account, vocabulary and memory.
  • GET /series/readable: the series you own and the ones you joined. It needed recordings:read then; since 2026-10-18 it needs series:read.
  • GET /recordings/ready takes seriesId, for one series’ finished meetings, and each item carries series.
  • The bundle reads a meeting of a series you joined, with recording.access set to member.
  • The list’s cursor changed. The next page now starts right after the last meeting you got, so a meeting that leaves the list between two pages no longer makes the list skip the one after it. A cursor from before the change answers 400 VALIDATION.
  • List items and the bundle gain displayTitle, the title as the app shows it, and the bundle gains subtitle. In a series that titles its meetings by date, displayTitle is the series’ name and the meeting’s date, and the meeting’s own title moves to subtitle. title doesn’t change.
  • GET /recordings/ready: your finished meetings, newest first, limit at a time (1–100, 20 by default), paged with cursor. Each item has its id, title, kind, createdAt, durationSeconds, url and bundleUrl.
  • It needs recordings:read, as the bundle does, so every token could read it from the start.

Personal API tokens and the meeting bundle

Section titled “Personal API tokens and the meeting bundle”
  • Personal API tokens, made in the app: lobbe_…, shown once, up to 10 active at a time, expiring after 30, 90 or 365 days or never, and revocable at any time.
  • GET /recordings/{id}/bundle: one finished meeting, with its details, its transcript with the speakers’ names, its latest Lobbe and its stats. A meeting that isn’t finished answers 409 NOT_READY, with details.status.
  • This was the only route a token could call.