Memo AIDocs
Guides

Export your whole archive

Page through every transcription and export your entire Memo AI archive in batches of 100.

To back up or migrate everything, page through all your transcriptions and export them in batches — bulk export handles up to 100 per request.

Collect every transcription ID

Page through the list with limit + offset until you've seen them all.

import httpx

BASE = "https://app.memoai.tech/api/v1/developer"
HEADERS = {"Authorization": "Bearer mk_live_your_key_here"}

ids, offset, page = [], 0, 100
while True:
    resp = httpx.get(
        f"{BASE}/transcriptions",
        headers=HEADERS,
        params={"limit": page, "offset": offset, "status": "completed"},
    )
    resp.raise_for_status()
    data = resp.json()
    ids += [t["id"] for t in data["items"]]
    offset += page
    if offset >= data["total"]:
        break

print(f"Found {len(ids)} transcriptions")

Export in batches of 100

Bulk export accepts up to 100 IDs per call. Chunk the list and write each ZIP to disk.

import io, zipfile, pathlib

OUT = pathlib.Path("memo-archive")
OUT.mkdir(exist_ok=True)

for i in range(0, len(ids), 100):
    batch = ids[i : i + 100]
    resp = httpx.post(
        f"{BASE}/transcriptions/export",
        headers=HEADERS,
        json={"ids": batch, "format": "md"},
    )
    resp.raise_for_status()
    with zipfile.ZipFile(io.BytesIO(resp.content)) as zf:
        zf.extractall(OUT)
    print(f"Batch {i // 100 + 1}: {len(batch)} files")

Mind the rate limit

Data endpoints allow 500 requests/minute. Exporting thousands of meetings in 100-item batches stays well under that — but if you parallelise heavily, add a small delay between batches to avoid 429.

See also

On this page