Utilities & AI

File Conversion API API

The File Convert API handles PDF and document operations as clean JSON.

31 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary pdf_extract_text endpoint returns per-page text, page count, character count, empty-page count and a scanned flag, and you can read metadata, merge, split, rotate, convert PDF to images and images to PDF. It is built for document pipelines and data extraction that need PDF operations without a desktop tool. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, pdf_extract_text, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/file-convert/v1/pdf_extract_text",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "file_b64": "JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "file-convert",
    "endpoint": "pdf_extract_text",
    "mode": "live",
    "latency_ms": 531.5,
    "record_count": 1,
    "bytes": 550,
    "cache_hit": false,
    "input_format": "pdf",
    "input_bytes": 550,
    "output_bytes": 0,
    "input_source": "base64"
  },
  "data": {
    "pages": [
      {
        "page": 1,
        "text": "ReefAPI golden test PDF"
      }
    ],
    "page_count": 1,
    "pages_extracted": 1,
    "characters": 23,
    "empty_pages": 0,
    "likely_scanned": false,
    "stop_reason": "complete"
  }
}
Actions

What the File Conversion API API does

ActionDescriptionConcrete use caseKey params
pdf_extract_textExtract text from a PDF (per page). mode=layout preserves visual alignment (pdfplumber); mode=plain is fastest. Flags likely-scanned PDFs.Ops teams call pdf_extract_text to extract text from a PDF (per page).none
pdf_metadataPDF document properties: title/author/dates/producer, page count & size, encryption flag, AcroForm field count.Developer tools call pdf_metadata to get pDF document properties.none
pdf_mergeMerge 2-20 PDFs into one (input order preserved). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Validation workflows call pdf_merge to get merge 2-20 PDFs into one (input order preserved).none
pdf_splitSplit a PDF: pages='2-5,8' extracts those pages into one PDF; chunk_size=N splits the whole document into N-page parts (max 100 parts). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Data-quality teams call pdf_split to get split a PDF.none
pdf_rotateRotate pages clockwise by 90/180/270° (all pages or a range). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Ops teams call pdf_rotate to get rotate pages clockwise by 90/180/270° (all pages or a range).none
pdf_to_imagesRender PDF pages to PNG/JPG/WebP (pypdfium2). Max 20 pages per call, dpi ≤ 300. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Developer tools call pdf_to_images to render PDF pages to PNG/JPG/WebP (pypdfium2).none
images_to_pdfCombine 1-20 images into a single PDF (one page per image; page_size=a4/letter centers each image on a standard page). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Validation workflows call images_to_pdf to get combine 1-20 images into a single PDF (one page per image; page_size=a4/letter centers each i….none
pdf_watermarkStamp a text or image watermark over pages (true alpha overlay; diagonal or centred). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Data-quality teams call pdf_watermark to get stamp a text or image watermark over pages (true alpha overlay; diagonal or centred).none
pdf_fill_formAcroForm filling. Without 'fields' → lists the form fields (discovery). With 'fields' → fills and returns the PDF (NeedAppearances set). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Ops teams call pdf_fill_form to get acroForm filling.none
pdf_redactTRUE redaction: target pages are re-rendered with the matches blacked out and REBUILT — original text/fonts/layers destroyed, then verified by re-extraction (output withheld if any remnant). Redacted pages lose selectable text. Find by 'terms' and/or explicit 'areas'. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Developer tools call pdf_redact to get tRUE redaction.none
pdf_compressShrink a PDF: stream recompression + embedded-image re-encode (level=low/balanced/strong; strong also caps image resolution). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Validation workflows call pdf_compress to get shrink a PDF.none
pdf_protectEncrypt a PDF with AES-256 (user password to open; optional owner password). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Data-quality teams call pdf_protect to get encrypt a PDF with AES-256 (user password to open; optional owner password).user_password
pdf_unlockRemove encryption from a PDF — REQUIRES the correct password (we never crack or bypass protection). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Ops teams call pdf_unlock to get remove encryption from a PDF.password
pdf_repairBest-effort structural repair (broken xref/trailer/stream lengths) via a tolerant qpdf parse + clean rewrite. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Developer tools call pdf_repair to get best-effort structural repair (broken xref/trailer/stream lengths) via a tolerant qpdf parse….none
image_convertConvert between raster formats (jpg/png/webp/tiff/bmp/gif/avif; animated gif/webp preserved where the target supports it). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Validation workflows call image_convert to convert between raster formats (jpg/png/webp/tiff/bmp/gif/avif; animated gif/webp preserved w….to
image_resizeResize with fit=contain (aspect kept, fits inside box) / cover (fills+crops) / stretch. No upscaling unless upscale=true. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Data-quality teams call image_resize to get resize with fit=contain (aspect kept, fits inside box) / cover (fills+crops) / stretch.none
image_optimizeSmart perceptual compression (TinyPNG-style): binary-searches the lowest quality whose decoded result stays visually equal to the source, per a per-channel error budget (effort=low/balanced/strong). Optionally convert to webp/avif while optimizing. Never returns a bigger file. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Ops teams call image_optimize to get smart perceptual compression (TinyPNG-style).none
image_thumbnailFast thumbnail (16-2048px box; square=true centre-crops to a square). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Developer tools call image_thumbnail to get fast thumbnail (16-2048px box; square=true centre-crops to a square).none
image_metadataRead image facts + EXIF (+GPS) — and with strip=true return a copy with ALL metadata removed (EXIF/GPS/XMP/ICC).Validation workflows call image_metadata to read image facts + EXIF (+GPS).none
image_rotateRotate (90/180/270 clockwise) and/or flip (horizontal/vertical). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Data-quality teams call image_rotate to get rotate (90/180/270 clockwise) and/or flip (horizontal/vertical).none
image_cropCrop a pixel box (x, y from top-left + width × height). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Ops teams call image_crop to get crop a pixel box (x, y from top-left + width × height).width, height
doc_to_markdownDocument → clean markdown for RAG/agents. PDF uses a layout engine (headings from font sizes, real pipe-tables, reading order); docx/pptx/xlsx/html via MarkItDown. mode=fast trades structure for speed. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Developer tools call doc_to_markdown to get document → clean markdown for RAG/agents.none
extract_tablesPull every table out of a PDF / xlsx / docx / html as JSON rows (+optional CSV files). Max 50 tables.Validation workflows call extract_tables to pull every table out of a PDF / xlsx / docx / html as JSON rows (+optional CSV files).none
ocr_imageOCR an image → text + word count + confidence (tesseract 5, printed text; languages: eng/deu/fra/spa/tur, combinable).Data-quality teams call ocr_image to get oCR an image → text + word count + confidence (tesseract 5, printed text; languages.none
ocr_pdfOCR a scanned PDF: output=text → per-page text+confidence; output=searchable_pdf → image+invisible-text-layer PDF. OCR-light: max 10 pages per call (use 'pages' to window). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Ops teams call ocr_pdf to get oCR a scanned PDF.none
office_convertOffice → PDF (and html/txt; spreadsheets also → csv; text docs also → docx) via LibreOffice headless — docx/doc/odt/rtf/pptx/ppt/odp/xlsx/xls/ods/html/markdown/txt/csv in. Fonts: Noto (CJK/RTL) + Liberation (Arial/Times metrics). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Developer tools call office_convert to get office → PDF (and html/txt; spreadsheets also → csv; text docs also → docx) via LibreOffice h….none
audio_extractExtract the audio track from a video (mp4/webm/mkv/avi) → mp3 (default) / m4a / wav / flac / ogg / opus. Stream-copies losslessly when the codec already matches the target. NOT a video transcoder (phase-2). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Validation workflows call audio_extract to extract the audio track from a video (mp4/webm/mkv/avi) → mp3 (default) / m4a / wav / flac /….none
audio_convertConvert between audio formats (mp3/wav/flac/ogg/m4a in → mp3/m4a/wav/flac/ogg/opus out; ffmpeg LGPL build). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Data-quality teams call audio_convert to convert between audio formats (mp3/wav/flac/ogg/m4a in → mp3/m4a/wav/flac/ogg/opus out; ffmpe….to
media_probeffprobe metadata for any audio/video file: container, duration, bitrate, per-stream codec/sample-rate/resolution, curated tags.Ops teams call media_probe to get ffprobe metadata for any audio/video file.none
data_convertDeterministic data-format conversion: CSV ↔ JSON ↔ XML ↔ YAML ↔ Excel(xlsx) (any direction; tabular targets need tabular-shaped input — clean error otherwise). 200k-row cap. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.Developer tools call data_convert to get deterministic data-format conversion.to
formatsCapability matrix: every action with its accepted input formats, targets and caps — machine-readable (the Zamzar /formats equivalent).Validation workflows call formats to get capability matrix.none
Code samples

Call pdf_extract_text from your stack

curl -X POST https://api.reefapi.com/file-convert/v1/pdf_extract_text \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.file-convert.pdf_extract_text with {"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="}.
Use cases

Who uses this API and why

  • Data pipelines call pdf_extract_text to turn PDFs into searchable or RAG-ready text.
  • Document tools use pdf_merge and pdf_split to assemble files.
  • OCR triage uses the scanned flag to route image-only PDFs correctly.
FAQ

Questions developers ask before integrating

What is the File Conversion API API?

File Conversion API API is a ReefAPI endpoint group for file conversion api It returns live JSON through POST requests under /file-convert/v1.

Is the File Conversion API API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. File Conversion API calls use the same shared credit balance as every other ReefAPI engine.

Do I need a File Conversion API login or account?

No login to File Conversion API is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the File Conversion API data?

The page example is captured from a live pdf_extract_text call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the File Conversion API API use?

File Conversion API actions currently cost 1-4 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call File Conversion API from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call file-convert actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the File Conversion API API a File Conversion API scraper?

It is the managed alternative to a DIY File Conversion API scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same file conversion api back as clean JSON.

Why does my File Conversion API scraper keep getting blocked?

Most File Conversion API scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / file-convert

File Conversion API

File Conversion API

base /file-convert/v131 endpoints
post/file-convert/v1/pdf_extract_text1 credit

Extract text from a PDF (per page). mode=layout preserves visual alignment (pdfplumber); mode=plain is fastest. Flags likely-scanned PDFs.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
pagesoptionalPage selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.
mode = plainoptionalplain · layoutplain = reading-order text; layout = whitespace-aligned text (tables stay readable).
Try in playground →
post/file-convert/v1/pdf_metadata1 credit

PDF document properties: title/author/dates/producer, page count & size, encryption flag, AcroForm field count.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
Try in playground →
post/file-convert/v1/pdf_merge1 credit

Merge 2-20 PDFs into one (input order preserved). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
files_b64optionalArray of base64 files (max 20 total inputs). Combine freely with file_urls; base64 entries come first in the processing order.
file_urlsoptionalArray of https URLs (each SSRF-guarded and fetched server-side).
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
Try in playground →
post/file-convert/v1/pdf_split1 credit

Split a PDF: pages='2-5,8' extracts those pages into one PDF; chunk_size=N splits the whole document into N-page parts (max 100 parts). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
pagesoptionalPages to EXTRACT into a single PDF (mutually exclusive with chunk_size).
chunk_sizeoptional1–500Split into parts of N pages each (1 = one PDF per page). Ignored when 'pages' is given.
Try in playground →
post/file-convert/v1/pdf_rotate1 credit

Rotate pages clockwise by 90/180/270° (all pages or a range). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
pagesoptionalPage selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.
angle = 90optional90 · 180 · 270Clockwise rotation angle.
Try in playground →
post/file-convert/v1/pdf_to_images1 credit

Render PDF pages to PNG/JPG/WebP (pypdfium2). Max 20 pages per call, dpi ≤ 300. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
pagesoptionalPage selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.
to = pngoptionalpng · jpg · webpImage format for the rendered pages (alias: format).
dpi = 150optional36–300Render resolution (36-300).
Try in playground →
post/file-convert/v1/images_to_pdf2 credits

Combine 1-20 images into a single PDF (one page per image; page_size=a4/letter centers each image on a standard page). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
files_b64optionalArray of base64 files (max 20 total inputs). Combine freely with file_urls; base64 entries come first in the processing order.
file_urlsoptionalArray of https URLs (each SSRF-guarded and fetched server-side).
file_b64optionalSingle image as base64 (or use files_b64).
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
page_size = autooptionalauto · a4 · letterauto = page matches each image; a4/letter = white page, image fitted+centred.
Try in playground →
post/file-convert/v1/pdf_watermark1 credit

Stamp a text or image watermark over pages (true alpha overlay; diagonal or centred). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
pagesoptionalPage selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.
textoptionalWatermark text (UTF-8, DejaVu font). Provide text OR image_b64/image_url.
image_b64optionalWatermark image as base64 (PNG with alpha recommended; scaled to ~40% page width).
image_urloptionalWatermark image URL (SSRF-guarded fetch).
opacity = 0.25optional0.02–1Watermark opacity 0.02-1.0.
position = diagonaloptionaldiagonal · centerText placement.
color = grayoptionalgray · red · black · blueText colour.
font_sizeoptional8–400Text size in pixels at 2× page scale (default: auto ≈ page/10).
Try in playground →
post/file-convert/v1/pdf_fill_form1 credit

AcroForm filling. Without 'fields' → lists the form fields (discovery). With 'fields' → fills and returns the PDF (NeedAppearances set). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
fieldsoptional{field_name: value} map. Checkbox values are usually /Yes — run discovery mode first.
Try in playground →
post/file-convert/v1/pdf_redact1 credit

TRUE redaction: target pages are re-rendered with the matches blacked out and REBUILT — original text/fonts/layers destroyed, then verified by re-extraction (output withheld if any remnant). Redacted pages lose selectable text. Find by 'terms' and/or explicit 'areas'. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
termsoptionalText terms to find & redact (case-insensitive, matched across words on a line).
areasoptionalExplicit boxes: {page, x0, y0, x1, y1} in PDF points, origin TOP-left.
dpi = 200optional120–300Rebuild resolution for redacted pages.
Try in playground →
post/file-convert/v1/pdf_compress1 credit

Shrink a PDF: stream recompression + embedded-image re-encode (level=low/balanced/strong; strong also caps image resolution). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
level = balancedoptionallow · balanced · strongCompression aggressiveness.
Try in playground →
post/file-convert/v1/pdf_protect1 credit

Encrypt a PDF with AES-256 (user password to open; optional owner password). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
user_passwordrequiredPassword required to OPEN the PDF (min 4 chars).
owner_passwordoptionalOptional owner/permissions password (defaults to the user password.
Try in playground →
post/file-convert/v1/pdf_unlock1 credit

Remove encryption from a PDF — REQUIRES the correct password (we never crack or bypass protection). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordrequiredThe PDF's legitimate password.
Try in playground →
post/file-convert/v1/pdf_repair1 credit

Best-effort structural repair (broken xref/trailer/stream lengths) via a tolerant qpdf parse + clean rewrite. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
Try in playground →
post/file-convert/v1/image_convert1 credit

Convert between raster formats (jpg/png/webp/tiff/bmp/gif/avif; animated gif/webp preserved where the target supports it). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
torequiredjpg · png · webp · tiff · bmp · gif · avifTarget format: jpg, png, webp, tiff, bmp, gif, avif.
quality = 85optional1–100Encode quality 1-100 (jpg/webp/avif).
Try in playground →
post/file-convert/v1/image_resize1 credit

Resize with fit=contain (aspect kept, fits inside box) / cover (fills+crops) / stretch. No upscaling unless upscale=true. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
widthoptional1–20000Target width px (give width and/or height).
heightoptional1–20000Target height px.
fit = containoptionalcontain · cover · stretchResize strategy.
upscale = falseoptionalAllow enlarging beyond the source size.
to = optionaljpg · png · webp · tiff · bmp · gif · avifOptional output format (default: keep source).
quality = 85optional1–100Encode quality 1-100 (jpg/webp/avif).
Try in playground →
post/file-convert/v1/image_optimize1 credit

Smart perceptual compression (TinyPNG-style): binary-searches the lowest quality whose decoded result stays visually equal to the source, per a per-channel error budget (effort=low/balanced/strong). Optionally convert to webp/avif while optimizing. Never returns a bigger file. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
to = autooptionalauto · jpg · png · webp · avifauto = keep format (exotic sources → webp).
effort = balancedoptionallow · balanced · strongHow much visual error to allow.
Try in playground →
post/file-convert/v1/image_thumbnail1 credit

Fast thumbnail (16-2048px box; square=true centre-crops to a square). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
size = 256optional16–2048Bounding-box size in px.
square = falseoptionalCentre-crop to square.
to = webpoptionalwebp · jpg · pngThumbnail format.
Try in playground →
post/file-convert/v1/image_metadata1 credit

Read image facts + EXIF (+GPS) — and with strip=true return a copy with ALL metadata removed (EXIF/GPS/XMP/ICC).

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
strip = falseoptionalAlso return a metadata-stripped copy.
Try in playground →
post/file-convert/v1/image_rotate1 credit

Rotate (90/180/270 clockwise) and/or flip (horizontal/vertical). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
angle = 0optional0 · 90 · 180 · 270Clockwise rotation.
flip = optionalhorizontal · verticalOptional mirror.
Try in playground →
post/file-convert/v1/image_crop1 credit

Crop a pixel box (x, y from top-left + width × height). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
x = 0optional0–Left edge px.
y = 0optional0–Top edge px.
widthrequired1–Crop width px.
heightrequired1–Crop height px.
Try in playground →
post/file-convert/v1/doc_to_markdown4 credits

Document → clean markdown for RAG/agents. PDF uses a layout engine (headings from font sizes, real pipe-tables, reading order); docx/pptx/xlsx/html via MarkItDown. mode=fast trades structure for speed. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
pagesoptionalPage selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.
mode = layoutoptionallayout · fastPDF only: layout = headings+tables; fast = plain text spine.
Try in playground →
post/file-convert/v1/extract_tables3 credits

Pull every table out of a PDF / xlsx / docx / html as JSON rows (+optional CSV files). Max 50 tables.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
pagesoptionalPage selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.
as_csv = falseoptionalAlso return each table as a CSV file.
Try in playground →
post/file-convert/v1/ocr_image2 credits

OCR an image → text + word count + confidence (tesseract 5, printed text; languages: eng/deu/fra/spa/tur, combinable).

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
language = engoptionalOCR language(s): eng, deu, fra, spa, tur — array or comma-joined.
Try in playground →
post/file-convert/v1/ocr_pdf2 credits

OCR a scanned PDF: output=text → per-page text+confidence; output=searchable_pdf → image+invisible-text-layer PDF. OCR-light: max 10 pages per call (use 'pages' to window). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
passwordoptionalPassword for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).
pagesoptionalPage selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.
language = engoptionalOCR language(s): eng, deu, fra, spa, tur.
output = textoptionaltext · searchable_pdfResult kind.
Try in playground →
post/file-convert/v1/office_convert3 credits

Office → PDF (and html/txt; spreadsheets also → csv; text docs also → docx) via LibreOffice headless — docx/doc/odt/rtf/pptx/ppt/odp/xlsx/xls/ods/html/markdown/txt/csv in. Fonts: Noto (CJK/RTL) + Liberation (Arial/Times metrics). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
to = pdfoptionalpdf · html · txt · csv · docxTarget: pdf (default) | html | txt | csv (spreadsheets only) | docx (text documents only).
from = optionalmdSet from=md when sending markdown (it has no magic bytes; .md filename also works).
Try in playground →
post/file-convert/v1/audio_extract2 credits

Extract the audio track from a video (mp4/webm/mkv/avi) → mp3 (default) / m4a / wav / flac / ogg / opus. Stream-copies losslessly when the codec already matches the target. NOT a video transcoder (phase-2). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
to = mp3optionalmp3 · m4a · wav · flac · ogg · opusAudio output format.
bitrate = optional64k · 96k · 128k · 160k · 192k · 256k · 320kTarget bitrate (forces transcode; default 192k/encoder default).
Try in playground →
post/file-convert/v1/audio_convert2 credits

Convert between audio formats (mp3/wav/flac/ogg/m4a in → mp3/m4a/wav/flac/ogg/opus out; ffmpeg LGPL build). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
torequiredmp3 · m4a · wav · flac · ogg · opusTarget format: mp3, m4a, wav, flac, ogg, opus.
bitrate = optional64k · 96k · 128k · 160k · 192k · 256k · 320kTarget bitrate.
Try in playground →
post/file-convert/v1/media_probe1 credit

ffprobe metadata for any audio/video file: container, duration, bitrate, per-stream codec/sample-rate/resolution, curated tags.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
Try in playground →
post/file-convert/v1/data_convert1 credit

Deterministic data-format conversion: CSV ↔ JSON ↔ XML ↔ YAML ↔ Excel(xlsx) (any direction; tabular targets need tabular-shaped input — clean error otherwise). 200k-row cap. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.

ParameterAllowed / rangeDescription
file_b64optionalThe input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.
file_urloptionalhttps URL of the input file — fetched server-side through the proxy pool; private/internal/metadata addresses are SSRF-blocked. Max 25MB.
filenameoptionalOptional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.
torequiredcsv · json · xml · yaml · xlsxTarget format: csv, json, xml, yaml, xlsx.
from = optionalcsv · json · xml · yaml · xlsxOptional source override for ambiguous text (e.g. YAML without a leading ---); binary formats are always sniffed.
delimiteroptionalCSV delimiter override (default: sniffed).
sheetoptionalExcel source: sheet name (default: first).
Try in playground →
post/file-convert/v1/formatsfree

Capability matrix: every action with its accepted input formats, targets and caps — machine-readable (the Zamzar /formats equivalent).

Try in playground →