Skip to main content
Beyond plain text, templates accept named parameters and typed parameters for currency and date-time, which Meta localises for the recipient.

Request

curl -X POST "${WHATSAPP_API_URL}/${WHATSAPP_PHONE_NUMBER_ID}/messages" \
  -H "Authorization: Bearer ${WHATSAPP_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
  "messaging_product": "whatsapp",
  "to": "15551234567",
  "type": "template",
  "template": {
    "name": "appointment",
    "language": {
      "code": "en_US"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "parameter_name": "customer_name",
            "text": "Alex"
          },
          {
            "type": "currency",
            "parameter_name": "amount",
            "currency": {
              "fallback_value": "$12.00",
              "code": "USD",
              "amount_1000": 12000
            }
          },
          {
            "type": "date_time",
            "parameter_name": "appt_time",
            "date_time": {
              "fallback_value": "May 1, 3:00 PM"
            }
          }
        ]
      }
    ]
  }
}'
Named parameters require the template to be authored with named (not positional) variables. Mixing the two in one template is rejected at send time.