Skip to content
pdfconversionapi

An alternative to ConvertAPI: what matches and what differs

279 of ConvertAPI's 328 documented endpoints work here on the same path and do the same job (counted on 2026-11-02).

Last updated 2026-11-02

Contents (8 sections)

Our API takes the same request shape as ConvertAPI's REST endpoint: a POST to /convert/{from}/to/{to} with a multipart form and a Bearer key, answered with the same response fields. If your code builds those multipart requests itself, moving a request we support means changing the URL and the key. ConvertAPI's own client libraries send requests a different way and do not work here yet. ConvertAPI also offers several things we do not have.

This page lists what carries over and what does not. ConvertAPI facts come from its public pages, listed under sources with the date we read them. Facts about our API come from our code and from requests we ran on 2026-11-01 and 2026-11-02.

At a glance

TopicConvertAPI, from its public pagesUs, from our code
Endpointhttps://v2.convertapi.com /convert/{from}/to/{to}https://api.pdfconversionapi.com /v2/convert/{from}/to/{to}
Conversions328 documented endpoints556; 279 of ConvertAPI's 328 endpoints work here on the same path and do the same job
Largest upload200 MB to 2 GB, by planBy plan, all files and fields together; see our planned prices
Stored resultsDownload links last 3 hoursDownload links last 3 hours; files stored in the US
Processing location8 regions, including US East and US West, with a US endpointOur cloud provider's network, not pinned to a region
Async jobsYesNot yet
Input from a URLYesNot yet
Client libraries.NET, Python, PHP, Node.js, Java, Ruby, GoNone yet. ConvertAPI's libraries do not work here; any HTTP client that sends multipart forms does
Dashboard and status pageYesA key page where you get or replace your key, see this month's usage and delete your account; no dashboard or status page yet
Security certificates and reportsISO 27001 certificate, SOC 2 Type 2 report on requestNone yet
BAA for HIPAAYesNo
Uptime SLA99.5%, or 99.95% on EnterpriseNone
Free allowance250 conversions, once, no card250 conversions a month, no card; see our planned prices
Failed requestsCountedNot counted
Conversions at once1 to 4 by plan, unlimited on EnterpriseBy plan; also 600 requests a minute per account

What works the same

These parts of a ConvertAPI-style multipart request work the same way here:

  • The conversion path. ConvertAPI's https://v2.convertapi.com/convert/docx/to/pdf is https://api.pdfconversionapi.com/v2/convert/docx/to/pdf here. The host changes and /v2 goes in front of /convert; the {from}/to/{to} part stays the same.
  • The key header. Authorization: Bearer followed by your key.
  • File fields. File for one file; Files, or Files[0], Files[1] and so on, for conversions that take several. A second file a conversion needs, such as ImageFile for an image watermark, goes in a field of that name.
  • Parameter names. ConvertAPI's names (PageRange, ImageResolution, StoreFile, FileName), in any letter case.
  • Format aliases in the path. jpeg, jpe and jfif mean jpg; tif means tiff; htm, markdown, text and dicom work too.
  • The response. ConversionCost, ConversionTime, and a Files array with FileName, FileExt, FileSize and base64 FileData. With StoreFile=true, each file has Url and FileId instead of FileData, and the link works for 3 hours.

Errors are JSON with Code and Message fields, and our Code is always the HTTP status, for example {"Code": 404, "Message": "conversion from ps to pdf is not supported"}. If your code branches on Code, check the values against our error list.

What does not carry over

We checked each item below on 2026-11-01, and the paths and options again on 2026-11-02: the client libraries by reading their source, everything else by sending requests to our API.

Client libraries

  • ConvertAPI's client libraries don't work here yet. We read the source of its Python and Node.js clients. Both upload each file to an /upload endpoint first, then send the conversion as application/x-www-form-urlencoded with the returned FileId. We have neither the upload endpoint nor urlencoded requests, so those clients fail here whatever base URL you give them. We have not checked the clients for other languages. To call us, send the multipart request yourself, as in step 2 below.

Paths

  • 279 of ConvertAPI's 328 endpoints work here on the same path and do the same job. We matched every {from}/to/{to} endpoint ConvertAPI documents against our list, counting our format aliases. One more, pdf/to/extract, has the same path and a different job (below). The other 48 return 404; each is one of the services under what ConvertAPI offers that we do not.
  • The general paths file/to/pdf, office/to/pdf and file/to/md work. They take the format from the uploaded file's name, so report.docx sent to file/to/pdf converts as it would on docx/to/pdf. file/to/pdf doesn't take every format ConvertAPI lists for it: DjVu, DWF, DWFX, EPS, Keynote, PRN and PostScript files get a 404, such as conversion from ps to pdf is not supported.
  • An older format sent to a newer format's path. ConvertAPI lists .ppt as an input for pptx/to/pdf, and .xls for xlsx/to/pdf. Here those two return 422; send the file to ppt/to/pdf or xls/to/pdf instead. In our tests (one file each), .xls on xlsx/to/csv, .vsd on vsdx/to/pdf and .doc on docx/to/pdf did convert.
  • pdf/to/extract has the same path and a different job. ConvertAPI's extracts data from documents with AI. Ours copies the pages you name in PageRange into a new PDF.

Request format

  • Multipart only. A JSON body, such as a Parameters array with base64 file data, or a urlencoded body is refused with 400. That one error has a plain-text body, not JSON.
  • No file URLs. A File field that holds a URL is read as the file's contents, so a DOCX request fails with 422. The Url parameter on HTML conversions returns 400; send the page as an HTML file. Images, stylesheets and fonts that the HTML links to are not fetched, so inline them.
  • Keys only in the header. A key in the query string (?Secret= or ?Token=) gets 401.
  • Timeout is accepted and ignored. Every conversion gets 120 seconds of engine time; after that the request returns 504.
  • No CORS headers. Call the API from your server, not from a browser.

Options

  • An option we do not apply fails the request. For each conversion, ConvertAPI documents a set of options. If you set one of them to anything but its default and our converter does not apply it, the request returns 400 and the message names the option. For DOCX to PDF, for example, PageRange and Pdfa return 400. A parameter ConvertAPI does not document for that conversion is ignored.
  • How many options we apply. Counting one option on one conversion as one setting, ConvertAPI documents 2,213 settings for the conversions we both offer. On 2026-11-02 we sent 1,777 of them, one at a time and set away from the default, to the 232 conversions we have a sample file for. The converter read 1,200 of them: 1,058 converted, and 142 got a 400 about the value we tried, such as ImageResolution must be between 36 and 600. 489 were refused as not supported yet. The other 88 failed for reasons that had nothing to do with the option, most often because the request also needed another field, such as a watermark's Text. Settings we don't apply are accepted only at their default or a few values, or refused with a 400 when changed. Step 2 shows which of the options your code sends fail.
  • Some defaults differ. PDF and document pages render to images at 150 DPI here, 200 at ConvertAPI. JPG quality is 85 here, 75 there. RespectViewport for HTML to PDF is false here, true there. If your output depends on one of these, send the value in the request; we apply all three.

Results

  • ConversionCost is always 1 per request here, whatever the number of pages or output files.
  • A result cannot be the next input. A FileId or download Url from one response cannot be passed as the file of another request. Download it and upload it again.
  • Usage is at GET /v2/usage. It returns your plan, the conversions included, used and remaining, and the period they count for.

Prices, checked 2026-11-01

ConvertAPI publishes its prices on its pricing page. For each monthly volume, this table picks the cheapest ConvertAPI plan you can buy without talking to sales. Prices are in US dollars.

Conversions a monthConvertAPI planBilled monthlyPer 1,000Billed yearly, per monthLargest fileAt once
1,000Developer$35$35.00$29200 MB1
5,000Startup$105$21.00$85300 MB2
15,000Growth$195$13.00$160500 MB3
50,000Business$390$7.80$3251 GB4
100,000Business plus 50,000 extra$2,890$28.90$2,8251 GB4
  • Conversions above a plan cost $0.05 each on every ConvertAPI plan, and fewer than 20 extra are billed as 20 (Terms).
  • Yearly plans include the whole year's conversions up front (600,000 on Business). At 100,000 a month, the other 600,000 a year are billed at $0.05 each, which averages $2,825 a month.
  • ConvertAPI sells an Enterprise plan, from 100,000 conversions a month with files up to 2 GB, by quote.
  • Its Terms count a request whether or not the conversion succeeds, and one request can count as more than one conversion.
  • The free allowance is 250 conversions, once, at signup, with no card.

Our planned prices

The table below is generated from the same file as our pricing page, so the two always match. These prices are not final and billing is not open, so only the Free plan is self-serve. The gateway enforces each plan's monthly conversions, upload size and conversions at once, and every account also gets 600 requests a minute. For higher limits before billing opens, write to sales@pdfconversionapi.com.

Free

$0 a month

Conversions included
250 a month
Per 1,000 included
$0
Each extra conversion
Stops at the limit
Billed yearly
Not offered
Largest upload
10 MB
Conversions at once
1
Support
Email

Starter

$15 a month

Conversions included
2,000 a month
Per 1,000 included
$7.50
Each extra conversion
$0.008
Billed yearly
$150 a year
Largest upload
100 MB
Conversions at once
4
Support
Email, 2 business days

Pro

$49 a month

Conversions included
15,000 a month
Per 1,000 included
$3.27
Each extra conversion
$0.005
Billed yearly
$490 a year
Largest upload
100 MB
Conversions at once
8
Support
Email, 1 business day

Business

$199 a month

Conversions included
100,000 a month
Per 1,000 included
$1.99
Each extra conversion
$0.003
Billed yearly
$1,990 a year
Largest upload
100 MB
Conversions at once
20
Support
Email, same business day

Only successful conversions count toward a plan's monthly conversions; failed requests don't. The month is a calendar month in UTC. When billing opens, we plan to bill the same way.

Price is one cost of switching. We have no SLA, no security attestation and no public track record yet, and ConvertAPI has all three.

What ConvertAPI offers that we do not

If you depend on any of these, keep those calls on ConvertAPI, or stay with it.

  • AI and e-invoice services: document and image moderation, data extraction (pdf/to/extract), redaction, watermark removal, PO file translation, Factur-X and ZUGFeRD e-invoices, and Peppol invoice conversion.
  • PostScript and print formats: PS, EPS and PRN input; PDF to PCL; PDF to fax TIFF.
  • Other formats: DjVu, DWF and Keynote to PPTX.
  • Document tools: DOCX compare, DOCX and PPTX merge, DOCX and PDF templates, PDF to CSV, JSON or XLSX, FDF form import and export, PDF/UA, and print production.
  • Async conversions and conversion from a URL (getting started).
  • Client libraries in seven languages, an MCP server, and no-code integrations.
  • A dashboard, team seats, SSO on Enterprise, a status page and an uptime SLA.
  • An ISO 27001 certificate, a SOC 2 Type 2 report on request, and a BAA for HIPAA workloads (compliance). We have none of these and cannot sign a BAA. Do not send us protected health information.
  • A choice of processing region, including a US endpoint, us-v2.convertapi.com (server locations).
  • Uploads up to 2 GB.
  • A history. The copyright notice on its site starts in 2011. Our free keys became self-serve on 2026-11-02.

What we do differently

  • More conversions: 556, of which 243 are conversions ConvertAPI's documentation does not list. Most of those are image formats (XCF, KRA, ORA, EXR, QOI and others), spreadsheets to JSON, and DWG to DXF and back. The full list is on all conversions.
  • No quiet option drops. A documented option we do not apply fails the request with a 400 that names it.
  • Nothing kept unless you ask. Results are returned in the response and not stored, unless you set StoreFile=true. Stored files live in our cloud provider's object storage, in its US jurisdiction; the subprocessor list names the provider. A job that runs every 15 minutes deletes files whose links have expired, and a 1-day storage rule is the backstop. You can delete a file early with DELETE /v2/d/{id} and the key that created it.
  • Keys and containers. An API key is shown once. We store only its SHA-256 hash and last four characters. Conversion containers run as a non-root user with internet access turned off.

The security page has the rest of how we handle files.

How to test a migration

Test with your own files and the requests your code sends today. You need a key: sign in with Google or GitHub at app.pdfconversionapi.com to get a free one. The Free plan allows 250 conversions a month, files up to 10 MB and 1 conversion at a time. For a larger test before billing opens, write to sales@pdfconversionapi.com.

1. Check that your paths exist

GET /v2/info lists every conversion and needs no key. This script needs curl and jq. Put your own conversions in the loop:

Shell
# Every conversion the API offers, one "from/to/to" line each. No key needed.
curl -sS https://api.pdfconversionapi.com/v2/info \
  | jq -r '.[] | "\(.From)/to/\(.To)"' > conversions.txt

# The conversions your code calls today:
for conversion in docx/to/pdf pptx/to/pdf pdf/to/jpg ps/to/pdf; do
  if grep -qx "$conversion" conversions.txt; then
    echo "available  $conversion"
  else
    echo "missing    $conversion"
  fi
done
Output
available  docx/to/pdf
available  pptx/to/pdf
available  pdf/to/jpg
missing    ps/to/pdf

The list uses our format names, so a path written with an alias (jpeg/to/pdf) shows as missing here even though the API accepts it.

2. Replay your requests

Send the requests your code makes to the new URL. This script sends three, writes every converted file to migration-check/, and prints each error. It needs Python 3 and requests. To run it as written, download the three sample files: input-quarterly-report.docx, input-season-guide.pdf and input-mug-product.png.

Python
import base64
import os
import pathlib

import requests

# Before: https://v2.convertapi.com (paths start with /convert/...)
BASE = "https://api.pdfconversionapi.com/v2"
KEY = os.environ["PDFCONVERSIONAPI_KEY"]

# The requests your code makes today: conversion path, input file, form fields.
CASES = [
    ("docx/to/pdf", "input-quarterly-report.docx", {}),
    ("pdf/to/jpg", "input-season-guide.pdf", {"ImageResolution": "200", "BitDepth": "8"}),
    ("png/to/jpg", "input-mug-product.png", {"ImageInterpolation": "true"}),
]

out = pathlib.Path("migration-check")
out.mkdir(exist_ok=True)

for path, name, fields in CASES:
    with open(name, "rb") as f:
        response = requests.post(
            f"{BASE}/convert/{path}",
            headers={"Authorization": f"Bearer {KEY}"},
            files=[("File", f)],
            data=fields,
            timeout=180,
        )
    result = response.json()
    if not response.ok:
        print(response.status_code, path, result["Message"])
        continue
    for file in result["Files"]:
        (out / file["FileName"]).write_bytes(base64.b64decode(file["FileData"]))
    names = ", ".join(file["FileName"] for file in result["Files"])
    print(response.status_code, path, names, f"{result['ConversionTime']} s")

Output from a run on 2026-11-02 against a local container built from our production image. Times will differ on the hosted API.

Output
200 docx/to/pdf input-quarterly-report.pdf 0.046 s
400 pdf/to/jpg BitDepth is not supported yet for PDF → JPG
200 png/to/jpg input-mug-product.jpg 0.022 s

The second line is the kind of finding this step is for: BitDepth is a documented ConvertAPI option for PDF to JPG that we do not apply, so the request fails instead of converting without it.

3. Compare the outputs

Open each file next to the one ConvertAPI returned for the same input. Check the page count, page size, fonts and image dimensions. Expect some differences, because the engines are different. The conversions marked "Guide and sample" on all conversions have a page with a sample input and output made by this API.

4. Switch with a way back

Keep the URL and the key in configuration, not in code, so a conversion that fails here can go back to ConvertAPI. Retry a 503 or a 429 after the number of seconds in its Retry-After header. On the Free plan, a 429 that says this month's conversions are used up lasts until the count starts again next month, so send those requests back to ConvertAPI. The migration guide covers each step in more detail.

Sources

ConvertAPI facts come from these pages, opened on 2026-11-01:

Facts about our API come from its source code and from requests we ran on 2026-11-01 and 2026-11-02. If something here is wrong or out of date, write to support@pdfconversionapi.com and we will correct it.

ConvertAPI is a trademark of its owner. pdfconversionapi.com is not affiliated with it.

Test your own requests against the API.