docubend

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.

curl
# 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
JavaScript
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()));
Python
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/usage tells 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.