zapvert API
Convert files from your code, scripts and automations (n8n, Make, Zapier). One request in, the converted file out.
Quick start
curl -H "Authorization: Bearer $ZAPVERT_KEY" \
-F file=@video.mp4 \
"https://zapvert.com/api/v1/convert?to=mp3" -o video.mp3
Authentication
Send your key in the Authorization: Bearer <key> header (or X-API-Key). Keys start
with zv_live_. Keep them secret; anyone with your key can spend your quota.
POST /api/v1/convert
- Query:
to— target format, e.g.pdf,jpg,mp3. - Body:
multipart/form-datawith one fieldfile. The source format is taken from the file name's extension. - Response: the converted file (
200), with aContent-Dispositionfilename. A multi-page PDF converted to JPG/PNG returns a ZIP with one image per page. - Files are processed in memory/temporary storage and deleted as soon as the response is sent. Nothing is kept.
GET /api/v1/me
Your plan and usage:
{"plan": "pro", "period": "2026-10", "used": 12, "quota": 1000, "credits": 0, "remaining": 988, "max_file_mb": 1024}
Supported conversions
521 conversions between 53 formats. Machine-readable list: GET /formats; human-readable: all conversions.
Usage and limits
- 1 conversion = 1 unit. Audio and video use 1 unit per started 10 minutes of input.
- Monthly units reset on the 1st of each month (UTC). Prepaid credits never expire and are used after the monthly units.
- Max file size depends on your plan; requests time out after 300 seconds.
Errors
Errors are JSON: {"detail": "…"}.
400missing file ·401missing, invalid or inactive key ·402no units left413file too large ·422unsupported conversion ·500the converter failed on this file ·504timed out
Examples
Python
import os, requests
r = requests.post("https://zapvert.com/api/v1/convert", params={"to": "pdf"},
headers={"Authorization": f"Bearer {os.environ['ZAPVERT_KEY']}"},
files={"file": open("report.docx", "rb")})
r.raise_for_status()
open("report.pdf", "wb").write(r.content)
Node.js
const form = new FormData();
form.append("file", new Blob([await fs.promises.readFile("photo.heic")]), "photo.heic");
const r = await fetch("https://zapvert.com/api/v1/convert?to=jpg", {
method: "POST", headers: { Authorization: `Bearer ${process.env.ZAPVERT_KEY}` }, body: form,
});
await fs.promises.writeFile("photo.jpg", Buffer.from(await r.arrayBuffer()));
n8n / Make / Zapier: use an HTTP request step: method POST, URL above, header
Authorization, body type multipart with a binary field named file.
Get a key
Write to hello@zapvert.com. Self-service plans are coming soon.