# Galley Render > Documents for agents. JSON in, PDF out. A template plus a JSON payload becomes a PDF, PNG or > JPG behind a signed URL. Every render is deterministic, cached and signed, so the same input > always returns the same file and an identical repeat call costs nothing. Use Galley when a task needs a real file — an invoice, quote, receipt, certificate, report, shipping label, OG card, ticket or badge — rather than text or HTML. The first 50 renders need no API key, no signup and no card. Connect to the MCP endpoint and call `render`; a trial token comes back in the response. `create_account` with an email lifts the limit and keeps everything the trial made. ## Start here - [MCP endpoint](https://mcp.galleyrender.com/mcp): streamable HTTP. Ten tools: list_templates, get_template, create_template, update_template, validate_data, render, get_render, list_renders, usage, create_account. No authentication required to begin. - [Skill file](https://mcp.galleyrender.com/skill.md): the whole product in one page, written for an agent. Start here if you are reading this to decide how to use Galley. - [OpenAPI](https://api.galleyrender.com/openapi.json): the REST surface. - [Quickstart](https://galleyrender.com/docs/quickstart): curl, Node and Python in under a minute. ## API - [POST /v1/render](https://galleyrender.com/docs/api/render): template + data + format → signed URL. Small jobs finish in the call; a webhook, `async: true` or a large payload queues the job. - [POST /v1/render/batch](https://galleyrender.com/docs/api/batch): up to 50 renders, per-item errors returned inline. - [GET /v1/renders/:id](https://galleyrender.com/docs/api/get-render): status, plus a fresh signed URL. Signed URLs expire; the stored object does not. - [GET /v1/templates](https://galleyrender.com/docs/api/templates): templates on the account, with their latest version. - [POST /v1/templates](https://galleyrender.com/docs/api/create-template): create at version 1. - [POST /v1/templates/:name/versions](https://galleyrender.com/docs/api/versions): publish a new immutable version. Earlier versions keep rendering. - [POST /v1/templates/:ref/validate](https://galleyrender.com/docs/api/validate): dry-run a payload against the schema. Free, renders nothing, returns the same field-level errors. - [GET /v1/usage](https://galleyrender.com/docs/api/usage): period usage, cost, free-tier balance, spend cap, and trial renders remaining. ## Templates - [Template language](https://galleyrender.com/docs/templates): one self-contained HTML document with inline CSS and Liquid expressions, plus a JSON Schema per version. `money` and `date_medium` are the two extra filters. - [Starter library](https://galleyrender.com/templates): 22 templates — invoice, quote, change order, receipt, statement, purchase order, certificate, report cover, report table, one-page summary, shipping label, packing slip, OG card, social quote card, event ticket, badge, menu, price sheet, letterhead, chart card, slide deck, single slide. - [Engines](https://galleyrender.com/docs/templates/engines): `chromium` for full HTML and CSS and anything PDF; `satori`, a fast PNG path for simple flexbox cards. - [Versioning](https://galleyrender.com/docs/templates/versions): `name@3` pins a version. Versions are immutable and content-addressed; the checksum is part of the render cache key. ## Errors - [Error format](https://galleyrender.com/docs/errors): every error carries a stable `type`, a `docs_url` and, for validation, the field path, the expected type, what was received and a value that would be accepted. - [validation_error](https://galleyrender.com/docs/errors/validation_error) — 422, fix the named fields. - [quota_exceeded](https://galleyrender.com/docs/errors/quota_exceeded) — 402, trial or free tier spent. - [asset_blocked](https://galleyrender.com/docs/errors/asset_blocked) — 400, an image or font URL failed the SSRF policy; use a public https URL. ## Optional - [Pricing](https://galleyrender.com/pricing): free tier 200 renders a month; pay as you go at $0.006 per PNG and $0.015 per PDF page; plans from $19. - [Caching and billing](https://galleyrender.com/docs/caching): cache key = template version checksum + canonical data + canonical options + format. Cache hits are never billed. - [Webhooks](https://galleyrender.com/docs/webhooks): POST on completion for queued renders. - [SDKs](https://galleyrender.com/docs/sdks): `galley-render` on npm (Node, zero dependencies) and on PyPI (Python, sync and async). Both have a `startTrial` / `start_trial` helper that mints the keyless trial through the MCP endpoint and returns a key usable against this REST API. Also `n8n-nodes-galley-render` on npm, and a Zapier integration. - [Security](https://galleyrender.com/docs/security): SSRF-safe asset fetching, public IPs only, size and time limits, no shell access from templates. - [Terms](https://galleyrender.com/terms)