Skip to main content
POST
Update a template

Overview

Update an existing WhatsApp message template. The template will be resubmitted to Meta for review.
  • Language cannot be changed after template creation
  • Category may be restricted for approved templates
  • Media file only required when changing media type
  • Template status changes to UPDATING during review

Request Body Schema

Same as Create Template, with these differences:

Example Payloads

Update Text Content Only

Update Header Media Type

When changing media type (e.g., from image to video), the file is required:

Keep Same Media Type

When keeping the same media type, file is optional:

Add Buttons to Existing Template


Response

Success (200 OK)

Validation Error (422)


Template Status Flow

After updating:
  1. PENDING → Template without provider_id (treated as new creation)
  2. UPDATING → Existing template resubmitted for review
  3. APPROVED → After Meta approval
  4. REJECTED → If Meta rejects the changes
Use the Sync endpoint to refresh template statuses.

Common Update Scenarios

Update body.text and adjust body.variables array to match new placeholders:
Set header to null or omit it:
Update the entire buttons array:

Important Notes

Breaking Changes
  • Changing language will fail validation
  • Approved templates may have category restrictions
  • Template name follows same rules as creation (lowercase + underscores only)
Best Practices
  • Test updates on duplicate templates first
  • Keep variable placeholders consistent
  • Use Sync endpoint to monitor approval status
  • Backup original template configuration before major updates

For complete payload examples, see TEMPLATE_PAYLOADS.md.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

workspace
string<uuid>
required

ID of the workspace.

template
integer
required

ID of the template.

Body

application/json
name
string
required
Example:

"login_otp_template"

language
string
required

Language cannot be changed after creation

Example:

"en"

category
enum<string>
required

Category may be restricted based on template status

Available options:
MARKETING,
UTILITY,
AUTHENTICATION
body
object
required
header
object

Option 2: Text Header

Maximum string length: 60
buttons
object[]
unsubscribeButton
boolean
blockButton
boolean
addSecurityRecommendation
boolean

Required for AUTHENTICATION category

codeExpirationMinutes
integer

Required for AUTHENTICATION category

Required range: 1 <= x <= 1440
copyCodeButton
boolean

Required for AUTHENTICATION category

Response

status
integer
required
Example:

200

message
string
required
Example:

"Resource updated successfully."

data
object
required

Updated resource data.