An alternative to ConvertAPI: what matches and what differs
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
| Topic | ConvertAPI, from its public pages | Us, from our code |
|---|---|---|
| Endpoint | https://v2.convertapi.com /convert/{from}/to/{to} | https://api.pdfconversionapi.com /v2/convert/{from}/to/{to} |
| Conversions | 328 documented endpoints | 556; 279 of ConvertAPI's 328 endpoints work here on the same path and do the same job |
| Largest upload | 200 MB to 2 GB, by plan | By plan, all files and fields together; see our planned prices |
| Stored results | Download links last 3 hours | Download links last 3 hours; files stored in the US |
| Processing location | 8 regions, including US East and US West, with a US endpoint | Our cloud provider's network, not pinned to a region |
| Async jobs | Yes | Not yet |
| Input from a URL | Yes | Not yet |
| Client libraries | .NET, Python, PHP, Node.js, Java, Ruby, Go | None yet. ConvertAPI's libraries do not work here; any HTTP client that sends multipart forms does |
| Dashboard and status page | Yes | A 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 reports | ISO 27001 certificate, SOC 2 Type 2 report on request | None yet |
| BAA for HIPAA | Yes | No |
| Uptime SLA | 99.5%, or 99.95% on Enterprise | None |
| Free allowance | 250 conversions, once, no card | 250 conversions a month, no card; see our planned prices |
| Failed requests | Counted | Not counted |
| Conversions at once | 1 to 4 by plan, unlimited on Enterprise | By 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/pdfishttps://api.pdfconversionapi.com/v2/convert/docx/to/pdfhere. The host changes and/v2goes in front of/convert; the{from}/to/{to}part stays the same. - The key header.
Authorization: Bearerfollowed by your key. - File fields.
Filefor one file;Files, orFiles[0],Files[1]and so on, for conversions that take several. A second file a conversion needs, such asImageFilefor 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,jpeandjfifmeanjpg;tifmeanstiff;htm,markdown,textanddicomwork too. - The response.
ConversionCost,ConversionTime, and aFilesarray withFileName,FileExt,FileSizeand base64FileData. WithStoreFile=true, each file hasUrlandFileIdinstead ofFileData, 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
/uploadendpoint first, then send the conversion asapplication/x-www-form-urlencodedwith the returnedFileId. 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/pdfandfile/to/mdwork. They take the format from the uploaded file's name, soreport.docxsent tofile/to/pdfconverts as it would ondocx/to/pdf.file/to/pdfdoesn't take every format ConvertAPI lists for it: DjVu, DWF, DWFX, EPS, Keynote, PRN and PostScript files get a 404, such asconversion 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 forxlsx/to/pdf. Here those two return 422; send the file toppt/to/pdforxls/to/pdfinstead. In our tests (one file each), .xls onxlsx/to/csv, .vsd onvsdx/to/pdfand .doc ondocx/to/pdfdid convert. pdf/to/extracthas the same path and a different job. ConvertAPI's extracts data from documents with AI. Ours copies the pages you name inPageRangeinto a new PDF.
Request format
- Multipart only. A JSON body, such as a
Parametersarray 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
Filefield that holds a URL is read as the file's contents, so a DOCX request fails with 422. TheUrlparameter 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. Timeoutis 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,
PageRangeandPdfareturn 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'sText. 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.
RespectViewportfor HTML to PDF isfalsehere,truethere. If your output depends on one of these, send the value in the request; we apply all three.
Results
ConversionCostis always 1 per request here, whatever the number of pages or output files.- A result cannot be the next input. A
FileIdor downloadUrlfrom 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 month | ConvertAPI plan | Billed monthly | Per 1,000 | Billed yearly, per month | Largest file | At once |
|---|---|---|---|---|---|---|
| 1,000 | Developer | $35 | $35.00 | $29 | 200 MB | 1 |
| 5,000 | Startup | $105 | $21.00 | $85 | 300 MB | 2 |
| 15,000 | Growth | $195 | $13.00 | $160 | 500 MB | 3 |
| 50,000 | Business | $390 | $7.80 | $325 | 1 GB | 4 |
| 100,000 | Business plus 50,000 extra | $2,890 | $28.90 | $2,825 | 1 GB | 4 |
- 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
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
| Plan detail | Free | Starter | Pro | Business |
|---|---|---|---|---|
| Per month | $0 | $15 | $49 | $199 |
| Conversions included | 250 a month | 2,000 a month | 15,000 a month | 100,000 a month |
| Per 1,000 included | $0 | $7.50 | $3.27 | $1.99 |
| Each extra conversion | Stops at the limit | $0.008 | $0.005 | $0.003 |
| Billed yearly | Not offered | $150 a year | $490 a year | $1,990 a year |
| Largest upload | 10 MB | 100 MB | 100 MB | 100 MB |
| Conversions at once | 1 | 4 | 8 | 20 |
| Support | Email, 2 business days | Email, 1 business day | 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 withDELETE /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:
# 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
doneavailable docx/to/pdf
available pptx/to/pdf
available pdf/to/jpg
missing ps/to/pdfThe 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.
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.
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 sThe 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:
- Home page: convertapi.com
- Pricing: convertapi.com/pricing
- Terms: convertapi.com/terms
- Getting started: convertapi.com/docs/getting-started
- Server locations: convertapi.com/docs/servers-location
- Compliance: convertapi.com/compliance
- Conversion pages, one per endpoint: convertapi.com/sitemap.xml
- Client libraries: convertapi-python and convertapi-nodejs on GitHub
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.