# Show HN: Inkspan – one API for the PDF/doc plumbing I kept rebuilding

> Source: <https://inkspan.dev>
> Published: 2026-07-29 15:40:50+00:00

DOCUMENT INFRASTRUCTURE

Generate, translate, transform, and extract structured data from PDFs and documents — one clean API. Test an endpoint, integrate it, ship. No sales calls, no infrastructure to maintain.

Free tier · usage-based pricing · SDKs for every language

```
curl -X POST https://api.inkspan.dev/v1/generate/html \
  -H "X-API-Key: ink_live_..." \
  -H "Content-Type: application/json" \
  -d '{"html": "<h1>Invoice #1024</h1>"}' \
  --output invoice.pdf
```

Turn HTML, templates, or Markdown into pixel-faithful PDFs.

Merge, split, compress, watermark, rasterize, and fill forms.

Pull text and tables into clean JSON — with confidence scores, not false certainty.

Translate a document or text into any language — LLM-powered.

Every endpoint is a single authenticated POST. Pick your language:

```
curl -X POST https://api.inkspan.dev/v1/generate/template \
  -H "X-API-Key: ink_live_..." \
  -H "Content-Type: application/json" \
  -d '{"template":"<h1>Hi {{name}}</h1>","data":{"name":"Ada"}}' \
  --output out.pdf
python
import requests

r = requests.post(
    "https://api.inkspan.dev/v1/generate/template",
    headers={"X-API-Key": "ink_live_..."},
    json={"template": "<h1>Hi {{name}}</h1>", "data": {"name": "Ada"}},
)
open("out.pdf", "wb").write(r.content)
js
const res = await fetch("https://api.inkspan.dev/v1/generate/template", {
  method: "POST",
  headers: { "X-API-Key": "ink_live_...", "Content-Type": "application/json" },
  body: JSON.stringify({ template: "<h1>Hi {{name}}</h1>", data: { name: "Ada" } }),
});
fs.writeFileSync("out.pdf", Buffer.from(await res.arrayBuffer()));
```

| Method | Endpoint | Does |
|---|

Usage-based. Start free, scale as your product grows — no seats, no contracts.

Free tier — 100 documents/month. No card required.

Upgrade your plan:
