---
title: "Update a WhatsApp template"
method: PUT
path: "/whatsapp/templates/{template_uuid}"
tags: ["whatsapp"]
---

# Update a WhatsApp template

`PUT /whatsapp/templates/{template_uuid}`

## Request

- Base URL: `https://public-api.ringover.com/v2`
- URL: `https://public-api.ringover.com/v2/whatsapp/templates/{template_uuid}`
- Auth: API key in header `Authorization`

Updates a WhatsApp message template's category and components. The components sent replace the template's existing components.

**Permission:** Access is managed by the WhatsApp service. No specific API token permission is checked.

**Monitoring:** No impact.

## Path parameters

- `template_uuid` string, uuid, required

## Request body

- object
  - `category` 'MARKETING' | 'UTILITY' | 'AUTHENTICATION', required: Meta template category. Defaults to `MARKETING` when omitted on creation.
  - `components` WhatsappTemplateComponentInput[], required: Structured template parts (header, body, footer, buttons). Replaces the template's existing components.
    - `type` 'HEADER' | 'BODY' | 'FOOTER' | 'BUTTONS', required
    - `format` 'TEXT' | 'IMAGE' | 'VIDEO' | 'DOCUMENT': Required for a `HEADER` component: a `HEADER` sent without it, or with a value outside this list, is refused with a 400 whose `errors[]` points `header.format`. Ignored on the other components.
    - `text` string: Text content, for a `TEXT` format component.
    - `media_url` string: Media URL, for an `IMAGE`, `VIDEO` or `DOCUMENT` header.
    - `buttons` WhatsappTemplateButtonInput[]: Buttons, for a `BUTTONS` component. Meta allows at most 10 buttons per template, of which at most 2 `URL` and 1 `PHONE_NUMBER`.
      - `type` 'QUICK_REPLY' | 'URL' | 'PHONE_NUMBER', required
      - `text` string, required: Button label.
      - `url` string: Required for a `URL` button.
      - `phone_number` string: Required for a `PHONE_NUMBER` button.
    - `variables` WhatsappTemplateVariable[]: Placeholder variables used by this component's text.
      - `variable_label` string, required: Placeholder label, matching the `{{label}}` used in the component text. Any name made of letters, digits and underscores is accepted, not just numbers.
      - `example_value` string: Sample value shown to Meta for template review. Defaults to `sample` when omitted.

## Response `200`

Successful operation — the template has been updated.

## Other responses

- `400`: Bad request — invalid template UUID or invalid category/components, or the template was refused by the WhatsApp provider. A validation error (e.g. a `HEADER` component with no `format`, a placeholder with no variable) is explained in `detail`, and `errors[]` names the field at fault in `location` (e.g. `header.format`). A provider refusal has a `detail` starting with `the provider refused this template: ` followed by the provider's own reason, as given by Meta.
- `401`: Unauthorized — access denied by the WhatsApp service.
- `404`: Not found — the specified template, or its account, does not exist; `detail` says which.
- `500`: Internal server error.

## Changes

- **2026-10-01** `5b3e0427c522`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ringover/apis/ringover-public-api/changes/whatsapp/templates/:template_uuid/put.md)

---

[API](https://skmtc.dev/ringover/apis/ringover-public-api.md) - [All operations](https://skmtc.dev/ringover/apis/ringover-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ringover/apis/ringover-public-api/revisions/645bfcebdd56?raw)
