Validate a template
Authorization
ApiKeyAuth API key from Settings → API Keys.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/templates/string/validate" \ -H "Content-Type: application/json" \ -d '{}'{ "ok": false, "engine": "canvas", "counts": { "errors": 1, "warnings": 1, "suggestions": 0 }, "findings": [ { "severity": "error", "code": "canvas.text.unknown_font", "message": "Font \"Helvetica Neue\" is not available. It will be substituted at render time.", "location": { "componentId": "title" }, "fix": "Use one of the built-in families, or upload the font to your Brand Kit." }, { "severity": "warning", "code": "canvas.text.placeholder", "message": "Component \"byline\" still contains placeholder text: \"Author Name\".", "location": { "componentId": "byline" } } ]}Revoke URL base DELETE
Removes the on-demand token. Every signed URL for the template stops working immediately.
Preview a template POST
Renders the template so you can look at it, and returns a signed URL valid for one hour. Fields you do not supply fall back to the template's own sample values, so an empty body still produces a filled page rather than a skeleton. Send `document` to preview a candidate without saving it first. **A preview is not a render.** It creates no render record, does not appear in `GET /api/v1/renders`, costs no credits, and the file expires. Authoring is iterative, and charging per look would make the loop this API exists for the most expensive way to use the product. When you want a retained, listed, deliverable document, call `POST /api/v1/renders`. A template that fails to render returns `422` with the engine's own message — for Typst that includes the line number, which is what you feed back into a fix.