/api/v1/jobs
Fields: file, from, to, optional options JSON (quality, maxWidth, bitrate, crf, dpi, preset). Success returns the converted file with X-Quota-Used and X-Quota-Limit headers.
The same engine behind this site, callable from anything that can send multipart form data. Synchronous by design: you upload, you wait a moment, you get the converted bytes. No job polling, no webhook choreography, no SDK to learn.
curl -X POST https://safeconvert.app/api/v1/jobs \ -H "Authorization: Bearer sc_live_YOUR_KEY" \ -F "file=@quarterly-report.docx" \ -F "from=docx" -F "to=pdf" \ -o quarterly-report.pdf
Fields: file, from, to, optional options JSON (quality, maxWidth, bitrate, crf, dpi, preset). Success returns the converted file with X-Quota-Used and X-Quota-Limit headers.
Your plan, this month's usage, and your limits. Poll it freely; it is cheap.
The full 212-format matrix as JSON. Public, no key needed.
curl https://safeconvert.app/api/v1/me \ -H "Authorization: Bearer sc_live_YOUR_KEY"
Every failure is JSON with a stable code: missing_key, bad_key, rate_limited, quota_exceeded, file_too_large, unsupported_pair, engine_unavailable. The error string says what to do about it, not just what happened.
{ "error": "No route from .mp3 to .png.", "code": "unsupported_pair" }| Free | Pro | Business | |
|---|---|---|---|
| Conversions / month | 500 | 10,000 | 100,000 |
| Max file size | 25 MB | 512 MB | 2048 MB |
| Requests / minute | 10 | 60 | 300 |
Because this endpoint is also LibreOffice, Ghostscript, ImageMagick, Calibre, Inkscape and FontForge, kept patched, sandboxed per job, with nothing written to permanent storage — files live for the length of one request. One integration instead of six binaries to babysit. See pricing for the paid tiers.