Skip to main content
POST
/
whatsapp
/
businesses
/
{wabaId}
/
templates
curl --request POST \
  --url https://api.hubmessage.io/whatsapp/businesses/{wabaId}/templates \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "order_update_v1",
  "category": "UTILITY",
  "language": "en_US",
  "components": [
    {
      "type": "BODY",
      "text": "Hello {{1}}, your order {{2}} has been updated to {{3}}, see you soon.",
      "example": {
        "body_text": [
          [
            "Ana",
            "ORD-1024",
            "in transit"
          ]
        ]
      }
    }
  ]
}
'
{
  "id": "1613165359891625",
  "status": "PENDING",
  "category": "UTILITY"
}

Overview

Creates a new message template and submits it for Meta approval. The template starts with PENDING status and is updated to APPROVED or REJECTED after review. Use the Sync templates endpoint to force a status update.
The template name must be in snake_case, with no spaces or special characters. Once created, the name cannot be changed.
The wabaId is obtained from the List WABAs endpoint.

Authorizations

Authorization
string
header
required

Secret Key generated in the Hub Message Security panel

Path Parameters

wabaId
string
required

WABA ID (obtained via List WABAs)

Example:

"428083093730937"

Body

application/json
name
string
required

Template name (snake_case, no spaces)

category
enum<string>
required

Template category

Available options:
UTILITY,
MARKETING,
AUTHENTICATION
language
string
required

Template language (e.g. en_US, pt_BR)

components
object[]
required

Template components (HEADER, BODY, FOOTER, BUTTONS)

Response

Template created and submitted for approval

id
string

Created template ID

status
enum<string>

Initial status (usually PENDING)

Available options:
PENDING,
APPROVED,
REJECTED
category
enum<string>

Created template category

Available options:
UTILITY,
MARKETING,
AUTHENTICATION