These endpoints apply to Design Studio (new editor) templates backed by Elemental. They are not for Classic Designer-only flows.
Base URL and authentication
All paths are rooted athttps://api.courier.com. Send your API key in the Authorization header as Bearer <token>. For browser-embedded Courier Create, use a JWT with appropriate tenant template scopes instead of the workspace key.
Endpoints
Courier Create operations are tagged Courier Create in the API Reference tab. Each row links to full schemas, status codes, and SDK snippets.| Method | Path | Purpose | API Reference |
|---|---|---|---|
PUT | /tenants/{tenant_id}/templates/{template_id} | Create or replace a template (201 if new, 200 if updated) | Create or Update a Tenant Template |
POST | /tenants/{tenant_id}/templates/{template_id}/publish | Publish a version (latest or specific version in body) | Publish a Tenant Template |
GET | /tenants/{tenant_id}/templates | List templates (paginated) | List Templates in Tenant |
GET | /tenants/{tenant_id}/templates/{template_id} | Get the current template for the tenant | Get a Template in Tenant |
GET | /tenants/{tenant_id}/templates/{template_id}/versions/{version} | Get latest, published, or a version such as v2 | Get a Specific Template Version |
PUT: create or replace
Request body (PutTenantTemplateRequest):
| Field | Type | Required | Description |
|---|---|---|---|
template | object | Yes | TenantTemplateInput (see below) |
published | boolean | No | Default false. If true, save and publish in one step |
template object (TenantTemplateInput):
| Field | Type | Required | Description |
|---|---|---|---|
content | Elemental | Yes | ElementalContent: version plus elements array |
routing | object | No | MessageRouting; multi-channel routing |
channels | object | No | MessageChannels; per-channel config |
providers | object | No | MessageProviders; provider overrides |
POST: publish
Request body (optional):version string. Defaults to latest (publish the newest draft). The template must already exist for the tenant.
GET: list templates
Query parameters:| Parameter | Description |
|---|---|
limit | Page size (default 20, max 100) |
cursor | Opaque cursor from the previous response |
GET: template version
Path parameterversion accepts latest, published, or a concrete version identifier (for example v1, v2).
Common responses
| Status | Meaning |
|---|---|
| 200 | Successful read or update |
| 201 | Template created (PUT) |
| 400 | Validation error |
| 404 | Tenant, template, or version not found |
| 413 | Template payload too large |
What’s Next
How to Use the Courier Create API
Draft, update, publish, and verify with code
Design Studio overview
Editing experience in the UI
Elemental
Build
template.contentCourier Create authentication
JWT scopes for embedded template editing