Skip to content
pdfconversionapi

Changelog

Changes to the API that can affect your requests, newest first.

2026-11-04

Fixed

Document properties in cut and split PDFs

  • Office, Visio and Apple files converted to PDF with PageRange now name PDF Conversion API as the Producer, as conversions of the whole file do, and no longer carry the office suite's Creator. The document's title, author and other properties stay.
  • pdf/to/split, pdf/to/extract and pdf/to/delete-pages keep the document information of the PDF you send: title, author, subject, keywords, creator, producer, dates and any entries of your own, as they were. Each output is a little larger for it. pdf/to/merge still writes no document information.

Fixed

PNG compression keeps the profile, DPI and frames

  • png/to/compress without ImageWidth or ImageHeight, on a PNG with an EXIF orientation, compresses the pixels as they are again. The color profile, the DPI and every frame of an animated PNG stay. The EXIF data keeps only the orientation, so viewers still show the image upright; other EXIF entries are left out, as on every compressed PNG. A 306 × 396 PNG with orientation 6 comes back as 306 × 396 pixels with orientation 6.
  • With ImageWidth or ImageHeight, the image is still turned upright before it is resized, and comes back without EXIF data.

Fixed

Compression checks the input format

  • png/to/compress checks that the file is a PNG before anything else, also when you send ImageWidth or ImageHeight. A JPEG sent with ImageWidth=100 gets 422 the input file could not be read: it is not a PNG image instead of a compressed file. Without a size, the message used to end it is not a PNG file.
  • jpg/to/compress sent a PNG always returns a JPEG. When the JPEG came out larger than the PNG, it used to return the PNG unchanged under a .jpg name.

Fixed

Sharper page edges

  • Pages rendered to JPG, PNG, TIFF and WebP, from PDFs and from other documents, are drawn at their exact scale again. An edge pixel that the page covers at least halfway counts as part of the page, and BackgroundColor goes under it. With BackgroundColor=black, a white page keeps white edges, also at 300 DPI, and shapes that line up with whole pixels at 72 DPI meet without a blended column between them.
  • A background or shape that stops less than 0.1 point inside the page edge, as slide backgrounds in some presentations do, is drawn to the edge, so a dark slide has no light line along its right and bottom edges.
  • Image sizes don't change, but every page image differs a little from before. The first page of our PDF to JPG sample at 72 DPI went from 64,803 to 65,272 bytes.

Changed

Page images without an alpha channel

  • Pages rendered to PNG, TIFF and WebP from PDFs, Illustrator files and office documents, such as Word, Excel and PowerPoint files, are RGB images without an alpha channel, so the files are smaller. The first page of our PDF to PNG sample went from 183,845 to 168,876 bytes. TransparentColor still adds an alpha channel, and with ColorSpace=gray it gives a gray PNG with alpha.
  • Any image without transparency written as WebP is RGB too. The file keeps its size, but it no longer says it has an alpha channel.

Changed

Passwords on PDF tools

  • A PDF that opens without a password, sent with a Password that isn't its owner password, is now converted as if no password was sent, on every PDF tool. For a PDF with restrictions, pdf/to/compress converts it, PDF to DOCX, PPTX, HTML, RTF and Markdown and pdf/to/extract-images answer 422 this PDF's permissions don't allow copying text and images; ..., pdf/to/crop answers 422 this PDF's permissions don't allow page changes; send the owner password in Password, or remove the restrictions with /v2/convert/pdf/to/unprotect and the owner password, and pdf/to/protect answers 422 this PDF's permissions don't allow changing security; .... pdf/to/meta describes the file, with opened_as_owner set to false. Several of these used to answer 422 the input file is password-protected.
  • A PDF that has only an owner password and restricts nothing, such as one made by pdf/to/protect with AllowEverything=true and no UserPassword, comes back without encryption from every PDF tool that writes a PDF, with its owner password, another password or none, and pdf/to/pdfa converts it. Without Password, tools such as pdf/to/compress, pdf/to/crop and pdf/to/repair used to return it still encrypted.
  • The open password of a PDF that restricts nothing, such as one made by pdf/to/protect with AllowEverything=true, now opens it on the PDF tools that write a new PDF, and the PDF comes back without a password. pdf/to/pdfa converts such a PDF instead of answering 422, and PDF to DOCX, PPTX, HTML, RTF and Markdown take PageRange with its open password.
  • pdf/to/protect opens a protected PDF as the other tools do. With the owner password, or the open password of a PDF that restricts nothing, it protects the opened copy with the passwords you send. A PDF that has only an owner password and restricts nothing needs no Password; it used to get 422 this PDF's permissions don't allow changing security; ....
  • pdf/to/unprotect returns a PDF that has only an owner password and restricts nothing without encryption, with or without Password. A PDF with restrictions sent with a wrong password gets 422 removing this PDF's protection needs the owner password; send the owner password in Password instead of the input file is password-protected. A PDF with no password and no restrictions gets 422 this PDF isn't protected: it has no password or restriction to remove, where the message used to say the file could not be read.

Changed

ColorSpace=TrueColors is accepted

  • ColorSpace=TrueColors on conversions whose own default is default, such as SVG to SVG and PSD, BMP and GIF to PDF, gives the same file as leaving ColorSpace out. It used to get 400 ColorSpace is not supported yet for .... Other values are still refused there.
  • Office documents converted to PDF and images accept it too, as they accept ColorSpace=Default. PUB to PDF with ColorSpace=TrueColors gives the same file as without it, where it used to get 400 ColorSpace is not supported yet for PUB files.

Changed

Message wording

  • Messages write the format as WebP, for example ImageQuality is not supported yet for PPT → WebP.
  • Numbers in messages have thousands separators, in ranges such as ImageWidth must be between 1 and 20,000 and OffsetY must be between -100,000 and 100,000, and in limits such as the CSV has more than 1,048,576 rows, the archive has more than 10,000 entries and rendering is limited to 2,000 pages per request.
  • The hint at the end of a size limit names only what you sent. the image is 20,000×10,000 pixels, above the limit of 100,000,000 pixels; lower ImageWidth or ImageHeight ends with the hint only when you sent ImageWidth or ImageHeight and the conversion applied it. A page too large to draw gets page 3 is too large to draw at 16,666×8,333 pixels; lower ImageResolution when the resolution set its size, and ends with ; lower ImageWidth or ImageHeight when those did. It used to name all three options. pdf/to/rasterize names its own option: page 1 is too large to draw at 16,666×16,666 pixels; lower Resolution.
  • Tracing an image of more than 12,000,000 pixels to SVG gets 413 vectorizing is limited to 12,000,000 pixels, and this image is 4,000×3,001; set ImageWidth or ImageHeight to scale it down, or ...; lower ImageWidth or ImageHeight when the size you sent is still too large. It used to name only ImageWidth.
  • An XCF image whose canvas is larger than 67,108,864 pixels gets 413 XCF images can be at most 67,108,864 pixels, and this one's canvas is larger, and one wider or taller than 300,000 pixels gets 413 XCF images can be at most 300,000 pixels on a side, and this one is 300,001×100. Both used to get a 422.
  • Messages about a PDF tool or file/to/zip name its path, for example AutoRotate is not supported yet for pdf/to/rotate, Password is not supported yet for file/to/zip and PageRange can't be combined with the open password yet for pdf/to/text-watermark; .... They used to write FILE → ZIP and PDF → ROTATE. Conversions from one format to another still read PDF → DOCX.
  • More files we can't read get a plain reason after the input file could not be read:, for example it is not a TGA image, or one whose color type can't be read, the image is cut short: its data ends before its last pixel, PFM (floating-point) images can't be read yet, not a Word document, this is not an EPUB and DWG: the file is cut short or damaged.
  • A file that isn't in the format its path names says so: it is not a PNG image, it is not a JPG image, it is not an XCF file, it is not a DWG file, this is not a MOBI book, or it could not be opened as NUMBERS for Apple Numbers. A file we can't read yet says what stops it, for example TIFF images with a color palette can't be read yet, ICO images whose pictures are PNGs without an alpha channel can't be read yet or it is an AVIF image, and AVIF images can't be read yet. These used to quote the decoders' own wording.
  • PPTX to PDF and PPTX to PPTX, sent a file that isn't a PPTX presentation, such as a renamed PPT file, get 422 the input file could not be read: it is not a PPTX presentation, or one that can't be read. The message used to name our temporary file.

2026-11-03

New

Password opens protected files on more conversions

  • A protected DOCX, XLSX or PPTX file opens with Password in conversions that take one file, for example DOCX to PDF, DOCX to PNG and XLSX to CSV.
  • A PDF that needs a password to open opens with Password in PDF to image conversions and the PDF tools. Illustrator (.ai) conversions take Password the same way.
  • pdf/to/merge opens every protected file it gets with the one Password you send. When a file doesn't open, the 422 names it by position and file name: file 2 (locked.pdf) is password-protected; send its password in Password, or file 2 (locked.pdf) is password-protected, and Password does not open it. Restriction, signature and read errors on one file start the same way, for example file 1 (a.pdf): this PDF has permission restrictions; ....
  • A protected XLS file opens on XLS to PDF, XLSX and images. Protected DOC and ODT files, and XLS files on other conversions, get a 400 that says so, for example password-protected DOC files can't be converted to PDF yet.
  • A missing or wrong password gets 422 the input file is password-protected. A PDF opened with its user password keeps its owner's restrictions.
  • file/to/zip with Password gets 400 Password is not supported yet for FILE → ZIP, with one file or several. It doesn't encrypt archives yet. Since 2026-11-04, the message names the path: Password is not supported yet for file/to/zip.

Changed

The owner password lifts a PDF's restrictions

  • pdf/to/merge, pdf/to/split, pdf/to/extract, pdf/to/delete-pages, pdf/to/rotate, pdf/to/resize, pdf/to/rasterize and pdf/to/txt now convert a PDF that has permission restrictions when you send its owner password in Password. Without it, or with a wrong one, they still answer 422, and the message now says what to send: this PDF has permission restrictions; send the owner password in Password, or remove them with /v2/convert/pdf/to/unprotect and the owner password. On pdf/to/txt it starts this PDF's permissions don't allow copying its text; send the owner password in Password.
  • The owner password also opens a protected PDF on pdf/to/compress, pdf/to/ocr, the watermark tools, pdf/to/crop, pdf/to/flatten, pdf/to/pdfa, pdf/to/repair, pdf/to/pdf, pdf/to/extract-images and PDF to DOCX, PPTX, HTML, RTF and Markdown. The PDF that comes back has no password and no restrictions. With the open password, these work as before.
  • PDF to DOCX, PPTX, HTML, RTF and Markdown take PageRange together with the owner password. With the open password, PageRange gets 400 PageRange can't be combined with the open password yet for PDF → HTML; send the owner password in Password, or remove the protection with /v2/convert/pdf/to/unprotect first. Since 2026-11-04, the open password of a PDF that restricts nothing works with PageRange too. A PDF whose permissions don't allow copying, sent without its owner password, gets 422 this PDF's permissions don't allow copying text and images; send the owner password in Password, or ... with or without PageRange. With PageRange and Password this used to be a 400.
  • pdf/to/unprotect takes the open password of a PDF made with AllowEverything=true and returns it unencrypted. A PDF with restrictions still needs its owner password: removing this PDF's protection needs the owner password; send the owner password in Password.
  • Permissions are read the way the PDF specification defines them: allowing changes includes assembling pages, allowing comments includes filling in forms, and allowing copying includes copying for accessibility. A PDF made by pdf/to/protect with AllowEverything=true can now be split, rotated and merged with its open password.

New

file/to/pdf, file/to/md and office/to/pdf

  • These paths 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. Options are checked as on that path.
  • An upload whose name doesn't end in a format gets a 400. A format with no such conversion gets that conversion's 404, for example conversion from ps to pdf is not supported.
  • office/to/pdf takes Word, Excel and PowerPoint files and templates, and WPD, RTF, LOG and CSV files. Other formats get a 400 that names the path to use.
  • The three paths are not listed in GET /v2/info.

New

Apple Pages and Numbers, OpenDocument charts, slides to Markdown

  • Apple Pages to PDF, DOCX, JPG, PNG, TIFF and WebP.
  • Apple Numbers to PDF, JPG, PNG, TIFF and WebP.
  • OpenDocument charts (odc) to PDF, JPG, PNG, TIFF and WebP.
  • PPT, PPS, PPSX, POTX and ODP to Markdown, from the slide outline, as PPTX to Markdown does.

That brings the total to 556 conversions. Keynote files are still not supported.

New

Sheet, page and slide options

  • Spreadsheets to PDF and images: WorksheetIndex, WorksheetName, ActiveWorksheetOnly, ClearPrintArea, HeaderOnEachPage, PageSize, PageOrientation, Scale and FitToPage.
  • ActiveWorksheetOnly on XLSX and XLS to CSV and Markdown, and on XLSB to CSV.
  • Pdfa=true with PdfaVersion on XLSX, XLS and CSV to PDF: PdfaVersion sets the PDF/A level. It used to get a 400.
  • Images to PDF, DOCX and PPTX: Rotate turns each image, and without it a photo follows its EXIF orientation. MarginHorizontal and MarginVertical set the margins.
  • ConvertHiddenSlides on presentations. PPTX to TXT and Markdown now leave hidden slides out by default, as ConvertAPI does; send ConvertHiddenSlides=true to include them.

New

Size and color options on images

  • Pages rendered to JPG, PNG, TIFF or WebP, from PDFs and from Word, Excel, PowerPoint and other documents, apply ImageWidth and ImageHeight, with ScaleProportions, ScaleIfLarger and ScaleImage. A Letter page with ImageWidth=300 gives an image of 300 × 388 pixels. The side you leave out is worked out from the page's exact size, at any ImageResolution: a 16:9 slide of 720 × 405 points gives 1920 × 1080 pixels with ImageWidth=1920, and 960 × 540 with ImageHeight=540.
  • ColorSpace takes rgb, gray and monochrome on image output, and cmyk gets a 400. With rgb, PNG and TIFF output leave out an alpha channel that no pixel uses. Since 2026-11-04, pages rendered from PDFs and office documents have no alpha channel without it too, unless you send TransparentColor.
  • ImageResolution on image to image conversions is written into JPEG, PNG, TIFF and BMP files as their DPI. The pixels are not resampled.
  • ImageInterpolation is accepted. It doesn't change the output.

Fixed

Errors that were 500s

  • An image larger than its output format allows gets a 413 that states the limit, for example WebP images can be at most 16384 pixels on a side, and this one is 20000×1000; lower ImageWidth or ImageHeight. The part after the semicolon appears only when you sent ImageWidth or ImageHeight and the conversion applies it. JPEG allows 65,500 pixels a side, the most that common JPEG decoders read, and GIF and TGA allow 65,535. Since 2026-11-04, the numbers in these messages have thousands separators: 16,384 and 20,000×1,000.
  • ColorSpace=gray or monochrome on an image with transparency, converted to TIFF, gives an RGBA TIFF with gray values.
  • png/to/compress without ImageWidth or ImageHeight, sent an image in another format such as a JPEG, gets 422 the input file could not be read: it is not a PNG file. Since 2026-11-04, it gets it is not a PNG image after the colon, with or without ImageWidth or ImageHeight.
  • A Data Matrix code with too much data gets 400 this data is too long for a datamatrix barcode. Other data a barcode type can't hold gets a 400 without the name of an internal error in it, for example this data cannot be a code128 barcode: Contents length should be between 1 and 80 characters, but got 100.
  • Tracing an image to SVG with GradientStep=0, on an image that can't be traced that way, gets 422 this image could not be traced with GradientStep=0; use 1 or more.

Fixed

Image output

  • Page images: when a page's size at the chosen DPI is a whole number of pixels, the image has that size. A Letter page at 150 DPI is now 1275 × 1650 pixels, one pixel taller than before.
  • Image to image conversions, tracing to SVG, jpg/to/compress with ImageWidth, png/to/compress and images/to/join turn a photo upright by its EXIF orientation, as images to PDF already did. A 306 × 396 PNG with orientation 6 came back from png/to/compress as 396 × 306 pixels, without the orientation tag. Since 2026-11-04, png/to/compress turns the pixels only when you send ImageWidth or ImageHeight, and otherwise keeps them and the orientation as they are.
  • ColorSpace=monochrome gives only black and white pixels in PNM and ICO output, also where transparency was flattened.
  • PNM output is binary PPM (P6), or PGM (P5) with ColorSpace=gray or monochrome. It used to be PAM (P7).
  • TGA output is uncompressed.
  • An opaque image converted to BMP is a 24-bit BMP with the common 40-byte header. A BMP with transparency stays 32-bit and now opens on macOS.
  • Multi-page TIFFs keep gray pages gray. MultiPage=true makes one multi-page TIFF from OpenDocument, RTF, TXT, CSV, WordPerfect, XLSB, DOT and XLTX files too; without it they still give one TIFF per page.

Fixed

Spreadsheets

  • Scale and FitToPage on a sheet without its own page setup keep the A4 page instead of switching to Letter.
  • ActiveWorksheetOnly=true on xlsb/to/csv converts instead of getting a 400.
  • On spreadsheet to CSV, JSON and Markdown conversions, XLSB included, a WorksheetIndex past the last sheet says how many sheets the workbook has: WorksheetIndex is 9, but the workbook has 3 worksheets, or 1 worksheet for a one-sheet workbook. A value above 2000 gets WorksheetIndex must be between 1 and 2000. Since 2026-11-04, it reads WorksheetIndex must be between 1 and 2,000.

Changed

File metadata and messages

  • SVG files traced from images no longer start with a comment that names the tracing program.
  • PDFs made from images and SVG files, and pdf/to/rasterize output, no longer name the program that wrote their XMP metadata.
  • zip/to/extract, email/to/extract and pdf/to/extract-attachments return each file byte for byte as it was stored. They no longer replace the program name in the metadata of the PDFs and office files they unpack.
  • Word 2003 XML files (DOCX, DOC and ODT to XML) no longer have an Editor property.
  • DOCX and PPTX files no longer get the title "input", the name of our temporary file. JPG and PNG to DOCX and PPTX, for example, now have no title.
  • pdf/to/html gives the page the PDF's own title, also with PageRange. A PDF without a title gets the uploaded file's name without its extension, so spring-flyer.pdf gives <title>spring-flyer</title>, or the FileName you send: FileName=may-flyer gives <title>may-flyer</title>. Both used to be "input".
  • png/to/qrdata and jpg/to/qrdata on an image without a QR code answer 422 no readable QR code was found in the image, without the input file could not be read: in front.
  • zip/to/extract on a file that isn't a ZIP archive answers 422 the input file could not be read: it is not a ZIP archive, without the decoder's own wording. An archive with encrypted files sent with Password gets 400 password-protected ZIP archives can't be opened yet; without Password it still gets 422 the input file is password-protected.

2026-11-02

New

Free API keys, self-serve

Anyone can get a free API key by signing in with Google or GitHub at app.pdfconversionapi.com. We keep only your verified email address and your account id at Google or GitHub. Each verified email address has one account.

  • The key is shown once. We store only its SHA-256 hash and its last four characters.
  • "Replace the key" makes a new key and revokes the old one, which stops working within about a minute.
  • Deleting your account, on the same page, deletes the key, and it stops working within about a minute.
  • GET /v2/usage returns your plan, the conversions included, used and remaining, and the period they count for.

The Free plan allows 250 conversions a month, files up to 10 MB and 1 conversion at a time. Billing is not open yet, so the Free plan is the only one you can start yourself. For higher limits before billing opens, write to sales@pdfconversionapi.com.

Changed

Plan limits are enforced

The gateway now applies each plan's limits to conversion requests:

  • Conversions a month. The count runs for a calendar month in UTC, and failed requests don't count. On the Free plan, requests stop at the limit with a 429 that says this month's conversions on the Free plan are used up and gives the date the count starts again.
  • Upload size. A request larger than the plan's upload limit, all files together, gets a 413 that names the limit.
  • Conversions at once. A conversion sent while all of the plan's conversions at once are running gets a 429 that says how many the plan runs at a time. The limit of 600 requests a minute per account still applies and also answers 429.
  • Paused plans. If we pause conversions on a plan to stop abuse, its requests get a 503 that asks you to try again later.

Changed

Converted files carry the API's name in their metadata

Where the software that made a file used to write its own name, files now say PDF Conversion API:

  • PDFs made from other formats: the Producer field and the matching XMP entry. A Creator field that named that software is left out.
  • Word, Excel, PowerPoint and OpenDocument files: the application name in the document properties. A "last modified by" entry that named the software is left out.
  • HTML and RTF files: a generator tag that named the software is left out.

When the input is a PDF, as in pdf/to/compress, we don't replace its own Producer and Creator. Titles, authors and the rest of the document's own properties are not changed. Error messages that used to quote the name of the program that failed now say "the engine".

Breaking change

PDF tools refuse restricted and signed PDFs

pdf/to/merge, pdf/to/split, pdf/to/extract, pdf/to/delete-pages, pdf/to/rotate, pdf/to/resize and pdf/to/rasterize now answer 422 instead of returning a file when:

  • the PDF has permission restrictions: this PDF has permission restrictions; remove them with /v2/convert/pdf/to/unprotect and the owner password first
  • the PDF is digitally signed: this PDF is digitally signed, and rewriting it would invalidate the signature

pdf/to/txt answers 422 when the PDF's permissions don't allow copying its text. Rendering pages as images with pdf/to/png, pdf/to/jpg, pdf/to/tiff, pdf/to/webp and pdf/to/svg still works on restricted and signed PDFs.

On pdf/to/docx, pdf/to/pptx, pdf/to/html, pdf/to/rtf and pdf/to/md, sending PageRange with Password gets a 400 when the PDF's permissions don't allow copying. Remove the restrictions with pdf/to/unprotect first.

Changed

PageRange takes last, and refuses pages past the end

  • PageRange accepts last, as in 1-last, or last on its own. Open ranges such as 2- still run to the last page.
  • A page on its own, or the first page of a range, that lies past the end of the document gets a 400, for example PageRange asks for page 3, but the document has 2 pages. The end of a range can still go past the last page and stops there, so ConvertAPI's default 1-2000 works on any document.

Changed

PDF tool errors give the reason

When a PDF's permissions block one of the conversions listed under PDF tools and OCR, the 422 names the permission that is missing. On pdf/to/text-watermark, for example: this PDF's permissions don't allow changes to the document; send the owner password in Password, or remove the restrictions with /v2/convert/pdf/to/unprotect and the owner password. These messages no longer start with the name of an internal processing step, and those that aren't about reading the file no longer start with the input file could not be read:.

On pdf/to/protect, a password that the PDF engine refuses gets a 400 that names UserPassword and OwnerPassword, for example UserPassword and OwnerPassword must be different (PDF readers treat the two as the same password). Every permission option is now read, so sending several together, such as PrintDocument and PrintFaithfulCopy, no longer gets a 400 for the one the other covers.

Fixed

Word to image applies field and markup options

DOCX, DOC, ODT and RTF to PNG, JPG, TIFF and WebP now apply UpdateFields, UpdateTableOfContents, UpdateReferences and IncludeMarkup, as Word to PDF does.

New

Page options on Markdown to PDF

md/to/pdf now applies PageSize, PageOrientation, MarginTop, MarginRight, MarginBottom, MarginLeft and FontName.

  • PageSize: A3 to A9, B3 to B5, Letter, Legal and Ledger. A0 to A2 and B0 to B2 get a 400.
  • FontName: arial, calibri, cambria, timesNewRoman or courierNew. The server doesn't have those fonts, so each is drawn with an installed font that has the same character widths: Liberation Sans, Carlito, Caladea, Liberation Serif and Liberation Mono. Any other font name gets a 400.
  • YAML front matter and footnotes come out as plain text.

Changed

PDF/A validation checks the level the file claims

pdfa/to/validate with ExpectedConformance=auto, or without ExpectedConformance, checks the file against the PDF/A level that its XMP metadata claims. A file that claims no level gets "compliant": false and "level": null. A file that claims PDF/A-1a, 1b, 2a, 2u, 3a, 3u or 4 gets a 422, because only 2b and 3b can be validated yet; send ExpectedConformance=pdfA2b or pdfA3b to check it against one of those.

Fixed

Page limit for HTML that needs a browser

HTML to PDF for pages that need a browser now has the same 2,000-page limit as HTML laid out without one. A page that prints to more pages gets a 413, for example the document lays out to 2010 pages; the limit is 2000.

Fixed

EPUB books with accented text

EPUB to PDF and EPUB to images now convert books whose text isn't plain ASCII, for example books with accented letters.

Fixed

Outlook MSG bodies and errors

  • An HTML body that Outlook stores as binary data (the PR_HTML property) is now read. Its character set comes from the HTML's meta tag. Without one, the body is read as UTF-8 when it is valid UTF-8, and as Windows-1252 otherwise. The message's code page property (PR_INTERNET_CPID) isn't read yet.
  • When a message's only body is RTF, the HTML that Outlook wrapped in it (marked \fromhtml1) is used. Other RTF bodies give their text.
  • Files we can't read get a 422 that says why, after the input file could not be read:. An Office file that isn't a message gets this is not an Outlook message, a damaged file gets the Outlook message is damaged, and a message saved with 4096-byte sectors gets Outlook messages saved with 4096-byte sectors are not supported yet.
  • Still a limit: older MSG files can store text in an 8-bit code page. A subject or body stored that way is dropped when its bytes aren't valid UTF-8, so accented text in such a file can go missing.

Fixed

Plain-text email bodies

An EML message whose body is plain text is shown as written: < and & stay as typed, and line breaks and spaces are kept. email/to/metadata reports has_html_body as false for it.

Changed

Error messages and options

  • Messages quote values as you sent them, for example IncludeMarkup must be true or false, not 'Maybe', and use US spelling ("color", "recognized").
  • A color the API can't read gets a 400 that lists the accepted forms: 'teal-ish' is not a color (use white, black, red, green, blue, gray, #RRGGBB or R,G,B).
  • images/to/pdf names the image it couldn't read, by position and file name, for example image 3 (scan.png) could not be read: ....
  • On spreadsheet to CSV, JSON and Markdown conversions, sending both WorksheetName and WorksheetIndex gets a 400: send WorksheetName or WorksheetIndex, not both.
  • ScaleImage, ScaleProportions and ScaleIfLarger sent without ImageWidth or ImageHeight are accepted and change nothing.

2026-11-01

New

A cleanup job deletes expired stored files

With StoreFile=true, the download link still works for 3 hours. A cleanup job now runs every 15 minutes and deletes stored files whose links have expired. A storage rule that removes any stored file older than 1 day stays as a backstop.

Changed

Stored files stay in the US

Results stored with StoreFile=true are kept in our cloud provider's object storage, in its US jurisdiction. The subprocessor list names the provider.

Changed

ConvertAPI default values are accepted

These values, which ConvertAPI documents as defaults, are now accepted: PageOrientation=default on image to PDF conversions, Preset=none on image to SVG, CompressionLevel=Extreme on png/to/compress and CompressionLevel=Medium on file/to/zip.

New

BackgroundColor on PDF to image conversions

When PDF pages become images with pdf/to/png, pdf/to/jpg or pdf/to/tiff, BackgroundColor is painted behind each page and shows wherever the page has no background of its own. DWG and DXF to image conversions refuse it with a 400 that names it.

Changed

PageRange and Password on PDF conversions

On PDF to DOCX, PPTX, HTML, RTF and Markdown, and on the PDF watermark, crop, image extraction and OCR tools, PageRange works together with Password when the PDF opens without a password and only restricts what you can do with it. If the PDF needs a password to open, sending both gets a 400 that asks you to remove the password first with pdf/to/unprotect. Since 2026-11-02, sending both to PDF to DOCX, PPTX, HTML, RTF or Markdown also gets a 400 when the PDF's permissions don't allow copying.

Changed

Error messages use documented parameter names

Messages name a parameter the way the documentation writes it, for example UpdateTableOfContents must be true or false, not 'maybe'.

Fixed

Clearer answer for copy-restricted PDFs

A PDF that opens without a password but restricts copying no longer gets the 422 the input file is password-protected. Where a conversion would copy the PDF's content, for example on pdf/to/docx, the 422 now says so: this PDF's permissions don't allow copying text and images, followed by what to do. Sending the owner password as Password lifts the restriction.

New

Office re-saves, Office passwords, JPEG XL, MOBI and more

New conversions:

  • Re-saving Word, PowerPoint and Excel files: docx/to/docx, pptx/to/pptx, xlsx/to/xlsx and xls/to/xls.
  • pdf/to/pdf, which sets document properties and how the PDF opens (first page and zoom).
  • Password protection for Word, PowerPoint and Excel files: docx/to/protect, pptx/to/protect and xlsx/to/protect, with Office's AES-256 encryption.
  • log/to/txt, pdf/to/extract-attachments and svg/to/svg.
  • JPEG XL output: jpg/to/jxl and heic/to/jxl.
  • MOBI e-books to PDF, JPG, PNG, TIFF and WebP.
  • mhtml/to/docx, which turns a saved web page into a Word file with its pictures and style sheets.

That brings the total to 535 conversions. 272 of the 328 endpoints ConvertAPI documents work here with the same {from}/to/{to} path and do the same job.

New

The gateway

The API runs behind a gateway on our cloud provider's network:

  • Keys are checked against SHA-256 hashes kept in the provider's key-value store, and are accepted only in the Authorization: Bearer header.
  • Each account can send 600 conversion requests a minute. Above that the API answers 429 with Retry-After: 10.
  • Conversions run in three container pools, each with a different set of converters. HTML that needs a browser is passed to the browser pool automatically.
  • StoreFile=true results are stored in the provider's object storage behind links that expire after 3 hours. Only the account that created a file can delete it early, with DELETE /v2/d/{FileId}.
  • Every response has an x-request-id header.

New

Apple Numbers and Pages, and ODF formulas

  • numbers/to/xlsx: one worksheet per table. Numbers, dates, durations, true or false values and text keep their types.
  • numbers/to/csv: one CSV file per table.
  • pages/to/txt: the document's text.
  • ODF formula files (odf) to PDF, JPG, PNG, TIFF and WebP.

Keynote files are not supported.

Breaking change

Options are refused instead of ignored

If a request sets one of the options ConvertAPI documents for a conversion to a value other than its default, and our converter doesn't handle that option, the API answers 400 and names it. Options ConvertAPI doesn't document for a conversion are ignored.

Options added in the same change:

  • ScaleImage=false crops to ImageWidth and ImageHeight instead of scaling.
  • MultiPage: several pages of TIFF output go into one multi-page TIFF, which is ConvertAPI's default.
  • TransparentColor, and AlphaColor with #RRGGBBAA colors.
  • UpdateReferences on Word conversions.
  • Image to SVG tracing: ColorMode, Layering, GradientStep, CurveMode, SegmentLength and SpliceThreshold.

New

Email, EPUB, DICOM, barcodes and more

New conversions:

  • PDF to SVG, pdf/to/rasterize, and pdf/to/resize to a paper size.
  • Adobe Illustrator files (.ai, saved with PDF compatibility) to JPG, PNG, PNM, SVG, TIFF and WebP.
  • SVG to PDF as vectors, and images/to/join.
  • DICOM medical images to JPG, PNG and PDF, one image or page per frame. DICOM files compressed with JPEG 2000 or JPEG-LS are not supported yet.
  • Barcodes: create Code 128, Code 39, EAN, UPC, ITF-14, Data Matrix, PDF417, Aztec and QR codes, and read them from images and PDFs with barcode/to/data and qrcode/to/data.
  • XLSX and XLS to Markdown tables.
  • EML and Outlook MSG: metadata (email/to/metadata), attachments (email/to/extract), and conversion to PDF and images with inline pictures embedded.
  • EPUB to PDF and images. Books with DRM are refused.
  • Text from JPG, PNG and TIFF images with OCR (English), and JPG and PNG to DOCX and PPTX.
  • TXT to images, and LOG to PDF and DOCX.
  • PPTX to TXT and Markdown, from the slide outline.
  • HTML tables to XLSX and XLS; DOCX, DOC and ODT to Word 2003 XML, and Word 2003 XML to DOCX.

QR codes now default to SVG at 600 px, as in ConvertAPI.

New

HTML, office and photo formats

  • HTML to PDF, JPG and PNG. Most pages are laid out without a browser. Pages that need one, for example because they run scripts or use UserJs or WaitElement, are rendered in a headless browser. Neither path loads anything from the network.
  • HTML to PDF lays the page out for the paper size by default. Send RespectViewport=true for ConvertAPI's viewport layout.
  • XLSX, XLS, XLSB, XLTX, ODS, CSV, PPT, PPS, PPSX, POTX, ODP, VSD, VSDX, PUB, ODG, DOTX, DOT and WPD convert to PDF (including PDF/A-1b, 2b and 3b) and to images, XLS converts to XLSX, and older PowerPoint formats convert to PPTX. Each run of the office engine gets a new profile with macros turned off.
  • HEIC, HEIF, PSD, PSB, XCF, KRA, ORA, PDN, EXR and HDR images can be read.
  • When a conversion reaches its time limit, the engine is stopped together with every helper process it started.

New

PDF tools and OCR

New PDF tools and conversions: compress, protect, unprotect, text, image and PDF watermarks, crop, metadata, flatten, PDF/A-2b and 3b with validation, repair, image extraction, OCR (English), and PDF to DOCX, PPTX, HTML, RTF and Markdown. A second file a tool needs, such as ImageFile for an image watermark or OverlayFile for a PDF watermark, goes in a form field of that name. Options they can't honor are refused with a 400, and their error messages reach you without server paths.

New

First build

  • POST /v2/convert/{from}/to/{to} with multipart/form-data, and ConvertAPI-style JSON responses with ConversionCost, ConversionTime and Files.
  • Converters for images, PDF tools and page rendering, spreadsheets, Markdown and HTML, QR codes and ZIP archives.
  • Conversions for Word, PowerPoint and CAD files.
  • StoreFile=true returns a download link instead of the file.
  • Limits on upload size, image size in pixels and page count.