FilezyAI API reference

The FilezyAI Developer API converts files in the cloud — programmatically, from your app, script, or backend. Upload a file (or a batch of images), describe what you want in one ops object, poll until the job finishes, then download the result.

Three endpoints: create task · check status · download output. Authenticate with Authorization: Bearer fz_live_… on every request. Get a key from the dashboard after subscribing on API pricing (separate from Web Pro).

Supported formats

  • Input & outputpng, jpg, jpeg, heic, svg, avif, webp, gif, pdf, docx, xlsx, pptx
  • Batch (2–50 files in one request) — png, jpg, jpeg, heic, avif, webp, gif only · max 500 MB total · each file = 1 task

Operations (ops object)

Pass ops as a JSON string on POST /v1/api/tasks. Only to is required — everything else is optional and runs in one pipeline pass.

  • to — output format (required)
  • compress — target file size range (minKb, maxKb)
  • resize — width / height, unit (px, in, cm, mm), fit mode
  • crop — crop region before resize (fractions 0–1)
  • dpi — output density (1–2400)
  • name — output base filename (no extension)
  • pages — PDF/DOCX/PPTX → image: page range e.g. 1-3,5
  • stripMetadata — remove EXIF, GPS, camera info, etc.
  • pdfPageSize — image → PDF: fit, a4, or letter
  • merge — batch only: one combined PDF/DOCX, or ZIP of separate files

Full field reference in the ops object section below.

  • One call, many operations — no separate compress / resize / rename APIs
  • Flat monthly pricingfrom $10/mo for 2,000 tasks
  • 500 MB per file · 60 create requests/min · poll & download unlimited

Authentication

Request

Send on every request:

Authorization: Bearer fz_live_…

Get a key from the dashboard after subscribing. One active key per account.

Endpoints

MethodPathPurpose
POST/v1/api/tasksCreate task (1 file or batch)
GET/v1/api/tasks/:idCheck status
GET/v1/api/tasks/:id/downloadDownload output

Create a task

POST /v1/api/tasks

Request

Content-Type: multipart/form-data

FieldTypeRequiredDescription
opsstringyesJSON string — see ops object
filefileyes*Input file. Repeat field for batch (multiple images)
formatstringnoSource format if extension is unclear (e.g. png)

Header: Authorization: Bearer fz_live_…

Examples

curl -X POST https://api.filezyai.com/v1/api/tasks \
  -H "Authorization: Bearer $FILEZY_API_KEY" \
  -F 'ops={"to":"webp","compress":{"minKb":50,"maxKb":200},"resize":{"width":1200,"unit":"px"},"name":"hero","stripMetadata":true}' \
  -F "format=png" \
  -F "file=@photo.png"

Response · 200

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "tasksUsed": 1
}

Batch: tasksUsed equals the number of files uploaded.

Check status

GET /v1/api/tasks/:id

Request

PartValue
URL paramid — task UUID from create response
HeaderAuthorization: Bearer fz_live_…

Examples

curl https://api.filezyai.com/v1/api/tasks/TASK_ID \
  -H "Authorization: Bearer $FILEZY_API_KEY"

Response

200 · processing
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "processing",
  "error": null
}
200 · done
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "done",
  "error": null,
  "output": {
    "format": "webp",
    "size": 184320,
    "filename": "hero.webp"
  },
  "download": {
    "path": "/v1/api/tasks/550e8400-e29b-41d4-a716-446655440000/download"
  }
}
200 · failed
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "failed",
  "error": "Conversion failed: …"
}

status values: queued · processing · done · failed

Download

GET /v1/api/tasks/:id/download

Request

PartValue
URL paramid — task UUID
HeaderAuthorization: Bearer fz_live_…

Call only when status is done.

Examples

curl -L https://api.filezyai.com/v1/api/tasks/TASK_ID/download \
  -H "Authorization: Bearer $FILEZY_API_KEY" \
  -o output.webp

Response

200 · file

Raw file bytes. Headers include Content-Disposition: attachment and Content-Type for the output format.

404 / 410

Task not found, not finished, or file expired (2 hours after conversion).

Batch

Send multiple file parts in one POST /v1/api/tasks request. Repeat the file field once per input — at least 2 images required. Images only · max 50 files · 500 MB total · each file = 1 task.

Set "merge": true in ops to combine into one PDF or DOCX (default for those targets). Set "merge": false to get a ZIP of separate outputs.

Examples · merged PDF

Three separate -F file=@… flags in one request:

curl -X POST https://api.filezyai.com/v1/api/tasks \
  -H "Authorization: Bearer $FILEZY_API_KEY" \
  -F 'ops={"to":"pdf","merge":true,"name":"my-album"}' \
  -F "file=@photo1.png" \
  -F "file=@photo2.jpg" \
  -F "file=@photo3.webp"

Examples · separate files (ZIP)

curl -X POST https://api.filezyai.com/v1/api/tasks \
  -H "Authorization: Bearer $FILEZY_API_KEY" \
  -F 'ops={"to":"webp","merge":false,"name":"batch-out"}' \
  -F "file=@photo1.png" \
  -F "file=@photo2.png"

The ops object

Fields

Pass as a JSON string in the ops form field. Only to is required — everything else is optional and runs in one pipeline pass.

FieldTypeRequiredDescription
tostringyesOutput format: png, jpg, jpeg, heic, svg, avif, webp, gif, pdf, docx, xlsx, pptx
compressobjectnoTarget file size range (KB). Pipeline picks quality to land between min and max.
compress.minKbnumberif compressMinimum output size in KB (≥ 0)
compress.maxKbnumberif compressMaximum output size in KB (must be > minKb)
resizeobjectnoResize output. Requires at least width or height.
resize.widthnumbernoTarget width (positive, max 100000)
resize.heightnumbernoTarget height (positive, max 100000)
resize.unitstringnopx (default) · in · cm · mm
resize.fitstringnoinside (default) · contain · cover · fill · outside
cropobjectnoCrop before resize. All values are fractions 0–1 of the source image.
crop.x · crop.ynumberif cropTop-left corner of crop region
crop.w · crop.hnumberif cropWidth and height of crop region
dpinumbernoOutput DPI (integer, 1–2400). Applies to formats that support density metadata.
namestringnoOutput base filename without extension (max 200 chars, sanitized server-side)
pagesstringnoPDF/DOCX/PPTX → image: page range e.g. 1-3,5 or all. Multiple pages → ZIP.
stripMetadatabooleannoRemove EXIF, GPS, camera info, ICC profile, etc. from output
pdfPageSizestringnoImage → PDF only: fit (default) · a4 · letter
mergebooleannoBatch only. true = one combined PDF/DOCX (default for those targets). false = ZIP.

Example

{
  "to": "webp",
  "compress": { "minKb": 50, "maxKb": 200 },
  "resize": { "width": 1200, "unit": "px", "fit": "inside" },
  "dpi": 300,
  "name": "hero",
  "stripMetadata": true
}

Limits

  • 500 MB per file
  • 50 files per batch (1 file = 1 task)
  • 60 task-creating requests per minute
  • Monthly task pool per plan — poll & download are unlimited

Errors

CodeHTTPMeaning
invalid_api_key401Bad or revoked key
api_key_required403Route requires Developer API key
subscription_inactive403No active API plan
monthly_limit_reached429Monthly task pool exhausted
rate_limit_exceeded429>60 create requests/min
file_too_large413Over 500 MB
unsupported_conversion422Invalid format pair
invalid_ops400Malformed or invalid ops JSON