WhatsApp

Update template

Update one variant's components and/or its message_send_ttl_seconds. Name, language and category cannot change after creation.

Meta stores one template per name + language, so a name identifies a family of variants, each with its own Meta id. Pass language to address one variant. Without it, a name with a single variant resolves to that variant; a name with several returns 409 ambiguous_template with details.languages. A bare language (es) matches a single regional variant (es_ES); if the family has several regional variants for it, that is also a 409. A full code (es_ES) must match exactly. Variants in PENDING_DELETION are not part of the family.

Meta only allows editing templates in APPROVED, REJECTED or PAUSED state; an approved template can be edited once per 24 hours and up to 10 times per 30 days. A component update sends the variant back to Meta for review, so the status returned here is normally PENDING; a TTL-only update keeps an APPROVED variant approved. The final outcome arrives on the whatsapp.template.status_updated webhook (which carries the variant's templateId and language). A variant already in PENDING cannot be edited again until Meta finishes reviewing it.

Billing: Request; paid actions are priced in credits (see GET /v1/messaging/prices) · Rate limit: 60/min

patch/v1/messaging/whatsapp/templates/{templateName}

Request

  • Base URL: https://apihub.co.il
  • URL: https://apihub.co.il/v1/messaging/whatsapp/templates/{templateName}
  • Auth: HTTP bearer

Path parameters

templateNamestring required

Template name (the family).

Headers

Idempotency-Keystring

Replay-safe: the same execution is returned instead of charging twice

X-Tagstring

Group calls into one job (e.g. one video) — see GET /v1/usage?tag=…

Request body

languagestring

Language code of the variant to edit (e.g. en_US, es, pt_BR). Required when the family has several languages. Body only: a language query parameter on PATCH is a 400.

accountIdstring required

WhatsApp account ID

message_send_ttl_secondsinteger

Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 is not accepted here (Meta treats it as an empty edit); send a value in range. A TTL-only edit keeps an APPROVED template approved, no re-review. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).

Response

Completed

idstring

Execution id — stable across internal retries; use it with GET /v1/executions/{id}

status'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
operationstring
tagstring nullable

Your X-Tag, if sent

created_atstring date-time
completed_atstring date-time nullable
errorstring nullable

Changes

No recorded changes to this operation across all 2 revisions of this API.