Skip to main content
The same renderer as /generate, open to the public with no key — it powers the “Try it” widget on tipar.dev. Every result is watermarked, and it’s tightly capped. It’s for evaluating Tipar, not for production.
POST https://api.tipar.dev/v1/playground/generate

How it differs from /generate

/generate/v1/playground/generate
AuthAPI keynone
Watermarknoalways
Rate limit60/min per key5 renders/day per IP
Max body4 MB256 KB
Quota / meteringcounts against your plannone — nothing is stored or metered
The request body is identical: { "template": …, "data": … }. The response is a watermarked application/pdf.

Response

200 OK
application/pdf
The rendered PDF, with a tipar.dev watermark across the page.

Errors

StatuscodeWhen
400Malformed JSON, a missing/unknown node type, or a body that omits template. Doesn’t spend a daily render.
413Request body exceeds 256 KB.
422template.*Template reached the renderer but couldn’t produce a document. Same codes as /generate — see errors.
429rate_limit.exceededThe 5-renders-per-day cap is reached for your IP. Carries Retry-After.
The daily allowance is only spent on an actual render attempt — a malformed 400 request is free. The 429 message points you at signing up:
{
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Playground limit reached (5 renders/day). Sign up for a free API key to keep generating.",
  "errors": [
    { "code": "rate_limit.exceeded", "message": "Playground limit reached (5 renders/day). Sign up for a free API key to keep generating." }
  ]
}
The playground accepts cross-origin requests from tipar.dev only (a non-credentialed CORS policy). To render from your own code, use /generate with an API key.
Building a template? Iterate in the playground until the structure is right, then move the same template to /generate with your key — the JSON is identical, minus the watermark and the caps.