---
title: "Render a placeholder template with JSON data"
method: POST
path: "/api/v2/templates/{id}/render"
tags: ["render"]
---

# Render a placeholder template with JSON data

`POST /api/v2/templates/{id}/render`

## Request

- Base URL: `https://api.pressa.dev`
- URL: `https://api.pressa.dev/api/v2/templates/{id}/render`
- Auth: none declared

Requires a paid plan and a V2 (placeholder-aware) template. Placeholders use Liquid syntax, for example {{ customer_name }}. The whole call is capped at 60 seconds.

## Path parameters

- `id` string, required

## Request body

- object
  - `data` object, required: Values for the template's placeholders, keyed by placeholder name.

## Response `200`

PDF rendered. Same shape as compile, plus a `template` block with id, name and version.

## Other responses

- `401`: Missing or invalid API key.
- `403`: `plan_required` - render is a paid feature.
- `404`: No such template for this account.
- `422`: `template_engine_mismatch` (convert the template with POST /api/v2/templates/{id}/promote), missing required placeholder data, or compilation failure.
- `429`: Monthly quota or per-minute render limit exceeded.
- `504`: The render exceeded the 60 second wall clock.

---

[API](https://skmtc.dev/pressa/apis/pressa-api.md) · [All operations](https://skmtc.dev/pressa/apis/pressa-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pressa/apis/pressa-api/revisions/045e40b209e8?raw)
