Conversions and formats
GET /v2/info lists every conversion with their format names, category and how many files each takes. Format aliases, and the names in a path that are tools rather than formats.
Contents (7 sections)
GET /v2/info returns every conversion the API offers as one JSON array. It needs no key. The same list, grouped by input format and with a filter, is on All conversions.
Get the list
curl -sS https://api.pdfconversionapi.com/v2/info -o conversions.json
jq length conversions.json556The list is built into the API's gateway, so it changes only when we deploy a new version. Your code can fetch it once at startup and keep it. Three paths work without being in the list: file/to/pdf, file/to/md and office/to/pdf (below).
What an entry contains
Each entry describes one conversion. This is the entry for DOCX to PDF:
{"From":"docx","To":"pdf","Title":"DOCX to PDF","Category":"Document","Inputs":"one"}| Field | What it holds |
|---|---|
From | The source format's main name, in lowercase. It is the {from} part of the path. |
To | The target format, or the name of a tool such as merge or compress. It is the {to} part of the path. |
Title | A label: both names in capitals, joined by "to". |
Category | One of 19 groups, such as Document, Spreadsheet or PDF Tools. All conversions groups by input format instead. |
Inputs | How many files the conversion takes: one, many or optional. See How many files a conversion takes. |
Each entry is called as POST /v2/convert/{From}/to/{To}, for example POST /v2/convert/docx/to/pdf.
Check a conversion before you call it
jq can answer most questions about the list. This prints every target for DOCX files:
jq -r '.[] | select(.From == "docx") | .To' conversions.json | paste -sd ' ' -docx html jpg md odt pdf png protect rtf tiff txt webp xmlAnd this counts the conversions whose target is PDF, then lists the conversions in the PDF Tools category:
jq '[.[] | select(.To == "pdf")] | length' conversions.json
jq -r '.[] | select(.Category == "PDF Tools") | "\(.From)/to/\(.To)"' conversions.json | paste -sd ' ' -61
pdf/to/compress pdf/to/crop pdf/to/delete-pages pdf/to/docx pdf/to/extract pdf/to/extract-images pdf/to/flatten pdf/to/html pdf/to/image-watermark pdf/to/md pdf/to/merge pdf/to/meta pdf/to/ocr pdf/to/pdf pdf/to/pdf-watermark pdf/to/pdfa pdf/to/pptx pdf/to/protect pdf/to/repair pdf/to/rotate pdf/to/rtf pdf/to/split pdf/to/text-watermark pdf/to/unprotect pdfa/to/validateThe list holds main names only, so a lookup for jpeg finds nothing even though the API accepts it in a path. The versions below map the aliases first. Replace the paths in the loop with the ones your code calls.
# Needs the requests package: pip install requests
import requests
# Other names the API accepts in the path, and the main name each one stands for.
ALIASES = {
"jpeg": "jpg", "jpe": "jpg", "jfif": "jpg", "tif": "tiff", "htm": "html",
"markdown": "md", "text": "txt", "dicom": "dcm",
}
def main_name(fmt):
fmt = fmt.strip().lower()
return ALIASES.get(fmt, fmt)
response = requests.get("https://api.pdfconversionapi.com/v2/info", timeout=30)
response.raise_for_status()
pairs = {(c["From"], c["To"]) for c in response.json()}
for path in ["docx/to/pdf", "JPEG/to/pdf", "tif/to/png", "pdf/to/merge", "ps/to/pdf"]:
source, _, target = path.split("/")
supported = (main_name(source), main_name(target)) in pairs
print(f"{path:14} {'yes' if supported else 'no'}")// Needs Node.js 20 or later. Save it as check.mjs and run: node check.mjs
// Other names the API accepts in the path, and the main name each one stands for.
const ALIASES = {
jpeg: "jpg", jpe: "jpg", jfif: "jpg", tif: "tiff", htm: "html",
markdown: "md", text: "txt", dicom: "dcm",
};
const mainName = (fmt) => {
const f = fmt.trim().toLowerCase();
return ALIASES[f] ?? f;
};
const response = await fetch("https://api.pdfconversionapi.com/v2/info");
if (!response.ok) throw new Error(`GET /v2/info returned ${response.status}`);
const pairs = new Set((await response.json()).map((c) => `${c.From}>${c.To}`));
for (const path of ["docx/to/pdf", "JPEG/to/pdf", "tif/to/png", "pdf/to/merge", "ps/to/pdf"]) {
const [source, , target] = path.split("/");
const supported = pairs.has(`${mainName(source)}>${mainName(target)}`);
console.log(`${path.padEnd(14)} ${supported ? "yes" : "no"}`);
}Both print:
docx/to/pdf yes
JPEG/to/pdf yes
tif/to/png yes
pdf/to/merge yes
ps/to/pdf noWe ran every example on this page on 2026-11-02 against the API server running locally in a container, with only the base URL changed (curl 8.7.1, jq 1.8.1, Python 3.14.2 with requests 2.34.2, Node.js 24.15.0).
A conversion that isn't in the list gets a 404 that names the pair, for example conversion from ps to pdf is not supported.
Format names and aliases
- Format names in the path are case-insensitive:
DOCX/to/PDFanddocx/to/pdfare the same conversion. - They may contain letters, digits and hyphens, up to 20 characters. Anything else gets
400 invalid format in the URL. - Some formats have more than one common name. The API reads each alias as the main name:
| In the path | Read as |
|---|---|
jpeg, jpe, jfif | jpg |
tif | tiff |
htm | html |
markdown | md |
text | txt |
dicom | dcm |
GET /v2/info and error messages always use the main name: jpeg/to/dwg gets conversion from jpg to dwg is not supported.
How many files a conversion takes
The Inputs field says which file fields a conversion reads. Requests explains the fields themselves.
Inputs | Conversions | What to send |
|---|---|---|
one | 550 | Exactly one file, in File. |
many | pdf/to/merge, images/to/pdf, images/to/join, file/to/zip | Up to 50 files, each in a Files field. pdf/to/merge and images/to/join need at least two. |
optional | data/to/qrcode, data/to/barcode | The text in the Data parameter, or one text file in File. |
Names that are tools, not formats
{to} is not always a file format. For PDFs it can name a tool: merge, split, compress, rotate, protect, unprotect, ocr, crop, flatten, repair, delete-pages, extract, extract-images, extract-attachments, meta, rasterize, resize, text-watermark, image-watermark and pdf-watermark. Our pdf/to/extract copies the pages you list in PageRange into a new PDF.
Outside PDFs:
jpg/to/compressandpng/to/compressre-encode an image to make the file smaller (PNG without loss).docx/to/protect,pptx/to/protectandxlsx/to/protectadd a password to the file.png/to/qrdata, and the same path for BMP, GIF, JPG, TIFF and WebP, reads a QR code from the image and returns its text as JSON.
A few {from} names describe what you send rather than a file type:
{from} | What you send | Conversions |
|---|---|---|
images | Image files, in Files | images/to/pdf (one page per image), images/to/join (one image) |
file | Files of any type, in Files | file/to/zip |
file | One file whose name ends in its format, such as report.docx | file/to/pdf and file/to/md, which convert the file as the path for its format would (docx/to/pdf for report.docx). A format with no such path gets that path's 404, for example conversion from ps to pdf is not supported. |
office | One Word, Excel or PowerPoint file or template, or a WPD, RTF, LOG or CSV file, named with its format | office/to/pdf. Other formats get a 400 that names the path to use: office/to/pdf takes Word, Excel and PowerPoint files; send a .png file to /v2/convert/png/to/pdf. |
data | Text, in the Data parameter or a text file | data/to/qrcode, data/to/barcode |
email | An EML or MSG file | email/to/extract (its attachments), email/to/metadata (sender, recipients, date and more, as JSON) |
barcode, qrcode | An image or PDF with codes on it | barcode/to/data, qrcode/to/data (what was read, as JSON) |
pdfa | A PDF/A file | pdfa/to/validate (a JSON report with a compliant field) |
file/to/pdf, file/to/md and office/to/pdf are not in GET /v2/info, because each one stands for many conversions. An upload whose name doesn't end in a format, such as report, gets 400 file/to/pdf needs the uploaded file's name to end in its format, such as report.docx. Options are checked as on the format's own path, so PageRange sent to office/to/pdf with a DOCX file gets PageRange is not supported yet for DOCX → PDF.
What the list does not tell you
- Which options a conversion applies. The guides for common conversions list them, for example DOCX to PDF, PDF to JPG and Merge PDF. For the rest, the rule in Requests applies: a documented option we can't apply gets a 400 that names it.
- Size and time limits. Most are the same for every conversion. Limits lists them, with the exceptions, such as HTML that needs a browser.