Skip to main content
POST
/
v1
/
whatsapp
/
templates
cURL
curl --request POST \
  --url https://api.buildwithchirp.com/v1/whatsapp/templates \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "whatsappBusinessProfileId": "wabp_abc123",
  "name": "order_confirmation",
  "language": "en_US",
  "category": "UTILITY",
  "components": [
    {
      "type": "BODY",
      "text": "Hello {{customer_name}}, your order #{{order_id}} has been confirmed!"
    }
  ]
}
'
{
  "id": "<string>",
  "organizationId": "<string>",
  "whatsappBusinessProfileId": "<string>",
  "metaTemplateId": "<string>",
  "name": "<string>",
  "language": "<string>",
  "category": "MARKETING",
  "status": "PENDING",
  "components": [
    {
      "type": "HEADER",
      "format": "TEXT",
      "text": "<string>",
      "example": {
        "header_text": [
          "<string>"
        ],
        "header_handle": [
          "<string>"
        ],
        "body_text": [
          [
            "<string>"
          ]
        ]
      },
      "buttons": [
        {
          "type": "QUICK_REPLY",
          "text": "<string>",
          "url": "<string>",
          "phone_number": "<string>",
          "example": [
            "<string>"
          ]
        }
      ]
    }
  ],
  "variableMapping": {},
  "rejectionReason": "<string>",
  "qualityScore": "<string>",
  "createdAt": "<string>",
  "updatedAt": "<string>"
}

Authorizations

Authorization
string
header
required

App API key (format: sk_live_app_* or sk_test_app_*) for app-level operations

Body

application/json
whatsappBusinessProfileId
string
required

The ID of the WhatsApp Business Profile to create the template for

Example:

"wabp_abc123"

name
string
required

Template name (lowercase letters, numbers, underscores only, must start with a letter)

Required string length: 1 - 512
Example:

"order_confirmation"

language
string
required

Language code (BCP 47 format)

Required string length: 2 - 10
Example:

"en_US"

category
enum<string>
required

Template category

Available options:
MARKETING,
UTILITY,
AUTHENTICATION
Example:

"UTILITY"

components
object[]
required

Template components (must include at least a BODY)

Minimum array length: 1
Example:
[
  {
    "type": "BODY",
    "text": "Hello {{customer_name}}, your order #{{order_id}} has been confirmed!"
  }
]

Response

Template created and linked to app

id
string
required
organizationId
string
required
whatsappBusinessProfileId
string
required
metaTemplateId
string | null
required
name
string
required
language
string
required
category
enum<string>
required
Available options:
MARKETING,
UTILITY,
AUTHENTICATION
status
enum<string>
required
Available options:
PENDING,
APPROVED,
REJECTED,
PAUSED,
DISABLED
components
object[]
required
variableMapping
object
required
rejectionReason
string | null
required
qualityScore
string | null
required
createdAt
string
required
updatedAt
string
required