Export your whole archive
Back up or migrate everything — page through every transcription with limit and offset and export your whole Specala 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.specala.ai/api/v1/developer"
HEADERS = {"Authorization": "Bearer sk_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("specala-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.
Working with AI assistants
Prompts, patterns and multi-step workflows that get the most out of Specala AI inside Claude, ChatGPT, Cursor and Claude Code.
Overview
Base URL, bearer-token authentication, conventions (UUIDs, ISO 8601, limit/offset pagination) and the full endpoint list for the Specala AI REST API.