One document, from the first draft to the last question about it.
Create it, work on it, send it out, generate it from your own software, and keep the record of everything that happened to it — in one place.
The six stages
-
Create
Start from a blank page, a template, or Markdown and HTML your own software sends.
-
Edit
Change the words inside the PDF you already have, matching its font and rewrapping the paragraph.
-
Review
Comments pinned beside the page, against the version they were left on.
-
Share
One person at a time, each with their own link, withdrawn one at a time.
-
Automate
The same document, made by your software through the API, on your schedule.
-
Keep the record
Every version kept, who changed what, and a way back to any of them.
Documents
A document is a model the whole product understands, so every capability here works on the same object.
- Edit the text already inside a PDF. The embedded font is matched and the paragraph rewraps, so a changed clause looks like the rest of the document.
- Bring a PDF in page by page, keep working on it as a document, and take any page back out as a PDF or a PNG.
- Draw a real diagram on the page that needed explaining — over 400 stencils, connectors that route around what is in the way, and the result written into the page as vector artwork.
- Read a scan. A photographed or scanned page becomes words you can select, search and edit.
- Redact properly. The text comes out of the file, and every earlier version that held it is destroyed with it.
- Find it again. Folders, and search inside the document including inside scans that have been read.
Diagramming, redaction, reading a scan into text, folders and search are part of Pro and Enterprise. Editing, annotating and signing a page are free and always will be.
Forms
A form is an ordinary document with field nodes on it, so a PDF, a scan or a photograph of a paper form can all become one.
- Build it on the document you already send. Place the fields on the page as it stands.
- Anybody can fill it in. The person answering needs no account, on any plan.
- Rendered as a PDF it is a genuine form — fields anybody can type into in Acrobat, Preview or a browser, and machine readable afterwards.
- Each submission comes back twice: as a row of answers for a program, and as its own document with the answers set into the page for a person.
Building a form is part of Pro and Enterprise. Filling one in is free, on its own page.
Working with other people
Send a document out and the record follows it: who has it, what they said, and what changed after they saw it.
- One person at a time. Each person you share with gets their own link, and you can withdraw any one of them without disturbing the rest.
- Comments pinned to the page, against the version they were left on — which is what makes a remark still mean something a month later.
- Somebody else’s change lands in your open window when they save, and says who made it.
- Every version, and a way back to any of them. Restoring an earlier version is itself a version, so going back stays part of the record.
Sharing, comments and version history are part of Pro and Enterprise. What the record holds.
Automation
The repetitive half of document work is a program’s job, and what comes out is a document your team can open.
- Post what you have. Markdown, HTML, a picture, mermaid, an SVG, a .drawio or Visio file, or a PDF.
- Markdown and HTML are set as real, selectable text — headings, lists, tables, links, images, quotes and code. The file is kilobytes and its words can be searched.
- What comes back is a document in your list. It opens in the editor, somebody can annotate it, draw on it, share it and search inside it, and it keeps its history.
- Retrieve it as PDF, PNG, SVG, mermaid or its own JSON model, rendered at the moment you ask, so it always matches the document as it stands.
2,000 API calls a day on Pro, 20,000 on Enterprise, counted per account across every credential. Every limit.
The API
Underneath all of the above, included in Pro and Enterprise. What your team can do here, your software can do too, and the documentation names every endpoint it takes.
# 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)
Try it on your own document.
Start 14-day free trial Or use a free tool $0 today. Cancel any time during the trial.