# POST /templates/validate

Part of the SendHeron REST API. Base URL: `https://api.sendheron.com/api/v1`

Check a block document without saving anything. Returns `valid` plus an `issues` list naming every problem at once.

```http
POST https://api.sendheron.com/api/v1/templates/validate
Authorization: Bearer <YOUR_API_KEY>
```

**Required scopes:** `templates:read`

**Success status:** `201`

**Rate limit:** 100/min per key, counted against the organization's READ ceiling (1200/min).

**Body parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `document` | object | yes | The block document to check. Nothing is written and no template is touched, so this needs only `templates:read`. |

> If you generate documents programmatically, build the loop around this rather than around the save. Saving an invalid document returns a single `400` naming one problem; this returns every issue in the document, so a generator fixes them in one pass instead of one round trip per mistake. It writes nothing despite being a `POST`, which is also why `201` here means the request was processed rather than that anything was created.


---

Rate limits: 100/min per key, counted against the organization's READ ceiling (1200/min). Both windows are one minute; there is no hourly or daily quota.
