---
title: "Publish a journey-scoped notification template"
method: POST
path: "/journeys/{templateId}/templates/{notificationId}/publish"
tags: ["Journeys"]
---

# Publish a journey-scoped notification template

`POST /journeys/{templateId}/templates/{notificationId}/publish`

## Request

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

Publishes a journey-scoped template's draft as a new version. Pass a version instead to roll back the template to an earlier publish.

## Path parameters

- `templateId` string, required
- `notificationId` string, required

## Headers

- `Idempotency-Key` string
- `x-idempotency-expiration` string

## Request body

- JourneyTemplatePublishRequest: Request body for publishing a journey-scoped notification template. Pass `version` to roll back to a prior version; omit to publish the current draft.
  - `version` string

## Response `204`

Published notification template

## Other responses

- `400`: Bad request
- `404`: Not found
- `422`: Unprocessable entity

## Changes

- **2026-07-29** `f76bed79a913`: 2 info
  - added the new optional `header` request parameter `Idempotency-Key`
  - added the new optional `header` request parameter `x-idempotency-expiration`
- **2026-05-19** `ecf876c6cda3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/trycourier/apis/courier/changes/journeys/:templateId/templates/:notificationId/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)
