Skip to content
FireConvert

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.

POST

/api/v1/convert/image

Available

Convert 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.jpg

Request — 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.webp

Parameters

NameTypeDefaultDescription
file*binary / file_url / file_base64Source image (multipart or JSON).
targetenumkeep`keep` | `jpeg` | `png` | `webp` | `avif` | `pdf`
qualityinteger 30–10085Encoder quality for JPEG/WebP/AVIF.
stripMetadatabooleantrueDrop EXIF / XMP / IPTC from output.
autoOrientbooleantrueBake EXIF orientation rotation into pixels.
resizeWidthinteger 1–10000Target width (with resizeHeight).
resizeHeightinteger 1–10000Target height (with resizeWidth).
resizeFitenuminside`inside` | `contain` | `cover` | `fill`
resizeWithoutEnlargementbooleantrueNever upscale past the source size.
cropWidth / cropHeightinteger 1–10000Explicit pixel-box crop.
cropX / cropYinteger 0–10000Crop origin. Omit for center-crop.
cropAspectstringAspect 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/pdf
  • X-FC-Output-Format — the extension of the returned file
  • X-FC-Input-Bytes / X-FC-Output-Bytes
  • X-RateLimit-Limit / X-RateLimit-Remaining
POST

/api/v1/convert/pdf/merge

Available

Combines 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.pdf

Limits

  • Minimum 2 files, maximum 20 per call
  • Combined input size capped by your plan's per-request ceiling
POST

/api/v1/convert/pdf/split

Available

Split 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
POST

/api/v1/convert/pdf/compress

Available

Re-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)
  • recompressImagestrue to 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 with recompressImages=true.
  • X-FC-Notice-Message — human-readable explanation to surface in your UI
POST

/api/v1/convert/pdf/to-jpg

Available

Renders 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 80
  • scale — 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.

PlanRequests / min
Free5
Basic60
Standard180
Pro600

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"
  }
}
CodeHTTPWhen
unauthorized401Bearer header missing, malformed, or revoked.
rate_limited429Per-minute quota reached. Retry-After included.
file_too_large413Payload exceeds your plan's per-file cap.
unsupported_media_type415MIME isn't in the accepted list for the endpoint.
invalid_request_error400Missing required field, malformed JSON, bad value.
internal_error500Pipeline threw. Include request_id when reporting.
Need an endpoint that isn't listed yet? Email support@fireconvertapp.com — we prioritize new endpoints based on customer requests, and the roadmap shows what's next.