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
- Bulk export — endpoint reference.
- List transcriptions — pagination details.