authentication
OTP delivery. Meta defines the text — you don’t write the message body, only the button and the validity.
How it works
The code is not registered here. The template is the mold, and Meta fixes the text around it — “«code» is your verification code”. You generate and send the code at send time, a different one per customer. That is why the body and the footer go without text: what you control is whether the security line shows, how long the code lasts and how the customer receives it.At creation and at send time
Fields in this model
The button
text is written and translated by Meta based on the template language. Whatever you send there is ignored.COPY_CODE, the only one that needs no app details. For autofill, the button changes:
Full JSON
Two JSON payloads: one creates the template, and Meta approves it once. The other sends the message, and goes on every dispatch, with that send’s values in the variables marked with braces.1. Create the template
POST /whatsapp/businesses/{wabaId}/templates — see API reference.
2. Send it once approved
POST /v1/channels/{channelId}/messages — see Send template.
What Meta rejects here
ONE_TAPorZERO_TAPwithoutsupported_apps.- Zero tap without accepting the terms.
- Code validity outside the 1 to 90 minute range.
- Send validity shorter than the code validity: the message stops being delivered before the code expires, and the customer loses both.