DOT to WebP API
POST /v2/convert/dot/to/webp renders the pages of a Word 97-2003 template as lossless WebP images. With ImageWidth=480, the sample's two Letter pages come back 480 × 621 pixels at 18,894 and 10,142 bytes, sized for a preview card.
- Endpoint
- POST /v2/
convert/ dot/ to/ webp - Accepts
- dot
- Sample timing
- 0.543 s median of 5 runsHow we measure
- Request size
- Up to 10 MB on the Free plan or 100 MB on paid plans, all files together
Request and response
Every sample below ran against the API before this page was published. Set PDFCONVERSIONAPI_KEY to your key and run it as is.
curl -sS -X POST \
https://api.pdfconversionapi.com/v2/convert/dot/to/webp \
-H "Authorization: Bearer $PDFCONVERSIONAPI_KEY" \
-F File=@meeting-minutes.dot \
--form-string ImageWidth=480 \
-o response.json
# FileData is base64. Save the first file in converted/,
# or print the JSON error.
if jq -e '.Files' response.json > /dev/null; then
mkdir -p converted
name=$(jq -r '.Files[0].FileName' response.json)
jq -r '.Files[0].FileData' response.json \
| base64 --decode > "converted/$name"
else
cat response.json
fiimport base64
import os
import requests
key = os.environ["PDFCONVERSIONAPI_KEY"]
response = requests.post(
"https://api.pdfconversionapi.com/v2/convert/dot/to/webp",
headers={"Authorization": f"Bearer {key}"},
files=[("File", open("meeting-minutes.dot", "rb"))],
data={
"ImageWidth": "480",
},
timeout=180,
)
result = response.json()
if not response.ok:
raise SystemExit(f"{result['Code']}: {result['Message']}")
os.makedirs("converted", exist_ok=True)
for file in result["Files"]:
path = os.path.join("converted", file["FileName"])
with open(path, "wb") as out:
out.write(base64.b64decode(file["FileData"]))
print(path, file["FileSize"], "bytes")
import { mkdir, readFile, writeFile } from "node:fs/promises";
import { join } from "node:path";
const form = new FormData();
const file = "meeting-minutes.dot";
form.append("File", new Blob([await readFile(file)]), file);
form.append("ImageWidth", "480");
const url = "https://api.pdfconversionapi.com/v2/convert/dot/to/webp";
const key = process.env.PDFCONVERSIONAPI_KEY;
const response = await fetch(url, {
method: "POST",
headers: { Authorization: `Bearer ${key}` },
body: form,
});
const result = await response.json();
if (!response.ok) {
throw new Error(`${result.Code}: ${result.Message}`);
}
await mkdir("converted", { recursive: true });
for (const file of result.Files) {
const path = join("converted", file.FileName);
await writeFile(path, Buffer.from(file.FileData, "base64"));
console.log(path, file.FileSize, "bytes");
}
{
"ConversionCost": 1,
"ConversionTime": 0.543,
"Files": [
{
"FileName": "meeting-minutes-1.webp",
"FileExt": "webp",
"FileSize": 18894,
"FileData": "UklGRsZJAABXRUJQVlA4TLlJ…"
},
{
"FileName": "meeting-minutes-2.webp",
"FileExt": "webp",
"FileSize": 10142,
"FileData": "UklGRpYnAABXRUJQVlA4TIon…"
}
]
}Response from our test run on 2026-11-03. ConversionTime shows the median of 5 runs. FileData is shortened here; the real response carries the whole file as base64.
The sample, converted
The same file the code sends. Download the input and the output and compare them yourself.

- Input
- meeting-minutes.dot (29 KB)
- Output
- meeting-minutes-1.webp (18 KB)meeting-minutes-2.webp (9.9 KB)
- Source
- A two-page meeting minutes template for a fictional neighborhood association, written for this site and saved as a Word 97-2003 template, with fill-in tables and bracketed placeholders. (CC0-1.0). How it was made
- Made by
- 2026-11-04, API build
9eeeb0640aba
Parameters
Send these as form fields next to the file. Names are case-insensitive. If you set one of the documented options below that we don't support yet, the request fails with a 400 that names it instead of returning a file made without it.
| Parameter | What it does |
|---|---|
ImageWidthinteger | Width of each image; the height follows the page shape (621 pixels for a Letter page 480 wide). The page is drawn at the size needed, not drawn large and shrunk.Values: 1–20,000 |
ImageHeightinteger | Height of each image, with the width in proportion.Values: 1–20,000 |
ImageResolutioninteger, default 150 | Used when no width or height is set: 59,944 and 35,502 bytes at 150, 37,996 and 20,960 at 100.Values: 36–600 |
PageRangestring | Restrict output to some pages, such as 1 for a cover image.Values: e.g. 1 |
TransparentColorstring | One exact color made transparent; the image then gets an alpha channel. At the sample's width, white clears 91.7% of page 1. |
BackgroundColorstring | Color under the page, which shows wherever the template paints nothing. |
ColorSpaceenum, default default | gray or monochrome previews.Values: default, rgb, gray, monochrome |
Passwordstring | For password-protected Word 97-2003 templates. |
FileNamestring | Stem of the image names. |
StoreFileboolean, default false | Links instead of image data, each valid for 3 hours. |
Not supported yet
Setting one of these to anything but its default returns 400.
| Option | What to do instead |
|---|---|
IncludeMarkup | true returns 400 "IncludeMarkup is not supported yet for DOT files". |
Also refused when set: UpdateTableOfContents.
What carries over, and what doesn't
Kept
- Lossless RGB pixels at the chosen size, with no alpha channel unless you send
TransparentColor - Readable section headings and table structure even at 480 pixels wide
- One image per page, numbered
-1.webp,-2.webp
Lost or not yet supported
- Fine text at small sizes: at 480 pixels wide the placeholders and the footer are only a few pixels tall.
- Any lossy setting.
ImageQualityis ignored for templates:ImageQuality=50returns the same bytes as the default. - A DPI value; WebP has no place to store it.
Limits
- Up to 2,000 pages per request; 413 above that.
ImageWidthandImageHeighttake values up to 20,000, but a page drawn more than 16,000 pixels wide or tall returns 413, and so does one over 100 million pixels.- Requests up to 10 MB on the Free plan or 100 MB on paid plans, all files and fields together; 120 seconds per conversion, then 504.
Where teams use it
Template galleries on the web
A self-service portal can show each available form as a card with a small page image. At 480 pixels wide, both pages of the sample total under 30 KB.
Previews in chat and help desk tools
Post a page image of a blank template in a chat thread or a knowledge base article so people can see which form they need.
Questions
Why is ImageQuality accepted but not applied?
ConvertAPI documents no options for DOT to WebP, and options a conversion does not document are ignored rather than refused. Our WebP output is lossless in any case. The DOC and DOCX routes, where ConvertAPI does document ImageQuality, refuse values other than 75.
What width should previews be?
The width the card is shown at, or double it if you want it sharp on high-density screens: 480 pixels for a 240-pixel card. The sample's first page is 18,894 bytes at that width.
Can I get the first page only?
Yes, PageRange=1 returns meeting-minutes-1.webp alone.
Convert your first DOT file in a minute.