---
title: "Publish a WhatsApp template"
method: POST
path: "/v1/design_studio/whatsapp/{id}/publish"
tags: ["WhatsApp link and publish"]
---

# Publish a WhatsApp template

`POST /v1/design_studio/whatsapp/{id}/publish`

## Request

- Base URL: `https://api.customer.io`
- URL: `https://api.customer.io/v1/design_studio/whatsapp/{id}/publish`
- Auth: none declared

Publish a linked WhatsApp template, pushing its current content, recipient, and sender to the workflow it's linked to. Publishing doesn't send anything to Meta, so you can publish as often as you need to, like after you change the template's recipient or sender.

You need to [link the template](/integrations/api/design-studio/tag/whatsapp-link-and-publish/linkWhatsApp/) and [submit it to Meta](/integrations/api/design-studio/tag/whatsapp-approval/submitWhatsApp/) before you can publish it. You can't publish a template that Meta rejected.

You can publish a template while Meta is still reviewing it, but your audience might not receive it until Meta approves it. Make sure the template's [status](/integrations/api/design-studio/tag/whatsapp-approval/getWhatsAppStatus/) is `APPROVED` before you start sending.

## Path parameters

- `id` string, uuid, required

## Response `200`

WhatsApp template published

- ChannelPublishResponse: The result of the publish process.
  - `template_ids` integer[]: The IDs of the workflow templates that received the content.
  - `version_id` string: The identifier of the template version created by the publish process.

## Other responses

- `400`: The request is invalid due to malformed parameters, missing required fields, or constraint violations.
- `401`: Authentication failed due to a missing or invalid API key.
- `404`: The requested resource was not found.
- `409`: You haven't submitted the template to Meta, or Meta rejected it. The error's `meta.status` holds the template's current Meta status, or an empty string if you haven't submitted it.
- `422`: The liquid in the template's content or recipient isn't valid, so Customer.io doesn't publish it. Each error's `source.pointer` names the field that failed, as `/data/attributes/content` or `/data/attributes/recipient`. Fix the template, then publish it again.

## Changes

- **2026-10-28** `f33c07c62301`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/changes/v1/design_studio/whatsapp/:id/publish/post.md)

---

[API](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference.md) - [All operations](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/revisions/ac0b282053fe?raw)
