Skip to content

Submit template for approval

View .md
POST

Submit a WhatsApp template to Meta for approval. The template must be in draft status and associated with a sender that has a WhatsApp Business Account configured.

Authorization

  • Authorizationheaderrequired

    Bearer YOUR_API_KEY. Create a key in the dashboard.

Path parameters

  • templateIdstringrequired

Body

application/json

  • senderIdstringrequired

    The sender ID with the WhatsApp Business Account to submit the template to.

  • categorystring

    Template category. If not provided, uses the category set on the template.

    One ofUTILITYMARKETINGAUTHENTICATION
  • variableExamplesobject

    Sample value for each body variable, sent to Meta as the example it reviews the template with. Key a named variable ({{customer_name}}) by its name, and a positional one ({{1}}, {{2}}) as var1, var2.

    Any variable left out gets a generic placeholder: a stock value for a few common names (name, order_id, code, ...) and Sample <variable> for the rest. Meta reviews those less favourably, so send a realistic value for every variable.

    1 properties
    • {key}string

Responses

202Template submitted for approval.
  • idstringrequired
  • namestringrequired

    Template name. For WhatsApp, must match the approved template name in Meta.

  • languagestringrequired

    Language code.

  • bodystringrequired

    Default template body with variables: positional ({{1}}, {{2}}) or named ({{customer_name}}, {{contact.first_name}}). Templates created in Zavu are submitted to Meta as positional; templates imported from a WhatsApp Business Account keep their original format (named or positional). Used when no channel-specific body is set.

  • smsBodystring

    Channel-specific body for SMS messages. Falls back to body if not set.

  • telegramBodystring

    Channel-specific body for Telegram messages. Falls back to body if not set.

  • instagramBodystring

    Channel-specific body for Instagram messages. Falls back to body if not set.

  • categorystringrequired

    The category the template is billed under. For a template linked to WhatsApp this is the category Meta currently assigns, not the one it was submitted with: Meta can recategorize a template at approval or at any point afterwards, and that changes what the message costs.

    A recategorization reaches this field through the template.status_changed webhook, which carries data.category, and through POST /v1/templates/sync, which reconciles it against Meta. Read one of those rather than assuming the category you sent is the one in force.

    For a template that was never submitted to WhatsApp, this is the category stored locally, defaulting to UTILITY.

    One ofUTILITYMARKETINGAUTHENTICATION
  • statusstring
    One ofdraftpendingapprovedrejected
    Defaultdraft
  • variablesstring[]

    List of variable names for documentation.

  • headerTypestring

    Type of header (text, image, video, document).

  • headerContentstring

    Header content (text or media URL).

  • footerstring

    Footer text for the template.

  • buttonsobject[]

    Template buttons.

    8 properties
    • typestring
      One ofquick_replyurlphoneotprequest_contact_info
    • textstring
    • urlstring
    • examplestring

      Sample value used to substitute {{1}} in the URL when submitting the template to Meta for review. Only present for dynamic URL buttons.

    • phoneNumberstring
    • otpTypestring

      OTP button type. Required when type is 'otp'.

      One ofCOPY_CODEONE_TAP
    • packageNamestring

      Android package name. Required for ONE_TAP buttons.

    • signatureHashstring

      Android app signature hash. Required for ONE_TAP buttons.

  • addSecurityRecommendationboolean

    Add 'Do not share this code' disclaimer. Only for AUTHENTICATION templates.

  • codeExpirationMinutesinteger

    Code expiration time in minutes. Only for AUTHENTICATION templates.

    Limitsmin 1 · max 90
  • whatsappobject

    WhatsApp-specific template information.

    3 properties
    • templateNamestring

      WhatsApp template name.

    • namespacestring

      WhatsApp Business Account namespace.

    • statusstring

      WhatsApp approval status.

  • createdAtstring<date-time>
  • updatedAtstring<date-time>
400Invalid request or template not in draft status.
  • codestringrequired
  • messagestringrequired
  • detailsobject
401Unauthorized.
  • codestringrequired
  • messagestringrequired
  • detailsobject
404Template or sender not found.
  • codestringrequired
  • messagestringrequired
  • detailsobject