Account
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 /account
Section titled “GET /account”The account: who owns it, its wallet balance in minutes, and its settings.
| Property | Value |
|---|---|
| Scopes | account:read |
| Spends minutes | No |
| Rate limit | read: 600 requests per 10 minutes per token |
| Success | 200 |
Response 200
Section titled “Response 200”The account the token acts for: its owner, balance and settings; never its phone number or email address.
| 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) |
wallet |
object |
Yes | The account’s balance |
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 |
settings |
object |
Yes | The account’s settings a token can see; updateAccountSettings changes the first three |
settings.speakerNamingMode |
"AUTO" | "FORCE_ON" | "FORCE_OFF" |
Yes | How a new meeting waits for its speakers’ names: FORCE_ON (“Ask”) holds it at NAMING until they are named or skipped, or its naming.deadline passes; AUTO (“Ask, but don’t wait”) holds it a short while, then goes on; FORCE_OFF (“Auto-guess”) never holds it, and Lobbe guesses the names where it can |
settings.memoryLearningEnabled |
boolean |
Yes | Whether Lobbe learns new notes into its memory from each new meeting (the app’s “Learn from new meetings”); false stops the learning only, and the notes already kept are still used |
settings.summaryEmailEnabled |
boolean |
Yes | Whether each new Lobbe is emailed to the owner with its PDF (the app’s “Email me after each meeting”); a Lobbe made again is not sent again, and nothing is sent while the account has no email address (only the app can set one) |
settings.uiLocale |
"en" | "fa" |
Yes | The app’s language for the account, en or fa: set in the app, never through a token |
Errors answer { error: { code, message, details? } }, and code is the contract: see Errors.
GET /account/keyterms
Section titled “GET /account/keyterms”The account’s vocabulary: words transcription should recognize.
| Property | Value |
|---|---|
| Scopes | account:read |
| Spends minutes | No |
| Rate limit | read: 600 requests per 10 minutes per token |
| Success | 200 |
Response 200
Section titled “Response 200”The account’s vocabulary (the app’s “My vocabulary”).
| Field | Type | Always present | Description |
|---|---|---|---|
schemaVersion |
1 |
Yes | Always 1 within API v1 |
keyterms[] |
string[] |
Yes | The terms transcription should recognize, in their saved order (at most 100). A meeting transcribed with vocabulary uses them when it is in no series, and after the series’ own terms when its series has inheritAccountKeyterms: true; a meeting in a series without it never uses them |
Errors answer { error: { code, message, details? } }, and code is the contract: see Errors.
PUT /account/keyterms
Section titled “PUT /account/keyterms”Replace the account’s vocabulary; a meeting that uses vocabulary carries its surcharge.
| Property | Value |
|---|---|
| Scopes | account:write |
| Spends minutes | No |
| Rate limit | settings: 60 requests per 10 minutes per token |
| Success | 200 |
Request body (application/json)
Section titled “Request body (application/json)”The account’s whole vocabulary, replacing the old one. A meeting keeps the words it was submitted with, and a meeting that uses any costs 20% more. A field not listed here is a 400.
| Field | Type | Required | Description |
|---|---|---|---|
keyterms[] |
string[] |
Yes | The whole new list. Each term is trimmed and its runs of spaces collapse to one; then at most 100 terms, each 1–49 characters and at most 5 words, none containing <, >, {, }, [, ] or \, and no term twice. A list that breaks a rule is a 400 whose message names the first problem |
Response 200
Section titled “Response 200”The account’s vocabulary (the app’s “My vocabulary”).
| Field | Type | Always present | Description |
|---|---|---|---|
schemaVersion |
1 |
Yes | Always 1 within API v1 |
keyterms[] |
string[] |
Yes | The terms transcription should recognize, in their saved order (at most 100). A meeting transcribed with vocabulary uses them when it is in no series, and after the series’ own terms when its series has inheritAccountKeyterms: true; a meeting in a series without it never uses them |
Errors answer { error: { code, message, details? } }, and code is the contract: see Errors.
GET /account/memory
Section titled “GET /account/memory”What Lobbe remembers about the account’s owner, as the settings screen lists it.
| Property | Value |
|---|---|
| Scopes | account:read |
| Spends minutes | No |
| Rate limit | read: 600 requests per 10 minutes per token |
| Success | 200 |
Response 200
Section titled “Response 200”What Lobbe remembers about the owner to make each Lobbe more accurate, as the app’s “Lobbe’s memory” lists it.
| Field | Type | Always present | Description |
|---|---|---|---|
schemaVersion |
1 |
Yes | Always 1 within API v1 |
memoryEnabled |
boolean |
Yes | Whether memory is switched on for Lobbe; while false, items is empty and editing or deleting a note answers 409 MEMORY_DISABLED |
items[] |
object[] |
Yes | The notes. One memory note |
items[].id |
string |
Yes | The note’s id, as updateMemoryItem and deleteMemoryItem take it |
items[].category |
"ABOUT_YOU" | "PEOPLE" | "TERMS" |
Yes | The section it is in: ABOUT_YOU (“About you”), PEOPLE (“People you meet with”) or TERMS (“Your terminology”) |
items[].text |
string |
Yes | The note itself |
items[].meetingCount |
integer |
Yes | How many meetings it was learned from |
items[].pinned |
boolean |
Yes | true once the owner edited it: from then on Lobbe never rewrites or removes it |
Errors answer { error: { code, message, details? } }, and code is the contract: see Errors.
PATCH /account/settings
Section titled “PATCH /account/settings”Change speaker naming, memory learning or the summary email; nothing else.
| Property | Value |
|---|---|
| Scopes | account:write |
| Spends minutes | No |
| Rate limit | settings: 60 requests per 10 minutes per token |
| Success | 200 |
Request body (application/json)
Section titled “Request body (application/json)”The settings to change, at least one: a field you leave out keeps its value, and any other field is a 400 with nothing written. Send at least one field; an empty body is a 400. A field not listed here is a 400.
| Field | Type | Required | Description |
|---|---|---|---|
speakerNamingMode |
"AUTO" | "FORCE_ON" | "FORCE_OFF" |
No | How a new meeting waits for its speakers’ names: FORCE_ON (“Ask”) holds it at NAMING until they are named or skipped, or its naming.deadline passes; AUTO (“Ask, but don’t wait”) holds it a short while, then goes on; FORCE_OFF (“Auto-guess”) never holds it, and Lobbe guesses the names where it can |
memoryLearningEnabled |
boolean |
No | Whether Lobbe learns new notes into its memory from each new meeting (the app’s “Learn from new meetings”); false stops the learning only, and the notes already kept are still used |
summaryEmailEnabled |
boolean |
No | Whether each new Lobbe is emailed to the owner with its PDF (the app’s “Email me after each meeting”); a Lobbe made again is not sent again, and nothing is sent while the account has no email address (only the app can set one) |
Response 200
Section titled “Response 200”The account the token acts for: its owner, balance and settings; never its phone number or email address.
| 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) |
wallet |
object |
Yes | The account’s balance |
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 |
settings |
object |
Yes | The account’s settings a token can see; updateAccountSettings changes the first three |
settings.speakerNamingMode |
"AUTO" | "FORCE_ON" | "FORCE_OFF" |
Yes | How a new meeting waits for its speakers’ names: FORCE_ON (“Ask”) holds it at NAMING until they are named or skipped, or its naming.deadline passes; AUTO (“Ask, but don’t wait”) holds it a short while, then goes on; FORCE_OFF (“Auto-guess”) never holds it, and Lobbe guesses the names where it can |
settings.memoryLearningEnabled |
boolean |
Yes | Whether Lobbe learns new notes into its memory from each new meeting (the app’s “Learn from new meetings”); false stops the learning only, and the notes already kept are still used |
settings.summaryEmailEnabled |
boolean |
Yes | Whether each new Lobbe is emailed to the owner with its PDF (the app’s “Email me after each meeting”); a Lobbe made again is not sent again, and nothing is sent while the account has no email address (only the app can set one) |
settings.uiLocale |
"en" | "fa" |
Yes | The app’s language for the account, en or fa: set in the app, never through a token |
Errors answer { error: { code, message, details? } }, and code is the contract: see Errors.
PATCH /account/memory/{id}
Section titled “PATCH /account/memory/{id}”Rewrite one memory item; an edited item is kept as you wrote it.
| Property | Value |
|---|---|
| Scopes | account:write |
| Spends minutes | No |
| Rate limit | settings: 60 requests per 10 minutes per token |
| Success | 200 |
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path |
string |
Yes | The memory item’s id |
Request body (application/json)
Section titled “Request body (application/json)”The note’s new text; the note is then pinned, kept as you wrote it. A field not listed here is a 400.
| Field | Type | Required | Description |
|---|---|---|---|
text |
string |
Yes | The new text, trimmed: at least 1 character and at most the app’s limit for a note (never more than 1000); longer is a 400, and the text of another note in the same section is 409 MEMORY_DUPLICATE |
Response 200
Section titled “Response 200”The note as it now reads.
| Field | Type | Always present | Description |
|---|---|---|---|
schemaVersion |
1 |
Yes | Always 1 within API v1 |
item |
object |
Yes | One memory note |
item.id |
string |
Yes | The note’s id, as updateMemoryItem and deleteMemoryItem take it |
item.category |
"ABOUT_YOU" | "PEOPLE" | "TERMS" |
Yes | The section it is in: ABOUT_YOU (“About you”), PEOPLE (“People you meet with”) or TERMS (“Your terminology”) |
item.text |
string |
Yes | The note itself |
item.meetingCount |
integer |
Yes | How many meetings it was learned from |
item.pinned |
boolean |
Yes | true once the owner edited it: from then on Lobbe never rewrites or removes it |
Errors answer { error: { code, message, details? } }, and code is the contract: see Errors.
DELETE /account/memory/{id}
Section titled “DELETE /account/memory/{id}”Delete one memory item.
| Property | Value |
|---|---|
| Scopes | account:write |
| Spends minutes | No |
| Rate limit | settings: 60 requests per 10 minutes per token |
| Success | 200 |
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path |
string |
Yes | The memory item’s id |
Response 200
Section titled “Response 200”The note is gone for good; a later meeting may teach it again.
| Field | Type | Always present | Description |
|---|---|---|---|
schemaVersion |
1 |
Yes | Always 1 within API v1 |
id |
string |
Yes | The deleted note’s id |
deleted |
true |
Yes | Always true |
Errors answer { error: { code, message, details? } }, and code is the contract: see Errors.