Make documents do more.
Create documents from scratch, reshape the ones you already have, and turn your ideas into something you can use.
Part of Pro at $9 a month, after 14 days free. 2,000 calls a day. The sixteen browser tools stay free with no account.
# 1. make a document from your markdown
ID=$(curl -s https://docubend.com/api/v1/pdfs \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Invoice 1042","markdown":"# Invoice 1042\n\n**Due 30 September.**"}' \
| jq -r .document.id)
# 2. render it
curl -s https://docubend.com/api/v1/documents/$ID.pdf \
-H "Authorization: Bearer $TOKEN" -o invoice.pdf
const made = await fetch("https://docubend.com/api/v1/pdfs", {
method: "POST",
headers: { Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json" },
body: JSON.stringify({
title: "Invoice 1042",
markdown: "# Invoice 1042\n\n**Due 30 September.**",
}),
});
const { document: doc } = await made.json();
const pdf = await fetch(doc.links.pdf,
{ headers: { Authorization: `Bearer ${TOKEN}` } });
await writeFile("invoice.pdf", Buffer.from(await pdf.arrayBuffer()));
made = requests.post("https://docubend.com/api/v1/pdfs",
headers={"Authorization": f"Bearer {TOKEN}"},
json={
"title": "Invoice 1042",
"markdown": "# Invoice 1042\n\n**Due 30 September.**",
}, timeout=60)
doc = made.json()["document"]
pdf = requests.get(doc["links"]["pdf"],
headers={"Authorization": f"Bearer {TOKEN}"}, timeout=60)
open("invoice.pdf", "wb").write(pdf.content)
Two calls: one makes the document, one renders it. A
.pdf is made when you ask for it, so it always matches the
document as it stands.
Create it. Shape it. Make it useful.
Build documents from scratch, add diagrams and forms, edit existing files, and turn documents into exactly what you need, and automate the entire process. Whether you’re working in a browser or writing code, docubend gives you one place to do it.
Generate
Markdown, HTML, mermaid, an image or a PDF becomes a document.
POST /api/v1/pdfs
Compose
Draw a diagram onto page four of the document that needed explaining.
POST /api/v1/diagrams
Annotate
Put fields on it, send it out, and read the answers back.
POST /api/v1/forms
Retrieve
The same document as .pdf, .png, .svg, .json, .mmd or .drawio.
GET /api/v1/documents/{id}.pdf
How the four fit together · Markdown to PDF · Mermaid to PDF · Diagrams on a PDF · Every endpoint
The free tools are the demo
Sixteen tools, each on its own page, no account and no watermark. Fourteen of them never upload your file — the work happens in your own tab. They are the same document engine, hosted.
| Tool | What it does | Runs in | Same thing, programmatically |
|---|---|---|---|
| Edit a PDF | Change the words already in the PDF, in their original font. | your browser | the document model |
| Annotate a PDF | Highlight, draw and add notes on top of the page. | your browser | the document model |
| Sign a PDF | Draw a signature and place it where it goes. | your browser | the document model |
| Merge PDF files | Join several PDFs into one, in the order you choose. | your browser | no endpoint |
| Split a PDF | Pull out the pages you want, or make one file per page. | your browser | GET /api/v1/documents/{id}.pdf |
| Compress a PDF | Get a file under a size limit, choosing what quality to spend. | your browser | no endpoint |
| Rotate PDF pages | Turn sideways pages the right way up, in the file itself. | your browser | the document model |
| Delete pages from a PDF | Remove the pages you do not want to send. | your browser | the document model |
| Reorder PDF pages | Drag pages into the right order. | your browser | the document model |
| Convert PDF to Word | Get an editable .docx with the text as text. | your browser | no endpoint |
| Convert Word to PDF | Set a .docx as a PDF that looks the same everywhere. | your browser | no endpoint |
| Convert JPG to PDF | Turn photographs into one document with pages. | your browser | POST /api/v1/pdfs |
| Convert PDF to JPG | Get every page as a JPG or a PNG. | your browser | GET /api/v1/documents/{id}.png |
| Password protect a PDF | Put an AES-256 password on a PDF. | our server | POST /api/free/protect |
| Unlock a PDF | Take off a password, or the no-printing and no-copying restrictions. | our server | POST /api/v1/pdfs |
| Fill in a PDF form | Fill a PDF's real form fields, and flatten them if you like. | your browser | POST /api/v1/forms |
The two that reach a server say so in their first paragraph, because that is the thing worth knowing. More about each one.
Somewhere for the document to live
The free tools finish a job and forget it, and that is what makes them free — nothing is uploaded, so there is nothing to keep. An account is the other case: the document your software made last night, and the one you are still working on next week.
- 2,000 API calls a day. Counted per account, not per credential.
GET /api/v1/usagetells you what is left before a nightly job finds out by being refused. - Every version, and a way back to any of them. Who changed what, when, and the document exactly as it stood before they did.
- One link, or one person at a time. Each person gets their own, and you can withdraw any of them without disturbing the rest.
- The things a browser cannot do on its own. Diagrams on the page, true redaction, and reading a scan into text you can edit.
Start the free trial Read the docs first 14 days, then $9 a month. Nothing is charged until the trial ends.