API docs
Convert files over HTTP. Bearer auth, per-minute rate limits, zero retention. If you need an endpoint not listed below, ask — we add to this catalog based on what customers actually use.
Authentication
Every request needs Authorization: Bearer fc_live_<key>. Generate a key at /dashboard/api-keys. The raw key is shown exactly once at creation — we only store its SHA-256.
/api/v1/convert/image
AvailableConvert one image to JPEG, PNG, WebP, AVIF, or a single-page PDF. Supports HEIC/HEIF decode, EXIF auto-orient, metadata strip, resize, and center-crop.
Request — multipart/form-data
curl -X POST https://fireconvertapp.com/api/v1/convert/image \
-H "Authorization: Bearer fc_live_YOUR_KEY" \
-F "file=@photo.heic" \
-F "target=jpeg" \
-F "quality=85" \
--output photo.jpgRequest — JSON body (`file_url` or `file_base64`)
curl -X POST https://fireconvertapp.com/api/v1/convert/image \
-H "Authorization: Bearer fc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"file_url":"https://example.com/photo.png","target":"webp","quality":80}' \
--output photo.webpParameters
| Name | Type | Default | Description |
|---|---|---|---|
file* | binary / file_url / file_base64 | — | Source image (multipart or JSON). |
target | enum | keep | `keep` | `jpeg` | `png` | `webp` | `avif` | `pdf` |
quality | integer 30–100 | 85 | Encoder quality for JPEG/WebP/AVIF. |
stripMetadata | boolean | true | Drop EXIF / XMP / IPTC from output. |
autoOrient | boolean | true | Bake EXIF orientation rotation into pixels. |
resizeWidth | integer 1–10000 | — | Target width (with resizeHeight). |
resizeHeight | integer 1–10000 | — | Target height (with resizeWidth). |
resizeFit | enum | inside | `inside` | `contain` | `cover` | `fill` |
resizeWithoutEnlargement | boolean | true | Never upscale past the source size. |
cropWidth / cropHeight | integer 1–10000 | — | Explicit pixel-box crop. |
cropX / cropY | integer 0–10000 | — | Crop origin. Omit for center-crop. |
cropAspect | string | — | Aspect ratio like `16:9`. Mutually exclusive with cropWidth+cropHeight. |
Response
Binary body (the converted image) plus these headers:
Content-Type— image/jpeg, image/png, image/webp, image/avif, or application/pdfX-FC-Output-Format— the extension of the returned fileX-FC-Input-Bytes/X-FC-Output-BytesX-RateLimit-Limit/X-RateLimit-Remaining
/api/v1/convert/pdf/merge
AvailableCombines 2–20 PDFs into a single document, in the order provided.
Request — multipart/form-data
curl -X POST https://fireconvertapp.com/api/v1/convert/pdf/merge \ -H "Authorization: Bearer fc_live_YOUR_KEY" \ -F "files=@chapter1.pdf" \ -F "files=@chapter2.pdf" \ -F "files=@chapter3.pdf" \ --output book.pdf
Request — JSON (URLs)
curl -X POST https://fireconvertapp.com/api/v1/convert/pdf/merge \
-H "Authorization: Bearer fc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"files":["https://…/a.pdf","https://…/b.pdf"]}' \
--output merged.pdfLimits
- Minimum 2 files, maximum 20 per call
- Combined input size capped by your plan's per-request ceiling
/api/v1/convert/pdf/split
AvailableSplit a PDF by page ranges. Returns a ZIP of the resulting parts.
Request
curl -X POST https://fireconvertapp.com/api/v1/convert/pdf/split \ -H "Authorization: Bearer fc_live_YOUR_KEY" \ -F "file=@document.pdf" \ -F "ranges=1-3,5,7-9" \ --output split.zip
Parameters
file— the source PDF (required)ranges— comma-separated page groups, 1-indexed.1-3,5,7-9→ three files containing pages 1-3, page 5, and pages 7-9 respectively
/api/v1/convert/pdf/compress
AvailableRe-saves with object-stream compression + metadata strip. Returns the original file untouched if the save yields less than 1% savings (see the X-FC-Notice header) — our honesty guarantee.
Request
curl -X POST https://fireconvertapp.com/api/v1/convert/pdf/compress \ -H "Authorization: Bearer fc_live_YOUR_KEY" \ -F "file=@document.pdf" \ -F "recompressImages=true" \ -F "quality=80" \ --output compressed.pdf
Parameters
file— the source PDF (required)recompressImages—trueto enable deep-compress (rasterize + JPEG re-encode); default off (wrapper-only re-save)quality— JPEG quality 30–100 for the deep-compress path; default 85
Response headers of note
X-FC-Notice: no_savings_passthrough— output is the original file (a basic re-save couldn't shrink it further). Retry withrecompressImages=true.X-FC-Notice-Message— human-readable explanation to surface in your UI
/api/v1/convert/pdf/to-jpg
AvailableRenders every PDF page as a JPG, packaged as a ZIP.
Request
curl -X POST https://fireconvertapp.com/api/v1/convert/pdf/to-jpg \ -H "Authorization: Bearer fc_live_YOUR_KEY" \ -F "file=@document.pdf" \ -F "quality=85" \ -F "scale=2.083" \ --output pages.zip
Parameters
file— the source PDF (required)quality— JPEG quality 30–100; default 80scale— DPI multiplier on top of PDF's native 72 DPI; 1.0 = 72 DPI web, 2.083 = 150 DPI recommended, 4.167 = 300 DPI print
Rate limits
Per-minute, per-key sliding window. When exceeded: 429 rate_limited with a Retry-After header.
| Plan | Requests / min |
|---|---|
| Free | 5 |
| Basic | 60 |
| Standard | 180 |
| Pro | 600 |
Errors
All errors return a JSON envelope — the error.code is stable and safe to branch on. doc_url deep-links into this page.
{
"error": {
"type": "file_too_large",
"code": "file_too_large",
"message": "File exceeds your plan's per-file size cap.",
"doc_url": "https://fireconvertapp.com/api/docs#file_too_large"
}
}| Code | HTTP | When |
|---|---|---|
unauthorized | 401 | Bearer header missing, malformed, or revoked. |
rate_limited | 429 | Per-minute quota reached. Retry-After included. |
file_too_large | 413 | Payload exceeds your plan's per-file cap. |
unsupported_media_type | 415 | MIME isn't in the accepted list for the endpoint. |
invalid_request_error | 400 | Missing required field, malformed JSON, bad value. |
internal_error | 500 | Pipeline threw. Include request_id when reporting. |