Generate PDFs with
a single API call.
POST your document schema as JSON, get pixel-perfect PDF bytes back. Works with Python, Ruby, Go, PHP — any language that can make HTTP requests.
Be first to get access. No spam, just one email when we launch.
Three lines of code. Any language.
curl -X POST https://api.tangentflow.com/v1/render \
-H "Authorization: Bearer tf_your_key" \
-H "Content-Type: application/json" \
-d '{
"blocks": [
{ "type": "heading", "text": "Invoice #1047", "level": 1 },
{ "type": "table", "headers": "Item, Qty, Price",
"rows": "Widget Pro, 1, $299.00" },
{ "type": "qr-code", "data": "https://pay.example.com/inv/1047" }
]
}' \
-o invoice.pdf
import requests
response = requests.post(
"https://api.tangentflow.com/v1/render",
headers={"Authorization": "Bearer tf_your_key"},
json={
"blocks": [
{"type": "heading", "text": "Invoice #1047", "level": 1},
{"type": "table", "headers": "Item, Qty, Price",
"rows": "Widget Pro, 1, $299.00"}
]
}
)
with open("invoice.pdf", "wb") as f:
f.write(response.content)
const response = await fetch("https://api.tangentflow.com/v1/render", {
method: "POST",
headers: {
"Authorization": "Bearer tf_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
blocks: [
{ type: "heading", text: "Invoice #1047", level: 1 },
{ type: "table", headers: "Item, Qty, Price",
rows: "Widget Pro, 1, $299.00" },
],
}),
})
const pdf = Buffer.from(await response.arrayBuffer())
fs.writeFileSync("invoice.pdf", pdf)
body := strings.NewReader(`{
"blocks": [
{"type":"heading","text":"Invoice #1047","level":1},
{"type":"table","headers":"Item, Qty, Price",
"rows":"Widget Pro, 1, $299.00"}
]
}`)
req, _ := http.NewRequest("POST",
"https://api.tangentflow.com/v1/render", body)
req.Header.Set("Authorization", "Bearer tf_your_key")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
pdf, _ := io.ReadAll(resp.Body)
os.WriteFile("invoice.pdf", pdf, 0644)
Tables That Wrap
Per-cell text wrapping with auto-sized columns, right-aligned numbers, and header repeat on page breaks.
Every Language
Pixel-perfect text wrapping for Latin, CJK, Arabic, Hindi, emoji, and mixed-direction text.
Form Filling
Upload a PDF template, fill form fields with your data, get a completed PDF back.
QR Codes
Generate QR codes inline in your documents. Payment links, URLs, or any data.
Visual Builder
Design your template visually, export as JSON, use it in your API calls. No JSON writing needed.
No Data Stored
Documents generated in-memory, streamed back, never stored. EU servers. GDPR compliant by design.
Simple, usage-based pricing.
Free tier included. Scale as you grow.
| Plan | Price | PDFs / month | Rate limit |
|---|---|---|---|
| Free | $0 | 100 | 10 req/min |
| Starter | $9/mo | 1,000 | 60 req/min |
| Growth | $29/mo | 10,000 | 120 req/min |
| Scale | $99/mo | 100,000 | 300 req/min |