Token
Every path is relative to https://app.lobbe.ai/api/v1, and every request sends Authorization: Bearer $LOBBE_TOKEN. The API reference lists every route and explains the x-lobbe-* fields.
GET /whoami
Section titled “GET /whoami”Who this token belongs to, its scopes, its daily cap and the upload limits.
| Property | Value |
|---|---|
| Scopes | Any live token |
| Spends minutes | No |
| Rate limit | read: 600 requests per 10 minutes per token |
| Success | 200 |
Response 200
Section titled “Response 200”Who this token acts for and what it may do.
| Field | Type | Always present | Description |
|---|---|---|---|
schemaVersion |
1 |
Yes | Always 1 within API v1 |
owner |
object |
Yes | Who the token acts for: the account’s owner |
owner.type |
"user" |
Yes | The owner’s kind: user today; ignore a type you don’t know |
owner.id |
string |
Yes | The owner’s account id |
owner.displayName |
string | null |
Yes | The owner’s name; null when none was set (a phone number is never sent) |
token |
object |
Yes | The token making this request |
token.id |
string |
Yes | The token’s id |
token.name |
string |
Yes | The name the owner gave the token |
token.scopes[] |
("recordings:read" | "recordings:write" | "recordings:query" | "series:read" | "series:write" | "series:query" | "account:read" | "account:write")[] |
Yes | The scopes the token holds, in catalog order; each is recordings:read, recordings:write, recordings:query, series:read, series:write, series:query, account:read or account:write |
token.dailyMinuteCap |
integer | null |
Yes | The most minutes the token may spend in any rolling 24 hours; null = no cap |
token.usedMinutes24h |
integer |
Yes | Minutes the token committed in the last 24 hours, the sum its cap is checked against |
token.expiresAt |
string | null |
Yes | When the token stops working (ISO 8601, UTC); null = it never expires |
wallet |
object | null |
Yes | The account’s balance; null unless the token holds account:read |
wallet.balanceMinutes |
integer |
Yes | The balance in minutes; a meeting not yet transcribed is not taken out of it yet, and a first meeting over the balance can leave it below 0 |
limits |
object |
Yes | What one submission may be |
limits.maxUploadMb |
number |
Yes | The largest audio file accepted, in megabytes |
limits.maxRecordingMinutes |
number |
Yes | The longest meeting accepted, in minutes of audio |
Errors answer { error: { code, message, details? } }, and code is the contract: see Errors.