---
title: "Publish a Tenant Template"
method: POST
path: "/tenants/{tenant_id}/templates/{template_id}/publish"
tags: ["Tenant Templates"]
---

# Publish a Tenant Template

`POST /tenants/{tenant_id}/templates/{template_id}/publish`

## Request

- Base URL: `https://api.courier.com`
- URL: `https://api.courier.com/tenants/{tenant_id}/templates/{template_id}/publish`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/trycourier/apis/courier/docs/tenants/:tenant_id/templates/:template_id/publish/post.ts> (a function with typed inputs; its response is checked against the schema)

Publishes a version of a tenant's notification template, making it the content that tenant's sends render from until you publish another.

## Path parameters

- `tenant_id` string, required
- `template_id` string, required

## Request body

- PostTenantTemplatePublishRequest: Request body for publishing a tenant template version
  - `version` string: The version of the template to publish (e.g., "v1", "v2", "latest"). If not provided, defaults to "latest".

## Response `200`

Template published successfully

- PostTenantTemplatePublishResponse: Response from publishing a tenant template
  - `id` string, required: The template ID
  - `version` string, required: The published version of the template
  - `published_at` string, required: The timestamp when the template was published

## Other responses

- `400`: Bad request - validation error
- `404`: Template or tenant not found

## Changes

- **2026-07-29** `f76bed79a913`: 2 info
  - api tag `Tenant Templates` added
  - api tag `Courier Create` removed
- **2026-02-06** `3fc1c86b4a83`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/trycourier/apis/courier/changes/tenants/:tenant_id/templates/:template_id/publish/post.md)

---

[API](https://skmtc.dev/trycourier/apis/courier.md) - [All operations](https://skmtc.dev/trycourier/apis/courier/llms.txt) - [OpenAPI document](https://skmtc.dev/trycourier/apis/courier/revisions/cb8586034158?raw)
