Templates tools
Read Meta-approved templates, save drafts and submit new ones for approval.
list_templates#List message templates
WhatsApp message templates registered with Meta, with status, body and the placeholders each needs. Only APPROVED templates can be sent. For one template's buttons and rejection reason use get_template.
Parameters (6)›
status"APPROVED" | "PENDING" | "REJECTED" | "PAUSED" | "DISABLED"
No extra notes.category"MARKETING" | "UTILITY" | "AUTHENTICATION"
No extra notes.querystring
Substring of the template name or body.cursorstring
next_cursorfrom the previous page; omit for the first page. Keep the other filters the same; the page size stays as on the first page.page_sizeinteger
Rows per page, 1-100. Default 20.Default20response_format"concise" | "detailed"
concisereturns the fields a person reads;detailedadds ids and raw fields for follow-up calls.Default"concise"
get_template#Get one template
One WhatsApp template: body, placeholders, buttons, status and rejection reason. Check placeholders before send_template_message, reply_to_chat_with_template or a template create_broadcast.
Parameters (2)›
template_namerequiredstring
Template name as registered with Meta: lowercase snake case.language_coderequiredstring
Template language code, e.g.en_US,en,hi.
search_template_library#Search the template library
Ready-made WhatsApp template ideas from Meta's utility library and SheetWA's community library, by words, category and industry. Use one as the start for save_template_draft. Read-only; importing is done in the dashboard.
Parameters (7)›
querystring
Words matched against title, body, use case and industry.source"meta" | "community" | "both"
No extra notes.Default"both"category"MARKETING" | "UTILITY" | "AUTHENTICATION"
No extra notes.industrystring
e.g.retail,education.cursorstring
next_cursorfrom the previous page; omit for the first page. Keep the other filters the same; the page size stays as on the first page.page_sizeinteger
Rows per page, 1-100. Default 20.Default20response_format"concise" | "detailed"
concisereturns the fields a person reads;detailedadds ids and raw fields for follow-up calls.Default"concise"
list_template_drafts#List template drafts
WhatsApp template drafts saved in SheetWA and not yet sent to Meta. Submit one with submit_template.
Parameters (3)›
cursorstring
next_cursorfrom the previous page; omit for the first page. Keep the other filters the same; the page size stays as on the first page.page_sizeinteger
Rows per page, 1-100. Default 20.Default20response_format"concise" | "detailed"
concisereturns the fields a person reads;detailedadds ids and raw fields for follow-up calls.Default"concise"
save_template_draft#Save a template draft
Saves a WhatsApp template draft in SheetWA for a person to review; nothing goes to Meta. Pass draft_id to change an existing draft. Body placeholders are positional: {{1}}, {{2}}. Header media ids come from list_media.
Parameters (11)›
template_namerequiredstring
Template name as registered with Meta: lowercase snake case.language_coderequiredstring
Template language code, e.g.en_US,en,hi.categoryrequired"MARKETING" | "UTILITY" | "AUTHENTICATION"
MARKETING for promotions, UTILITY for transactional updates, AUTHENTICATION for codes.bodyrequiredstring
Message body. Positional placeholders{{1}},{{2}}… in order; no placeholder at the very start or end.header_textstring
Short text header. Give this or header_format, not both.header_format"IMAGE" | "VIDEO" | "DOCUMENT"
Media header type; pair with header_media_asset_id.header_media_asset_idstring
Amedia_asset_idfromlist_media, used as the header sample.footer_textstring
No extra notes.quick_reply_buttonsstring[]
Up to 3 button labels, 25 characters each.url_buttonobject
One link button: label and https URL.draft_idstring
Adraft_idfromlist_template_drafts, to change that draft.
submit_template#Submit a template to Meta for approval
Sends a WhatsApp template to Meta for approval. Pass draft_id alone for a saved draft, or the full fields. Approval takes minutes to hours; the template can be sent only once get_template shows APPROVED. Owner or admin keys only.
Parameters (11)›
template_namestring
Template name as registered with Meta: lowercase snake case.language_codestring
Template language code, e.g.en_US,en,hi.category"MARKETING" | "UTILITY" | "AUTHENTICATION"
MARKETING for promotions, UTILITY for transactional updates, AUTHENTICATION for codes.bodystring
Message body. Positional placeholders{{1}},{{2}}… in order; no placeholder at the very start or end.header_textstring
Short text header. Give this or header_format, not both.header_format"IMAGE" | "VIDEO" | "DOCUMENT"
Media header type; pair with header_media_asset_id.header_media_asset_idstring
Amedia_asset_idfromlist_media, used as the header sample.footer_textstring
No extra notes.quick_reply_buttonsstring[]
Up to 3 button labels, 25 characters each.url_buttonobject
One link button: label and https URL.draft_idstring
Adraft_idfromlist_template_drafts; give it alone to submit that draft.