Submit template
Submit a WhatsApp template for Meta approval through a connected WABA.
Body parameters
| namerequired | string |
| categoryrequired | string |
| language | string |
| bodyrequired | string |
- Only approved templates can be used for outbound WhatsApp sends.
namemust match^[a-z0-9_]+$(lowercase letters, numbers and underscores only);categoryis one ofmarketing,utility,authentication;languagedefaults toen_US.- Optional
footer(≤60 chars) and up to 3buttons, each{ type: "url", text, url },{ type: "phone", text, phone }or{ type: "quick_reply", text }. channel_idchooses which connected WhatsApp number submits the template; omit it to use the workspace's connected number.- The template is returned flat (fields at the top level), matching GET /api/v1/templates/{id}.
- Category is what the message does:
utilityonly for updates about something the customer already has, with no promotional wording (Meta rejects it or moves it to marketing),marketingfor anything promotional,authenticationfor codes. Number variables {{1}}, {{2}} and on, in order with none skipped. - You do not send sample values. Meta's reviewers need a sample for every variable, so Blueticked sends one per variable, chosen from the words around it (a first name after
Hi, a date afteron). To pick your own samples, create the template in the dashboard. - The API creates templates without a header (a body, with an optional footer and buttons). A template with a DOCUMENT header (a statement or an invoice) is made in the dashboard, then sent with
documenton POST /api/v1/messages ordocument_sourceon a campaign. A body carrying a header field (any field whose name starts withheader, in any case:header,header_format,headerFormat) answers 422template_kind_unsupportedwith details.field naming it, and nothing is created.
curl -X POST "https://app.blueticked.com/api/v1/templates" \
-H "Authorization: Bearer $BLUETICKED_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: change-me-per-request-0001" \
-d '{
"name": "order_update_v1",
"category": "utility",
"language": "en_US",
"body": "Hi {{1}}, your order {{2}} is ready."
}'Response
{
"id": "7af1270d-94ba-4661-9fc4-0d3852469977",
"name": "order_update_v1",
"category": "utility",
"language": "en_US",
"status": "pending",
"request_id": "req_b2e3d610e10f1b07468721ee98f0e1d2"
}