Templates
Register message templates and read back the sendable ones with the parameters each takes — what a send outside the customer window needs, and what an agent is handed as tool schemas.
Register a template
List templates
ModelsExpand Collapse
Template object { category, created_at, language, 9 more } One registered message template in any status, with the parameters it takes.
A template is identified by its name and language together — that is the
pair a template part names, and the pair this API addresses it by. There is
no separate template id.
One registered message template in any status, with the parameters it takes.
A template is identified by its name and language together — that is the
pair a template part names, and the pair this API addresses it by. There is
no separate template id.
utility, marketing or authentication — the category the channel ASSIGNED, which may not be the one that was requested: a template that reads as marketing is recategorised on review, and the category is what a send is priced at. Values grow additively.
The variables this template takes, as a JSON Schema (2020-12) object — ready to hand to a model verbatim as a tool schema. Every property is a string and every one is required: the channel substitutes all of them.
Each property publishes minLength, maxLength and pattern alongside
its example, so a model sees the same value rules the send path enforces:
values are 1–1024 characters, not whitespace-only, and contain no line
break, tab or run of four spaces.
An empty properties object means the template takes no variables.
null means something different and specific: this template’s variables
cannot be addressed by name over this API (they are positional, or they
live in a part of the template this API does not read yet). A template
part naming such a template cannot supply its variables.
The channel’s quality signal for this template, when it has one. null until it does. Free text; treat an unknown value as no signal.
Why the template was refused or held, when the channel said. Free text for a human; the wording is not stable and must not be branched on. null when there is nothing to say.
The complete schema for the template part that sends this exact template, including its fixed identity, named parameters, media header, and carousel values. null means this template cannot be addressed safely through this API.
Where this template stands. Only approved may be sent.
draft — a submission attempt has not produced a registered template.
Consult retry_allowed; draft status alone never permits resubmission.
pending — under review. Review is an unbounded queue; an hour or more is
ordinary for a first submission.
approved — sendable.
rejected — refused; rejected_reason may say why.
paused — was approved and is currently held, usually for quality. Not
terminal: it can become approved again without you doing anything.
disabled — no longer usable.
Values grow additively, and anything you do not recognise is not sendable.
content: optional object { body, buttons, carousel, 2 more } Human-readable copy and fixed actions in a registered template.
Human-readable copy and fixed actions in a registered template.
TemplatePage object { data, has_more, next_cursor } One page of templates, newest first.
One page of templates, newest first.
utility, marketing or authentication — the category the channel ASSIGNED, which may not be the one that was requested: a template that reads as marketing is recategorised on review, and the category is what a send is priced at. Values grow additively.
The variables this template takes, as a JSON Schema (2020-12) object — ready to hand to a model verbatim as a tool schema. Every property is a string and every one is required: the channel substitutes all of them.
Each property publishes minLength, maxLength and pattern alongside
its example, so a model sees the same value rules the send path enforces:
values are 1–1024 characters, not whitespace-only, and contain no line
break, tab or run of four spaces.
An empty properties object means the template takes no variables.
null means something different and specific: this template’s variables
cannot be addressed by name over this API (they are positional, or they
live in a part of the template this API does not read yet). A template
part naming such a template cannot supply its variables.
The channel’s quality signal for this template, when it has one. null until it does. Free text; treat an unknown value as no signal.
Why the template was refused or held, when the channel said. Free text for a human; the wording is not stable and must not be branched on. null when there is nothing to say.
The complete schema for the template part that sends this exact template, including its fixed identity, named parameters, media header, and carousel values. null means this template cannot be addressed safely through this API.
Where this template stands. Only approved may be sent.
draft — a submission attempt has not produced a registered template.
Consult retry_allowed; draft status alone never permits resubmission.
pending — under review. Review is an unbounded queue; an hour or more is
ordinary for a first submission.
approved — sendable.
rejected — refused; rejected_reason may say why.
paused — was approved and is currently held, usually for quality. Not
terminal: it can become approved again without you doing anything.
disabled — no longer usable.
Values grow additively, and anything you do not recognise is not sendable.
content: optional object { body, buttons, carousel, 2 more } Human-readable copy and fixed actions in a registered template.
Human-readable copy and fixed actions in a registered template.