Browse the docs

API reference

Search

Search across items, people and transcripts; type-ahead suggestions.

Paths are relative to /api/v1 on your server.

GET/search#

Search items, people and transcripts

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
q requiredquerystring
typesquerystring
limitqueryinteger
includequerystring
  • 200Success. application/json · SearchResponse
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
GET/search/concepts#

Search transcripts by meaning

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
q requiredquerystring
courseIdquerystring (uuid)
limitqueryinteger
  • 200Success. application/json · object
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
GET/search/suggest#

Type-ahead suggestions

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
q requiredquerystring
limitqueryinteger
  • 200Success. application/json · object
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
GET/search/transcripts#

Search transcripts

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
q requiredquerystring
courseIdquerystring (uuid)
limitqueryinteger
offsetqueryinteger
  • 200Success. application/json · object
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
POST/voice/transcribe#

What was said, heard on this server

The body is a recording (audio/webm or audio/ogg with Opus, audio/mp4, audio/wav; 2 MB at most, the first 15 seconds heard), as a browser makes it. It is heard by a local speech model (Whisper base, fetched from the Hugging Face Hub the first time and kept under the metadata folder), in language when given (ISO 639-1), else whichever it hears. Nothing said leaves the server. text is empty when nothing was heard. One recording is heard at a time, a few waiting; more is RATE_LIMITED.

Authorisation
Bearer token or API key · Session cookie
Body
audio/* ·
ParameterInTypeDescription
languagequerystring
  • 200Success. application/json · object
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. VALIDATION_FAILED: the body is empty or isn’t a recording FFmpeg can read application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. FORBIDDEN: search.voice is off application/json · ErrorEnvelope
  • 413PAYLOAD_TOO_LARGE: it is over 2 MB application/json · ErrorEnvelope
  • 429RATE_LIMITED: more than four recordings are waiting application/json · ErrorEnvelope
  • 502PROVIDER_UNAVAILABLE: the speech model isn’t here and couldn’t be fetched application/json · ErrorEnvelope