Memo AIDocs
API Reference

List transcriptions

GET /transcriptions — list transcriptions in a workspace with filtering, sorting and pagination.

GET /transcriptions

Returns a paginated list of transcriptions in the key's workspace. Lightweight — no full text; use Get transcription for that.

Query parameters

ParameterTypeDefaultDescription
statusstringcompletedFilter by status. An unknown value returns an empty list.
project_idUUIDOnly transcriptions in this project. Get the UUID from List projects.
languagestringLanguage code, e.g. en, ru.
date_fromdateCreated on/after this date (YYYY-MM-DD).
date_todateCreated on/before this date (YYYY-MM-DD).
sortstring-created_atcreated_at, -created_at, duration, -duration. A - prefix means descending.
limitinteger20Page size, 1100 (clamped).
offsetinteger0Number of items to skip.

Request

curl -G https://app.memoai.tech/api/v1/developer/transcriptions \
  -H "Authorization: Bearer mk_live_your_key_here" \
  -d language=en \
  -d date_from=2026-05-01 \
  -d sort=-created_at \
  -d limit=20
import httpx

resp = httpx.get(
    "https://app.memoai.tech/api/v1/developer/transcriptions",
    headers={"Authorization": "Bearer mk_live_your_key_here"},
    params={
        "language": "en",
        "date_from": "2026-05-01",
        "sort": "-created_at",
        "limit": 20,
    },
)
resp.raise_for_status()
data = resp.json()
const url = new URL("https://app.memoai.tech/api/v1/developer/transcriptions");
url.search = new URLSearchParams({
  language: "en",
  date_from: "2026-05-01",
  sort: "-created_at",
  limit: "20",
}).toString();

const res = await fetch(url, {
  headers: { Authorization: "Bearer mk_live_your_key_here" },
});
const data = await res.json();

List my English meetings from May, newest first.

The assistant calls memo_list_transcriptions with language, date_from and sort.

Response

200 OK

{
  "items": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "title": "Acme — discovery call",
      "summary": "Walked through current workflow and pain points...",
      "language": "en",
      "duration_seconds": 1840.5,
      "speakers": [{ "name": "Alex" }, { "name": "Jordan" }],
      "topics": [{ "title": "Pricing" }, { "title": "Onboarding" }],
      "media_type": "audio",
      "project": { "id": "8b1f3e22-1c4a-4f7e-9a2b-6d5e8c1a2b3c", "name": "Sales" },
      "created_at": "2026-05-20T09:14:00Z",
      "updated_at": "2026-05-20T09:31:00Z"
    }
  ],
  "total": 42,
  "limit": 20,
  "offset": 0
}

Response fields

FieldTypeDescription
items[]arrayTranscriptions on this page.
items[].idUUIDTranscription identifier — use with Get / Export.
items[].titlestring | nullMeeting title.
items[].summarystring | nullShort AI summary.
items[].languagestring | nullDetected language code.
items[].duration_secondsnumber | nullRecording length in seconds.
items[].speakers[]arrayDetected speakers.
items[].topics[]arrayKey topics.
items[].media_typestring | nullaudio or video.
items[].projectobject | null{ id, name } if assigned to a project.
items[].created_atdatetimeWhen the transcription was created.
items[].updated_atdatetimeLast update.
totalintegerTotal matching the filter (across all pages).
limitintegerPage size used.
offsetintegerOffset used.

Pagination

Request the next page by advancing offset by limit:

# page 2
curl -G https://app.memoai.tech/api/v1/developer/transcriptions \
  -H "Authorization: Bearer mk_live_your_key_here" \
  -d limit=20 -d offset=20

You've reached the end when offset + len(items) >= total.

Errors

StatusWhen
401Missing/invalid key, or key passed in the URL.
403Plan without API access.
429Rate limit exceeded.

See Errors for full details.

On this page