LibreOffice as an API

Office files go in.
Real PDFs come out.

docxsdk turns Word, Excel and PowerPoint files into PDFs that match the original, fills Word templates and PDF forms from JSON, and reads any document back as clean Markdown. One HTTPS call from Vercel, Supabase or Workers, and no 400 MB office suite to ship.

  • Real LibreOffice, not headless Chrome
  • $0.002 per page, no plan
  • First 500 pages free

Runs from anywhere you can make an HTTPS request

  • Vercel
  • Supabase
  • Workers
  • Netlify
  • Lovable
  • Bolt
  • n8n
  • Make
  • Node.js
  • Python

Why it breaks on deploy

LibreOffice doesn't fit in a serverless function

It works on localhost because LibreOffice is installed there. Then you deploy, and you get one of these.

  • libreoffice-convert

    $ node convert.js

    Error: Could not find soffice binary

    The npm package is a wrapper. It still needs LibreOffice on the machine, which your laptop has and your serverless function doesn't.

  • Vercel

    $ vercel deploy --prod

    Error: The Vercel Function "api/convert" is 412.6mb uncompressed which exceeds the maximum uncompressed size limit of 250mb.

    So you bundle LibreOffice yourself. A function stops at 250 MB unzipped by default, and the leanest headless LibreOffice build unpacks to about 400 MB.

  • Cloudflare Workers

    $ wrangler tail

    Error: [unenv] child_process.spawn is not implemented yet!

    Workers can't start another program at all, and a Worker tops out at 64 MB of code and 128 MB of memory anyway.

docxsdk keeps LibreOffice on our servers. You send one HTTPS request and get the file back.

See the request

Features

POST /v1/convert

Office files to PDFs that look like the original

LibreOffice renders the real document instead of a browser guessing at its HTML, so tables, headers, page numbers and landscape sheets land where Word, Excel and PowerPoint put them.

  • DOCX, DOC, ODT, RTF, XLSX, XLS, ODS, CSV, PPTX, PPT, ODP and HTML
  • Microsoft core fonts, Carlito and Caladea built in, or send your own
  • PDF/A-2b for archives, page ranges, wide sheets fit to the page
See the convert request

POST /v1/convert

4 files, 36 pages

  • DOCXproposal.docx12 pages1.8 s
  • XLSXq3-model.xlsx4 pages1.1 s
  • PPTXboard-deck.pptx18 pages
  • ODTbrief.odt2 pagesqueued
FontsMicrosoft core fontsCarlito and Caladeayour own .ttf

POST /v1/render + /v1/forms/fill

Fill Word templates and PDF forms from JSON

Design the invoice, contract or certificate in Word, where your team already works. Drop in tags, send your data, and get a PDF or an editable DOCX back.

  • {client.name} tags, {#items} loops for table rows, {#paid} conditions
  • Images, nested data and repeating rows from the same JSON
  • PDF forms: fields filled by name, then flattened so nobody edits them
See the render request

POST /v1/extract

Turn PDFs and Word files into Markdown an LLM can read

Real tables instead of a soup of numbers, headings and lists in reading order, and a page number on every block so answers can cite their source.

  • Markdown tables that keep their rows and columns
  • JSON blocks with page numbers, ready for chunking
  • OCR only on pages that are images, at $0.008 a page
See the extract request

Use cases

The documents your app already promises

The jobs that get pushed to next sprint because nobody wants to run LibreOffice in production.

  • Invoices and receipts

    Fill one Word template from your billing data and attach a PDF to every charge.

    3,000 invoices a month$6

  • Contracts and proposals

    Merge names, terms and prices into the contract your lawyer already signed off on.

    A 12-page proposal$0.024

  • Reports and decks

    Send the spreadsheet model or the board deck as a PDF that opens the same everywhere.

    A 40-page board pack$0.08

  • AI and RAG ingestion

    Feed contracts, filings and scans to your model as Markdown, tables intact.

    A 300-page report$0.60

API

Four endpoints, one API key

Every endpoint takes a file or a URL and hands back a file or Markdown. Same auth, same job format, same balance.

  • Waits for the fileSmall jobs answer in the same request, within 60 seconds. Longer ones return a job id to poll.
  • Or calls you backPass a webhook_url and we POST the result there, signed with HMAC-SHA256.
  • Upload it or link itSend the file itself or a URL to it, up to 50 MB and 500 pages per job.
  • Gone when doneInputs are deleted when the job ends. Outputs expire after 24 hours.

POSTapi.docxsdk.com/v1/convert

curl https://api.docxsdk.com/v1/convert \
  -H "Authorization: Bearer $DOCXSDK_API_KEY" \
  -F file=@proposal.docx \
  -F pdfa=2b

Response200 OK in 1.8 s

{
  "id": "job_7HkQ2mWx",
  "status": "succeeded",
  "pages": 12,
  "cost_usd": 0.024,
  "output": {
    "url": "https://files.docxsdk.com/job_7HkQ2mWx/proposal.pdf",
    "content_type": "application/pdf",
    "bytes": 412803,
    "expires_at": "2026-10-28T09:41:07Z"
  }
}

Pricing

Pay per page. Credit never expires.

No plans, no seats, no monthly minimum. Top up from $5 and every endpoint draws from the same balance.

Convert, render, forms, extract
$0.002a page
Pages that need OCR
$0.008a page
Past 100,000 pages a month
$0.001a page
Your first $1
Free500 pages
3,000

$6a month, no plan to pick

3,000 one-page invoices a month

What it costs on the cheapest plan that covers it

  1. docxsdkPay as you go, 3,000 pages$6
  2. PDFMonkeyPro, 3,000 documents€15a month
  3. APITemplate.ioBasic, 3,000 PDFs$19a month, billed yearly
  4. PDF.coBusiness 1, 80,500 credits, 21 per DOCX page$44.99a month, billed yearly
  5. CarboneEssential Plus, 5,000 documents€95a month
  6. DocRaptorMax, 5,000 documents$149a month

List prices from each vendor's own pricing page, checked October 26, 2026. Euro prices are shown in euros.

FAQ

Questions, answered

What does docxsdk do?

It's an HTTPS API for the document jobs that need a real office suite: Word, Excel and PowerPoint files to PDF, Word templates and PDF forms filled from JSON, and PDFs or Word files turned into Markdown for LLMs. LibreOffice runs on our servers, you send a request.

Which formats can I send?

Word (DOCX, DOC, ODT, RTF), Excel (XLSX, XLS, ODS, CSV), PowerPoint (PPTX, PPT, ODP) and HTML. You get back a PDF or PDF/A-2b. Extract also reads PDFs, scanned ones included, and returns Markdown or JSON.

Will the PDF look like it does in Word?

As close as LibreOffice gets, which is very close. We ship the Microsoft core fonts plus Carlito and Caladea, which have the same letter widths as Calibri and Cambria, so lines and pages break where Word breaks them. Using a brand font? Send the .ttf or .otf along with the file.

How do templates work?

Write the document in Word with tags like {client.name}. Wrap a table row in {#items} and {/items} to repeat it for every item, and put a block between {#paid} and {/paid} to show it only when paid is true. POST the .docx with your JSON and get a PDF or an editable DOCX back. PDF forms work the same way: fields are matched by name, and flatten locks them.

What happens to my files?

Input files are deleted the moment a job finishes. Outputs sit behind a signed URL for 24 hours, then they're gone too. We never train on your documents.

Does it work from Vercel, Supabase or Cloudflare Workers?

That's the point. It's one fetch call with a Bearer key, so it runs from any serverless function, edge runtime, n8n flow or Lovable app, and you never ship or babysit LibreOffice.

How does billing work?

Prepaid credit. Convert, render, forms and extract cost $0.002 a page, pages that need OCR cost $0.008, and every page past 100,000 in a month costs $0.001. Your first $1 is free, top-ups start at $5 and credit never expires.

Start free

Try it with your ugliest Word file

Your first $1 is free: 500 pages across every endpoint, no card needed for a key.

A stack of printed invoices with one line marked in marigold highlighter, on a dark desk under a warm lamp