Series
A series groups the meetings that belong together, a weekly team sync for example. A token reaches two kinds:
- the series you own: you made them, and you can change them;
- the series you joined: someone else’s series that you were invited to. You read their finished meetings, but the series stays its owner’s.
While series are switched off in Lobbe, GET /series/readable answers an empty list, the other
series routes and ?seriesId= answer 404, and a meeting sent with seriesId goes to your
Personal archive.
Reading series
Section titled “Reading series”With series:read (Series, Read):
| Route | What it gives |
|---|---|
GET /series/readable |
Your series: the ones you own, then the ones you joined, each group by name |
GET /series/{id} |
One series: its name, its defaults, how it titles meetings, and its finished meetings’ count and newest time |
GET /series/{id}/keyterms |
Its vocabulary. Owner only |
curl https://app.lobbe.ai/api/v1/series/readable \ -H "Authorization: Bearer $LOBBE_TOKEN"{ "schemaVersion": 1, "items": [ { "id": "SERIES_ID", "name": "Product sync", "role": "owner", "meetingCount": 6, "url": "https://app.lobbe.ai/series/SERIES_ID", "meetingsUrl": "https://app.lobbe.ai/api/v1/recordings/ready?seriesId=SERIES_ID" } ]}rolein the list, andaccessinGET /series/{id}, sayownerormember.meetingCountis how many finished meetings of the series you can read now: exactly the ones itsmeetingsUrllists. The app counts every meeting of the series, finished or not, so its number can be higher.- What a token never sees of a series: its members, its invite and its email list. The
vocabulary comes only from
GET /series/{id}/keyterms, and that one never includes your account’s own vocabulary, which isaccount:read’s. - An unknown series, someone else’s, one you were removed from, or one you joined while Lobbe has
series members switched off: each answers
404, one answer for all.
A series’ meetings
Section titled “A series’ meetings”The meetings themselves are read with recordings:read, not series:read. Add seriesId to the
list of finished meetings, GET /recordings/ready,
which is what meetingsUrl already does:
curl "https://app.lobbe.ai/api/v1/recordings/ready?seriesId=SERIES_ID" \ -H "Authorization: Bearer $LOBBE_TOKEN"- A series you joined works too. Its meetings’ bundles say
recording.access: "member". - Without
seriesId, the list has your own meetings only, never the meetings of a series you joined. So a script that copies “new meetings” doesn’t start copying a colleague’s meetings by itself. - A series you can’t read answers
404, never an empty page. - Search takes the same
seriesId.
Creating and changing series
Section titled “Creating and changing series”With series:write (Series, Create and edit):
curl https://app.lobbe.ai/api/v1/series \ -H "Authorization: Bearer $LOBBE_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Product sync" }'POST /series answers 201 with the new series, in the same
shape as GET /series/{id}. Only name is required:
| Field | Default | What it is |
|---|---|---|
name |
— | The series’ name |
defaultKind |
MEETING |
The kind the app suggests for a meeting filed in the series |
defaultOutputLanguage |
MATCH |
The Lobbe language the app suggests for it |
titleStyle |
SESSION |
SESSION titles each meeting with the series’ name and its date, its own title beneath; TOPIC keeps each meeting’s own title |
dateCalendar |
AUTO |
The calendar of that date: AUTO follows the Lobbe’s language, or JALALI, or GREGORIAN |
defaultKind and defaultOutputLanguage are the app’s starting values. A meeting you send with a
token doesn’t read them: send kind and outputLanguage with it.
The name
Section titled “The name”- A name is one line. Runs of whitespace, line breaks and tabs included, become one space, and
the ends are trimmed. Then it must be 1 to 60 characters. Any other control character answers
400 VALIDATION. - Names are unique per account, ignoring capitals. A name one of your series already has answers
409 SERIES_NAME_TAKEN. - An account can own up to 50 series. One more answers
409 SERIES_LIMIT.
Changing a series
Section titled “Changing a series”PATCH /series/{id}takes the same fields, at least one. A field you leave out keeps its value, and an empty body answers400 VALIDATION.PUT /series/{id}/keytermsreplaces the series’ vocabulary. It takes the whole list,keyterms, andinheritAccountKeyterms, whether your account’s vocabulary applies too (the app’s Also use my vocabulary). Both are required. The list follows the vocabulary rules, the same as the account’s: see Vocabulary.- A meeting filed in the series is transcribed with the series’ words first, then, when
inheritAccountKeytermsistrue, with your account’s, up to 100 terms in all. A meeting that uses vocabulary costs more: see What spends. A meeting keeps the words it was sent with, so a new list changes only later meetings.
Owner only
Section titled “Owner only”PATCH /series/{id} and both vocabulary routes are for the series’ owner. A member’s token gets
404 on them, the same answer as a stranger’s: a series that isn’t yours is a 404, never a 403.
GET /series/{id} answers members as well.
Filing a meeting in a series
Section titled “Filing a meeting in a series”A new meeting goes into a series when you send it, with seriesId:
curl https://app.lobbe.ai/api/v1/recordings \ -H "Authorization: Bearer $LOBBE_TOKEN" \ -F "audio=@meeting.m4a;type=audio/mp4" \ -F seriesId=SERIES_ID- Only a series you own. A series you joined, or an id Lobbe doesn’t know, is not an error: the
meeting goes to your Personal archive, the meetings in no series. To check where it went, read
recording.seriesin its bundle, orseriesIdon its events. - The series’ vocabulary applies, as above. Send
-F useKeyterms=offto transcribe this meeting without any vocabulary, and without its surcharge. - A token can’t move a meeting it already sent, into a series, out of one or between two. That
is done in the app. A token gets
401 TOKEN_NOT_ACCEPTEDon the app’s own routes for it.
What a token can never do with series, deleting one or inviting members among them, is in Tokens and scopes.