Conversion Matrix#

All 51 conversion endpoints in one place: what each one takes in, what it hands back, and where its reference page is. Find your input in the left column, copy the path from the middle, click through for parameters and code samples. A pair that is not in these tables is not supported.

Two endpoints accept many inputs at once. anything-to-pdf takes 36 file extensions and always returns a PDF; anything-to-markdown takes 22 and always returns one UTF-8 .md file. Both are listed once in the Documents table below rather than repeated for every input type they cover.

Web Pages#

Five endpoints that render a live URL in a real browser. These take a JSON body, not a file upload.

Input Output Endpoint Docs
URL PDF POST /v1/convert/url-to-pdf url-to-pdf
URL PNG screenshot POST /v1/convert/url-to-screenshot url-to-screenshot
URL Markdown POST /v1/convert/url-to-markdown url-to-markdown
Website (crawled or from sitemap.xml) ZIP of PDFs POST /v1/convert/website-to-pdf website-to-pdf
Website (crawled or from sitemap.xml) ZIP of PNGs POST /v1/convert/website-to-screenshot website-to-screenshot

The three url-to-* endpoints accept a single URL string or a list, and run synchronously for one URL. The two website-to-* endpoints discover the pages themselves and are async only: they always answer 202 with a batch_id and an output_format of zip. Screenshots are PNG; there is no JPEG screenshot option.

Documents#

Thirteen endpoints, each a multipart/form-data upload with the document in the file field.

Input Output Endpoint Docs
36 file types (Office, iWork, OpenDocument, RTF, CSV, HTML, Markdown, text, EPUB, images, SVG, PDF) PDF POST /v1/convert/anything-to-pdf anything-to-pdf
22 file types (PDF, Office, OpenDocument, RTF, CSV, HTML, Markdown, text, EPUB) Markdown POST /v1/convert/anything-to-markdown anything-to-markdown
HTML (.html, .htm) PDF POST /v1/convert/html-to-pdf html-to-pdf
Markdown (.md, .markdown) PDF POST /v1/convert/markdown-to-pdf markdown-to-pdf
Word (.doc, .docx) PDF POST /v1/convert/doc-to-pdf doc-to-pdf
Excel (.xls, .xlsx) PDF POST /v1/convert/excel-to-pdf excel-to-pdf
PowerPoint (.ppt, .pptx) PDF POST /v1/convert/ppt-to-pdf ppt-to-pdf
Apple Pages (.pages) PDF POST /v1/convert/pages-to-pdf pages-to-pdf
Apple Numbers (.numbers) PDF POST /v1/convert/numbers-to-pdf numbers-to-pdf
OpenDocument Text (.odt) PDF POST /v1/convert/odt-to-pdf odt-to-pdf
OpenDocument Spreadsheet (.ods) PDF POST /v1/convert/ods-to-pdf ods-to-pdf
OpenDocument Presentation (.odp) PDF POST /v1/convert/odp-to-pdf odp-to-pdf
OpenDocument Spreadsheet Template (.ots) PDF POST /v1/convert/ots-to-pdf ots-to-pdf

The engine differs by input, and that changes what pdf_options will accept. HTML and Markdown go through WeasyPrint and support page size, orientation, margins, headers and footers. The nine LibreOffice-backed endpoints (doc, excel, ppt, odt, ods, odp, ots, pages, numbers) take page geometry from the source document, so they honour grayscale only and return 400 if you set a geometry option explicitly.

Data Formats#

Eleven endpoints, all synchronous multipart/form-data uploads. The extension of the file you send has to match the endpoint you send it to.

Input Output Endpoint Docs
JSON (.json) XML POST /v1/convert/json-to-xml json-to-xml
XML (.xml) JSON POST /v1/convert/xml-to-json xml-to-json
JSON (.json) YAML POST /v1/convert/json-to-yaml json-to-yaml
YAML (.yaml, .yml) JSON POST /v1/convert/yaml-to-json yaml-to-json
JSON (.json) CSV POST /v1/convert/json-to-csv json-to-csv
CSV (.csv) JSON POST /v1/convert/csv-to-json csv-to-json
JSON (.json) TOML POST /v1/convert/json-to-toml json-to-toml
TOML (.toml) JSON POST /v1/convert/toml-to-json toml-to-json
CSV (.csv) XML POST /v1/convert/csv-to-xml csv-to-xml
XML (.xml) CSV POST /v1/convert/xml-to-csv xml-to-csv
Markdown (.md, .markdown) HTML POST /v1/convert/markdown-to-html markdown-to-html

Inputs must be UTF-8. There is no round-trip guarantee across a pair of endpoints: XML and CSV do not carry JSON's type information, so JSON to CSV and back returns strings.

Images#

Twenty-two endpoints, all multipart/form-data uploads. JPEG input covers .jpg and .jpeg, and HEIC input covers .heic and .heif.

Input Output Endpoint Docs
JPEG PNG POST /v1/convert/jpeg-to-png jpeg-to-png
PNG JPEG POST /v1/convert/png-to-jpeg png-to-jpeg
JPEG SVG POST /v1/convert/jpeg-to-svg jpeg-to-svg
SVG JPEG POST /v1/convert/svg-to-jpeg svg-to-jpeg
JPEG HEIC POST /v1/convert/jpeg-to-heic jpeg-to-heic
HEIC JPEG POST /v1/convert/heic-to-jpeg heic-to-jpeg
JPEG WebP POST /v1/convert/jpeg-to-webp jpeg-to-webp
WebP JPEG POST /v1/convert/webp-to-jpeg webp-to-jpeg
PNG SVG POST /v1/convert/png-to-svg png-to-svg
SVG PNG POST /v1/convert/svg-to-png svg-to-png
PNG HEIC POST /v1/convert/png-to-heic png-to-heic
HEIC PNG POST /v1/convert/heic-to-png heic-to-png
PNG WebP POST /v1/convert/png-to-webp png-to-webp
WebP PNG POST /v1/convert/webp-to-png webp-to-png
SVG HEIC POST /v1/convert/svg-to-heic svg-to-heic
HEIC SVG POST /v1/convert/heic-to-svg heic-to-svg
SVG WebP POST /v1/convert/svg-to-webp svg-to-webp
WebP SVG POST /v1/convert/webp-to-svg webp-to-svg
HEIC WebP POST /v1/convert/heic-to-webp heic-to-webp
WebP HEIC POST /v1/convert/webp-to-heic webp-to-heic
PDF JPEG, or a ZIP of JPEGs POST /v1/convert/pdf-to-jpeg pdf-to-jpeg
PNG, JPEG or WebP Same format as the input POST /v1/convert/compress-image compress-image

Three details to code around:

  • The four *-to-svg endpoints do not vectorize. They base64-encode the raster image into an SVG <image> element sized to the original pixels, which adds roughly 33% to the file size.
  • pdf-to-jpeg returns a raw JPEG for a single-page PDF and a ZIP of page_1.jpeg onward for a multi-page one, so write your client to handle both.
  • compress-image keeps the input format. PNG in, PNG out.
Uploads are capped per plan. A file over your plan's ceiling returns 413 before any conversion work starts. The per-plan sizes are on Rate Limits and Quotas.

Not listed here?#

Two places to look next.

Supported Formats has the raw extension lists rather than the pairs, including all 36 inputs anything-to-pdf accepts and all 22 that anything-to-markdown accepts.

Perceive is the endpoint for reading a page rather than converting it. One render of a URL returns Markdown, cleaned HTML, a screenshot, a PDF, the link and image inventory, and structured data together, which is usually what you want for an agent or a RAG pipeline.

Some missing pairs are still reachable in two steps or through a catch-all. There is no png-to-pdf endpoint, for example, but anything-to-pdf accepts .png and returns a single-page PDF. What does not exist at all is OCR, audio and video conversion. That is also why sending an image to anything-to-markdown returns 400: there is no text layer to read and no OCR pass behind it.