{"id":741,"date":"2026-10-29T13:21:11","date_gmt":"2026-10-29T13:21:11","guid":{"rendered":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/"},"modified":"2026-10-29T13:21:18","modified_gmt":"2026-10-29T13:21:18","slug":"enviar-template-api-whatsapp","status":"publish","type":"post","link":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/","title":{"rendered":"Como enviar template pela API do WhatsApp: vari\u00e1veis, m\u00eddia no cabe\u00e7alho e bot\u00f5es (JSON completo)"},"content":{"rendered":"\n<p><em>Atualizado em 29\/10\/2026<\/em><\/p>\n\n\n\n<p>Para enviar um template pela API do WhatsApp, fa\u00e7a um <code>POST<\/code> em <code>\/{phone-number-id}\/messages<\/code> com <code>\"type\": \"template\"<\/code>, o <code>name<\/code> exato do template aprovado, o <code>language.code<\/code> em que ele foi criado e um array <code>components<\/code> com os valores das vari\u00e1veis do cabe\u00e7alho, do corpo e dos bot\u00f5es. O texto fixo n\u00e3o vai no envio: voc\u00ea manda s\u00f3 os par\u00e2metros, e eles precisam bater em quantidade, formato e ordem com o que foi aprovado.<\/p>\n\n\n\n<p>Este guia traz um payload pronto para cada caso: s\u00f3 texto com vari\u00e1veis posicionais e nomeadas, cabe\u00e7alho com imagem, v\u00eddeo ou documento (por <code>link<\/code> e por <code>id<\/code>), bot\u00e3o de URL din\u00e2mica, quick reply com <code>payload<\/code>, c\u00f3digo de cupom e um exemplo combinado. No fim, a tabela de erros de par\u00e2metro mais comuns e como fazer o mesmo envio pela Vectalk.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Anatomia de um envio de template<\/h2>\n\n\n\n<p>Todo envio de template usa o mesmo endpoint da <a href=\"https:\/\/vectalk.com.br\/blog\/api-oficial-do-whatsapp\/\">Cloud API<\/a> que as outras mensagens:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\">POST https:\/\/graph.facebook.com\/v26.0\/{PHONE_NUMBER_ID}\/messages\nAuthorization: Bearer {ACCESS_TOKEN}\nContent-Type: application\/json<\/code><\/pre>\n\n\n\n<p>O corpo tem sempre a mesma casca:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"recipient_type\": \"individual\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"nome_do_template\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": []\n  }\n}<\/code><\/pre>\n\n\n\n<p>Dentro de <code>components<\/code>, cada objeto tem um <code>type<\/code> que aponta para uma parte do template:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><code>type<\/code> do componente<\/th><th>Quando incluir<\/th><th>O que vai em <code>parameters<\/code><\/th><\/tr><\/thead><tbody><tr><td><code>header<\/code><\/td><td>Cabe\u00e7alho com vari\u00e1vel de texto ou com m\u00eddia<\/td><td><code>text<\/code>, <code>image<\/code>, <code>video<\/code>, <code>document<\/code> ou <code>location<\/code><\/td><\/tr><tr><td><code>body<\/code><\/td><td>Corpo com vari\u00e1veis<\/td><td><code>text<\/code> (e tamb\u00e9m <code>currency<\/code> e <code>date_time<\/code>)<\/td><\/tr><tr><td><code>button<\/code><\/td><td>Bot\u00e3o com valor din\u00e2mico<\/td><td>Depende do <code>sub_type<\/code>: <code>url<\/code>, <code>quick_reply<\/code>, <code>copy_code<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Se o template n\u00e3o tem vari\u00e1vel nenhuma, <code>components<\/code> pode ficar de fora. O rodap\u00e9 (<code>footer<\/code>) nunca aparece no envio, porque n\u00e3o aceita vari\u00e1veis. Se voc\u00ea est\u00e1 come\u00e7ando e ainda n\u00e3o mandou nenhuma mensagem pela API, veja antes <a href=\"https:\/\/vectalk.com.br\/blog\/enviar-mensagem-api-whatsapp-exemplos\/\">como enviar mensagem pela API do WhatsApp com cURL, Node.js e Python<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Template s\u00f3 texto com vari\u00e1veis posicionais<\/h2>\n\n\n\n<p>\u00c9 o formato padr\u00e3o: se ningu\u00e9m escolheu outro formato na cria\u00e7\u00e3o, o template usa vari\u00e1veis posicionais, <code>{{1}}<\/code>, <code>{{2}}<\/code> e assim por diante. Segundo a <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/overview\" target=\"_blank\" rel=\"noreferrer noopener\">documenta\u00e7\u00e3o de templates da Meta<\/a>, os valores precisam vir <strong>na mesma ordem<\/strong> em que os placeholders aparecem no texto.<\/p>\n\n\n\n<p>Template aprovado (corpo):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ol\u00e1 {{1}}! Seu pedido {{2}} foi confirmado e chega em {{3}} dias \u00fateis.<\/code><\/pre>\n\n\n\n<p>Envio:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\">curl -X POST \"https:\/\/graph.facebook.com\/v26.0\/$PHONE_NUMBER_ID\/messages\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"messaging_product\": \"whatsapp\",\n    \"recipient_type\": \"individual\",\n    \"to\": \"5511999999999\",\n    \"type\": \"template\",\n    \"template\": {\n      \"name\": \"pedido_confirmado\",\n      \"language\": { \"code\": \"pt_BR\" },\n      \"components\": [\n        {\n          \"type\": \"body\",\n          \"parameters\": [\n            { \"type\": \"text\", \"text\": \"Mariana\" },\n            { \"type\": \"text\", \"text\": \"#48213\" },\n            { \"type\": \"text\", \"text\": \"3\" }\n          ]\n        }\n      ]\n    }\n  }'<\/code><\/pre>\n\n\n\n<p>Tr\u00eas placeholders, tr\u00eas objetos <code>text<\/code>, na ordem. Faltou um, sobrou um ou trocou o tipo: o envio falha (veja a tabela de erros mais abaixo).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Template com vari\u00e1veis nomeadas (<code>parameter_name<\/code>)<\/h2>\n\n\n\n<p>Na cria\u00e7\u00e3o, o template pode declarar <code>\"parameter_format\": \"named\"<\/code>. A\u00ed as vari\u00e1veis viram nomes como <code>{{first_name}}<\/code>, que precisam ser \u00fanicos e usar s\u00f3 letras min\u00fasculas e sublinhado. No envio, cada par\u00e2metro leva um <code>parameter_name<\/code> e, segundo a Meta, <strong>a ordem deixa de importar<\/strong>.<\/p>\n\n\n\n<p>Template aprovado (corpo):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Obrigado, {{first_name}}! O n\u00famero do seu pedido \u00e9 {{order_number}}.<\/code><\/pre>\n\n\n\n<p>Envio:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"recipient_type\": \"individual\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"confirmacao_pedido\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"parameter_name\": \"order_number\", \"text\": \"SKBUP2-4CPIG9\" },\n          { \"type\": \"text\", \"parameter_name\": \"first_name\", \"text\": \"J\u00e9ssica\" }\n        ]\n      }\n    ]\n  }\n}<\/code><\/pre>\n\n\n\n<p>Vari\u00e1veis nomeadas deixam o c\u00f3digo mais leg\u00edvel e evitam o erro cl\u00e1ssico de trocar a ordem de dois valores. O formato \u00e9 definido na cria\u00e7\u00e3o e n\u00e3o no envio: mandar <code>parameter_name<\/code> para um template posicional (ou o contr\u00e1rio) \u00e9 um erro de par\u00e2metro. Como definir o formato na cria\u00e7\u00e3o est\u00e1 no guia de <a href=\"https:\/\/vectalk.com.br\/blog\/criar-template-via-api-whatsapp\/\">criar, editar e excluir templates pela API<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Vari\u00e1veis de moeda e data<\/h3>\n\n\n\n<p>Al\u00e9m de <code>text<\/code>, o corpo aceita par\u00e2metros <code>currency<\/code> (com <code>fallback_value<\/code>, <code>code<\/code> e <code>amount_1000<\/code>, o valor multiplicado por 1.000) e <code>date_time<\/code> (com <code>fallback_value<\/code>), como mostra a p\u00e1gina de <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/template-media\" target=\"_blank\" rel=\"noreferrer noopener\">m\u00eddia em templates<\/a>. Mandar o valor j\u00e1 formatado como <code>text<\/code> tamb\u00e9m funciona.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Cabe\u00e7alho com imagem, v\u00eddeo ou documento<\/h2>\n\n\n\n<p>Se o template foi aprovado com cabe\u00e7alho de m\u00eddia, o envio <strong>precisa<\/strong> trazer a m\u00eddia em um componente <code>header<\/code>. A imagem de exemplo usada na cria\u00e7\u00e3o serve s\u00f3 para a revis\u00e3o; ela n\u00e3o \u00e9 enviada ao cliente. O <code>type<\/code> do par\u00e2metro \u00e9 <code>image<\/code>, <code>video<\/code> ou <code>document<\/code>, e o objeto com o mesmo nome aceita <code>link<\/code> ou <code>id<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Op\u00e7\u00e3o<\/th><th>Como funciona<\/th><th>Quando usar<\/th><\/tr><\/thead><tbody><tr><td><code>link<\/code><\/td><td>URL HTTPS p\u00fablica do arquivo no seu servidor<\/td><td>Arquivos que mudam a cada envio (boleto, nota fiscal)<\/td><\/tr><tr><td><code>id<\/code><\/td><td>Media ID obtido no upload para os servidores da Meta<\/td><td>Mesma m\u00eddia para muitos destinat\u00e1rios (campanha)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>A Meta recomenda <code>id<\/code>, para reduzir erros e chamadas ao seu servidor, e avisa que o <code>link<\/code> precisa estar em servidor p\u00fablico, sen\u00e3o a mensagem falha. Quando voc\u00ea usa <code>link<\/code>, a Cloud API guarda o arquivo em cache por 10 minutos e reaproveita se a mesma URL aparecer de novo nesse intervalo; para for\u00e7ar outro download, acrescente uma query string aleat\u00f3ria \u00e0 URL, conforme a <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messages\/send-messages\" target=\"_blank\" rel=\"noreferrer noopener\">documenta\u00e7\u00e3o de envio<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Imagem por link<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"promo_imagem\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": [\n      {\n        \"type\": \"header\",\n        \"parameters\": [\n          { \"type\": \"image\", \"image\": { \"link\": \"https:\/\/cdn.minhaloja.com.br\/promo\/outubro.jpg\" } }\n        ]\n      },\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"20%\" }\n        ]\n      }\n    ]\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Documento (PDF) por media ID<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"boleto_disponivel\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": [\n      {\n        \"type\": \"header\",\n        \"parameters\": [\n          {\n            \"type\": \"document\",\n            \"document\": { \"id\": \"1013859600285441\", \"filename\": \"boleto-outubro.pdf\" }\n          }\n        ]\n      },\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"Carlos\" },\n          { \"type\": \"text\", \"text\": \"10\/11\/2026\" }\n        ]\n      }\n    ]\n  }\n}<\/code><\/pre>\n\n\n\n<p>O <code>filename<\/code> \u00e9 opcional e vem do objeto de documento das <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messages\/document-messages\" target=\"_blank\" rel=\"noreferrer noopener\">mensagens de documento<\/a>: o app usa a extens\u00e3o para mostrar o \u00edcone certo.<\/p>\n\n\n\n<p>Para v\u00eddeo, a estrutura \u00e9 a mesma: <code>\"type\": \"video\"<\/code> e um objeto <code>video<\/code> com <code>link<\/code> ou <code>id<\/code>.<\/p>\n\n\n\n<p>Para gerar o media ID, fa\u00e7a o upload em <code>POST \/{PHONE_NUMBER_ID}\/media<\/code>. Limites de tamanho, formatos aceitos e o passo a passo do upload est\u00e3o em <a href=\"https:\/\/vectalk.com.br\/blog\/enviar-midia-api-whatsapp\/\">como enviar imagem, PDF, \u00e1udio e v\u00eddeo pela API do WhatsApp<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Bot\u00e3o de URL din\u00e2mica<\/h2>\n\n\n\n<p>Um bot\u00e3o de URL pode ter <strong>uma<\/strong> vari\u00e1vel, sempre no fim da URL. Na cria\u00e7\u00e3o, algo como <code>https:\/\/minhaloja.com.br\/pedido\/{{1}}<\/code>. No envio, voc\u00ea manda s\u00f3 o sufixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"rastreio_pedido\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"#48213\" }\n        ]\n      },\n      {\n        \"type\": \"button\",\n        \"sub_type\": \"url\",\n        \"index\": \"0\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"48213?utm_source=whatsapp\" }\n        ]\n      }\n    ]\n  }\n}<\/code><\/pre>\n\n\n\n<p>Tr\u00eas regras que derrubam muita integra\u00e7\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>index<\/code> \u00e9 a posi\u00e7\u00e3o do bot\u00e3o no template<\/strong>, come\u00e7ando em 0. Se o bot\u00e3o de URL \u00e9 o segundo bot\u00e3o aprovado, o <code>index<\/code> \u00e9 <code>1<\/code>. A Meta explica que, quando h\u00e1 bot\u00f5es com vari\u00e1vel, tipo e ordem precisam bater com o template; mandar o \u00edndice errado gera um erro do tipo &#8220;Parameter value for URL was expected but was not found&#8221;.<\/li>\n\n\n<li><strong>Codifique caracteres especiais<\/strong> antes de enviar. A <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/components\" target=\"_blank\" rel=\"noreferrer noopener\">p\u00e1gina de componentes<\/a> cita espa\u00e7o (<code>%20<\/code>), dois-pontos (<code>%3A<\/code>), barra vertical (<code>%7C<\/code>) e letras acentuadas: <code>Gon\u00e7alves<\/code> vira <code>Gon%C3%A7alves<\/code>. Valor sem codifica\u00e7\u00e3o pode invalidar a URL e falhar o envio.<\/li>\n\n\n<li><strong>Bot\u00e3o de URL sem vari\u00e1vel n\u00e3o entra no envio.<\/strong> S\u00f3 inclua o componente <code>button<\/code> se aquele bot\u00e3o tiver parte din\u00e2mica.<\/li>\n\n<\/ul>\n\n\n\n<p>Os exemplos da Meta usam <code>index<\/code> \u00e0s vezes como string (<code>\"0\"<\/code>) e \u00e0s vezes como n\u00famero (<code>0<\/code>). Escolha um e padronize no seu c\u00f3digo. Se quiser medir o clique no GA4 com UTM nesse sufixo, veja o guia de <a href=\"https:\/\/vectalk.com.br\/blog\/utm-template-whatsapp\/\">bot\u00e3o de URL din\u00e2mica com UTM<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Quick reply com payload<\/h2>\n\n\n\n<p>Bot\u00f5es de resposta r\u00e1pida s\u00e3o definidos na cria\u00e7\u00e3o com um texto fixo (at\u00e9 25 caracteres) e n\u00e3o precisam de nada no envio. O que voc\u00ea pode mandar \u00e9 um <strong>payload<\/strong> pr\u00f3prio, devolvido no webhook quando o cliente toca no bot\u00e3o. Isso permite saber exatamente qual campanha, pedido ou oferta gerou a resposta.<\/p>\n\n\n\n<p>A sintaxe aparece na documenta\u00e7\u00e3o de <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\/media-card-carousel-templates\" target=\"_blank\" rel=\"noreferrer noopener\">templates de carrossel<\/a>, onde a Meta descreve o <code>payload<\/code> como opcional e entregue em <code>messages.button.payload<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"confirmar_consulta\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"Ana\" },\n          { \"type\": \"text\", \"text\": \"05\/11 \u00e0s 14h\" }\n        ]\n      },\n      {\n        \"type\": \"button\",\n        \"sub_type\": \"quick_reply\",\n        \"index\": 0,\n        \"parameters\": [\n          { \"type\": \"payload\", \"payload\": \"confirmar:consulta:98765\" }\n        ]\n      },\n      {\n        \"type\": \"button\",\n        \"sub_type\": \"quick_reply\",\n        \"index\": 1,\n        \"parameters\": [\n          { \"type\": \"payload\", \"payload\": \"remarcar:consulta:98765\" }\n        ]\n      }\n    ]\n  }\n}<\/code><\/pre>\n\n\n\n<p>Quando a cliente toca em &#8220;Confirmar&#8221;, chega no webhook uma mensagem com <code>\"type\": \"button\"<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"context\": { \"from\": \"5511988880000\", \"id\": \"wamid.HBgLNTUx...\" },\n  \"from\": \"5511999999999\",\n  \"id\": \"wamid.HBgLNTUy...\",\n  \"timestamp\": \"1761750000\",\n  \"type\": \"button\",\n  \"button\": { \"payload\": \"confirmar:consulta:98765\", \"text\": \"Confirmar\" }\n}<\/code><\/pre>\n\n\n\n<p>O <code>context.id<\/code> \u00e9 o <code>wamid<\/code> do template enviado, e o <code>button.payload<\/code> traz a sua chave. No exemplo da <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/webhooks\/reference\/messages\/button\" target=\"_blank\" rel=\"noreferrer noopener\">refer\u00eancia do webhook de bot\u00e3o<\/a>, sem payload pr\u00f3prio, <code>payload<\/code> e <code>text<\/code> trazem o mesmo r\u00f3tulo do bot\u00e3o. Lembre que, na cria\u00e7\u00e3o, os bot\u00f5es de resposta r\u00e1pida precisam ficar agrupados (todos antes ou todos depois dos outros tipos), e o template aceita at\u00e9 10 deles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. C\u00f3digo de cupom (copy_code)<\/h2>\n\n\n\n<p>Templates de marketing podem ter um bot\u00e3o &#8220;copiar c\u00f3digo&#8221;, que copia uma string de at\u00e9 20 caracteres para a \u00e1rea de transfer\u00eancia do celular. No envio, o bot\u00e3o leva <code>sub_type: \"copy_code\"<\/code> e um par\u00e2metro <code>coupon_code<\/code>, conforme a p\u00e1gina de <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\/coupon-templates\" target=\"_blank\" rel=\"noreferrer noopener\">templates de cupom<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"cupom_black_friday\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"parameter_name\": \"coupon_code\", \"text\": \"BLACK25\" },\n          { \"type\": \"text\", \"parameter_name\": \"discount\", \"text\": \"25%\" }\n        ]\n      },\n      {\n        \"type\": \"button\",\n        \"sub_type\": \"copy_code\",\n        \"index\": 0,\n        \"parameters\": [\n          { \"type\": \"coupon_code\", \"coupon_code\": \"BLACK25\" }\n        ]\n      }\n    ]\n  }\n}<\/code><\/pre>\n\n\n\n<p>Como na p\u00e1gina da Meta, o exemplo usa um template com vari\u00e1veis nomeadas no corpo; num template posicional, tire o <code>parameter_name<\/code>. Note que o c\u00f3digo aparece duas vezes: uma no corpo (para o cliente ler) e outra no bot\u00e3o (para copiar). S\u00e3o campos independentes; se voc\u00ea gerar cupons \u00fanicos por cliente, preencha os dois com o mesmo valor. O template aceita um bot\u00e3o de copiar c\u00f3digo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7. Exemplo combinado: imagem, vari\u00e1veis nomeadas, URL e quick reply<\/h2>\n\n\n\n<p>Na vida real, um template de marketing costuma juntar v\u00e1rias pe\u00e7as. Suponha um template aprovado com cabe\u00e7alho de imagem, corpo <code>Oi {{first_name}}, a cole\u00e7\u00e3o {{collection}} chegou!<\/code>, bot\u00e3o 0 de URL din\u00e2mica e bot\u00e3o 1 de quick reply &#8220;N\u00e3o quero receber&#8221;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\">curl -X POST \"https:\/\/graph.facebook.com\/v26.0\/$PHONE_NUMBER_ID\/messages\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"messaging_product\": \"whatsapp\",\n    \"recipient_type\": \"individual\",\n    \"to\": \"5511999999999\",\n    \"type\": \"template\",\n    \"template\": {\n      \"name\": \"colecao_nova\",\n      \"language\": { \"code\": \"pt_BR\" },\n      \"components\": [\n        {\n          \"type\": \"header\",\n          \"parameters\": [\n            { \"type\": \"image\", \"image\": { \"id\": \"1339522734477770\" } }\n          ]\n        },\n        {\n          \"type\": \"body\",\n          \"parameters\": [\n            { \"type\": \"text\", \"parameter_name\": \"first_name\", \"text\": \"Bruna\" },\n            { \"type\": \"text\", \"parameter_name\": \"collection\", \"text\": \"Ver\u00e3o 2027\" }\n          ]\n        },\n        {\n          \"type\": \"button\",\n          \"sub_type\": \"url\",\n          \"index\": \"0\",\n          \"parameters\": [\n            { \"type\": \"text\", \"parameter_name\": \"slug\", \"text\": \"verao-2027\" }\n          ]\n        },\n        {\n          \"type\": \"button\",\n          \"sub_type\": \"quick_reply\",\n          \"index\": \"1\",\n          \"parameters\": [\n            { \"type\": \"payload\", \"payload\": \"optout:campanha_verao\" }\n          ]\n        }\n      ]\n    }\n  }'<\/code><\/pre>\n\n\n\n<p>O <code>parameter_name<\/code> no bot\u00e3o de URL s\u00f3 se aplica se o template for nomeado e a URL usar <code>{{slug}}<\/code>; num template posicional, tire essa chave. Para cards com imagem e bot\u00e3o por card, a estrutura muda (componente <code>carousel<\/code>), e est\u00e1 no guia de <a href=\"https:\/\/vectalk.com.br\/blog\/template-carrossel-whatsapp\/\">template carrossel<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O campo <code>language<\/code><\/h2>\n\n\n\n<p><code>language.code<\/code> precisa ser <strong>exatamente<\/strong> o c\u00f3digo com que o template foi criado. Um template chamado <code>pedido_confirmado<\/code> em <code>pt_BR<\/code> e outro de mesmo nome em <code>en_US<\/code> s\u00e3o dois templates diferentes. Alguns c\u00f3digos da <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/supported-languages\" target=\"_blank\" rel=\"noreferrer noopener\">lista de idiomas suportados<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Idioma<\/th><th>C\u00f3digo<\/th><\/tr><\/thead><tbody><tr><td>Portugu\u00eas (Brasil)<\/td><td><code>pt_BR<\/code><\/td><\/tr><tr><td>Portugu\u00eas (Portugal)<\/td><td><code>pt_PT<\/code><\/td><\/tr><tr><td>Ingl\u00eas (EUA)<\/td><td><code>en_US<\/code><\/td><\/tr><tr><td>Ingl\u00eas (Reino Unido)<\/td><td><code>en_GB<\/code><\/td><\/tr><tr><td>Espanhol<\/td><td><code>es<\/code><\/td><\/tr><tr><td>Espanhol (M\u00e9xico)<\/td><td><code>es_MX<\/code><\/td><\/tr><tr><td>Espanhol (Argentina)<\/td><td><code>es_AR<\/code><\/td><\/tr><tr><td>Espanhol (Espanha)<\/td><td><code>es_ES<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Mandou <code>pt<\/code> para um template criado em <code>pt_BR<\/code>? O resultado \u00e9 o erro 132001, como se o template n\u00e3o existisse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A resposta da API<\/h2>\n\n\n\n<p>Quando o envio \u00e9 aceito, a API devolve:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"contacts\": [{ \"input\": \"5511999999999\", \"wa_id\": \"5511999999999\" }],\n  \"messages\": [{ \"id\": \"wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBJBRkJENzEx...\", \"message_status\": \"accepted\" }]\n}<\/code><\/pre>\n\n\n\n<p>Guarde o <code>id<\/code> (o <code>wamid<\/code>): \u00e9 ele que aparece nos webhooks de status (<code>sent<\/code>, <code>delivered<\/code>, <code>read<\/code>, <code>failed<\/code>). O campo <code>message_status<\/code> s\u00f3 aparece quando o template est\u00e1 sob <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/template-pacing\" target=\"_blank\" rel=\"noreferrer noopener\">pacing<\/a>. Resposta 200 significa &#8220;aceito&#8221;, n\u00e3o &#8220;entregue&#8221;; alguns erros de template s\u00f3 aparecem depois, no webhook com <code>status: failed<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erros comuns de par\u00e2metro<\/h2>\n\n\n\n<p>Estes s\u00e3o os c\u00f3digos que mais aparecem ao enviar templates, com a descri\u00e7\u00e3o da <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/support\/error-codes\" target=\"_blank\" rel=\"noreferrer noopener\">tabela de erros da Meta<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>C\u00f3digo<\/th><th>O que significa<\/th><th>Causa t\u00edpica<\/th><\/tr><\/thead><tbody><tr><td><code>132000<\/code><\/td><td>Quantidade de par\u00e2metros diferente da definida no template<\/td><td>Faltou ou sobrou um <code>text<\/code> no corpo; esqueceu o componente do bot\u00e3o de URL din\u00e2mica<\/td><\/tr><tr><td><code>132001<\/code><\/td><td>Template n\u00e3o existe no idioma informado ou n\u00e3o foi aprovado<\/td><td><code>language.code<\/code> errado, nome com erro de digita\u00e7\u00e3o, template ainda <code>PENDING<\/code><\/td><\/tr><tr><td><code>132005<\/code><\/td><td>Texto traduzido longo demais<\/td><td>Confira no WhatsApp Manager se a tradu\u00e7\u00e3o do template est\u00e1 completa<\/td><\/tr><tr><td><code>132007<\/code><\/td><td>Conte\u00fado do template viola uma pol\u00edtica do WhatsApp<\/td><td>Revise o conte\u00fado conforme as regras de revis\u00e3o<\/td><\/tr><tr><td><code>132012<\/code><\/td><td>Par\u00e2metros em formato diferente do especificado no template<\/td><td><code>parameter_name<\/code> em template posicional (ou o inverso); <code>text<\/code> onde se esperava <code>image<\/code><\/td><\/tr><tr><td><code>132015<\/code><\/td><td>Template pausado por baixa qualidade<\/td><td>Edite o template e aguarde nova aprova\u00e7\u00e3o<\/td><\/tr><tr><td><code>132016<\/code><\/td><td>Template pausado vezes demais e desativado de vez<\/td><td>Crie um template novo, com outro conte\u00fado<\/td><\/tr><tr><td><code>131008<\/code><\/td><td>Falta um par\u00e2metro obrigat\u00f3rio<\/td><td>Campo obrigat\u00f3rio ausente, como <code>language<\/code> ou <code>name<\/code><\/td><\/tr><tr><td><code>131009<\/code><\/td><td>Valor de par\u00e2metro inv\u00e1lido<\/td><td>Valor fora do formato aceito em algum campo<\/td><\/tr><tr><td><code>100<\/code><\/td><td>Par\u00e2metro n\u00e3o suportado ou escrito errado<\/td><td>Chave com erro de digita\u00e7\u00e3o (<code>paramters<\/code>, <code>lenguage<\/code>)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>A investiga\u00e7\u00e3o detalhada de 132000 e 132012 tem um artigo pr\u00f3prio: <a href=\"https:\/\/vectalk.com.br\/blog\/erro-132000-template-whatsapp\/\">erros 132000 e 132012<\/a>. Para os demais c\u00f3digos da API, veja o guia de <a href=\"https:\/\/vectalk.com.br\/blog\/erros-api-whatsapp\/\">erros da API do WhatsApp<\/a>.<\/p>\n\n\n\n<p>Um checklist r\u00e1pido antes de abrir chamado:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Abra o template no WhatsApp Manager (ou consulte pela API de templates) e confirme <code>status: APPROVED<\/code>, idioma e <code>parameter_format<\/code>.<\/li>\n\n\n<li>Conte os placeholders de cada componente e compare com os <code>parameters<\/code> enviados.<\/li>\n\n\n<li>Confira se cada bot\u00e3o com vari\u00e1vel tem um componente <code>button<\/code> com o <code>index<\/code> certo.<\/li>\n\n\n<li>Teste a URL de m\u00eddia em aba an\u00f4nima e codifique os valores de URL din\u00e2mica.<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Quanto custa enviar um template<\/h2>\n\n\n\n<p>O pre\u00e7o depende da categoria do template e do pa\u00eds do destinat\u00e1rio. Para destino Brasil, desde 1\u00ba\/10\/2026 a Meta cobra R$ 0,3217 por template de marketing e R$ 0,0350 por template de utilidade ou autentica\u00e7\u00e3o. Tamb\u00e9m desde 1\u00ba\/10\/2026, templates de utilidade enviados dentro da janela de atendimento passaram a ser cobrados. Como a Meta decide a categoria est\u00e1 em <a href=\"https:\/\/vectalk.com.br\/blog\/categorias-template-whatsapp\/\">marketing, utilidade ou autentica\u00e7\u00e3o<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como enviar template com a Vectalk<\/h2>\n\n\n\n<p>A Vectalk \u00e9 um proxy da Cloud API oficial: o corpo da requisi\u00e7\u00e3o \u00e9 o mesmo da Meta, mudam s\u00f3 a URL e o token. Todos os payloads deste artigo funcionam em <code>POST https:\/\/apis.vectalk.com.br\/api\/messages<\/code>; basta salvar o JSON em um arquivo e enviar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\">curl -X POST https:\/\/apis.vectalk.com.br\/api\/messages \\\n  -H \"Authorization: Bearer $VECTALK_TOKEN\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d @template.json<\/code><\/pre>\n\n\n\n<p>Com um <strong>token de inst\u00e2ncia<\/strong>, o <code>phone_number_id<\/code> \u00e9 resolvido automaticamente. Com um <strong>token de organiza\u00e7\u00e3o<\/strong>, inclua <code>\"phone_number_id\"<\/code> no corpo para dizer de qual n\u00famero sair, conforme a <a href=\"https:\/\/docs.vectalk.com.br\/authentication\">documenta\u00e7\u00e3o de autentica\u00e7\u00e3o<\/a>. A refer\u00eancia do envio est\u00e1 em <a href=\"https:\/\/docs.vectalk.com.br\/api-reference\/messages\/send-template\">Template na API da Vectalk<\/a>.<\/p>\n\n\n\n<p>Os templates em si voc\u00ea cria e acompanha no painel (Templates, com a Biblioteca de Modelos) ou pela API de templates, com token de inst\u00e2ncia. Na cobran\u00e7a, cada mensagem entregue desconta do saldo pr\u00e9-pago da sua conta, e voc\u00ea n\u00e3o precisa cadastrar cart\u00e3o na Meta. Crie sua conta em <a href=\"https:\/\/apps.vectalk.com.br\/register\">apps.vectalk.com.br\/register<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Perguntas frequentes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Preciso mandar o texto do template no envio?<\/h3>\n\n\n\n<p>N\u00e3o. O texto fixo j\u00e1 est\u00e1 aprovado na Meta. No envio v\u00e3o s\u00f3 o nome, o idioma e os valores das vari\u00e1veis, da m\u00eddia do cabe\u00e7alho e dos bot\u00f5es din\u00e2micos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Qual a diferen\u00e7a entre vari\u00e1vel posicional e nomeada?<\/h3>\n\n\n\n<p>Posicional usa <code>{{1}}<\/code>, <code>{{2}}<\/code> e exige os valores na ordem do texto. Nomeada usa <code>{{first_name}}<\/code> e cada valor leva <code>parameter_name<\/code>, em qualquer ordem. O formato \u00e9 escolhido na cria\u00e7\u00e3o do template; se ningu\u00e9m escolher, vale o posicional.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Posso trocar a imagem do cabe\u00e7alho a cada envio?<\/h3>\n\n\n\n<p>Sim. A imagem aprovada \u00e9 s\u00f3 um exemplo para a revis\u00e3o. Em cada envio voc\u00ea manda a m\u00eddia que quiser no componente <code>header<\/code>, por <code>link<\/code> ou <code>id<\/code>, desde que seja do mesmo tipo definido no template (imagem, v\u00eddeo ou documento).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Por que recebo 200 e a mensagem n\u00e3o chega?<\/h3>\n\n\n\n<p>O 200 s\u00f3 confirma que a API aceitou a requisi\u00e7\u00e3o. Erros de template, de n\u00famero ou de limite podem chegar depois, no webhook de status com <code>failed<\/code> e o c\u00f3digo do erro. Monitore os webhooks, n\u00e3o s\u00f3 a resposta HTTP.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Fontes oficiais consultadas em 29\/10\/2026:<\/strong> <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/overview\" target=\"_blank\" rel=\"noreferrer noopener\">Template fundamentals (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/components\" target=\"_blank\" rel=\"noreferrer noopener\">Template components (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/template-media\" target=\"_blank\" rel=\"noreferrer noopener\">Template media (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/utility-templates\/utility-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Utility templates (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\/custom-marketing-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Custom marketing templates (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\/coupon-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Coupon code templates (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\/media-card-carousel-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Media card carousel templates (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/supported-languages\" target=\"_blank\" rel=\"noreferrer noopener\">Supported languages (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messages\/send-messages\" target=\"_blank\" rel=\"noreferrer noopener\">Send messages (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messages\/document-messages\" target=\"_blank\" rel=\"noreferrer noopener\">Document messages (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/webhooks\/reference\/messages\/button\" target=\"_blank\" rel=\"noreferrer noopener\">Button messages webhook (Meta)<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/support\/error-codes\" target=\"_blank\" rel=\"noreferrer noopener\">Error codes (Meta)<\/a>, <a href=\"https:\/\/docs.vectalk.com.br\/api-reference\/messages\/send-template\">Envio de template na API da Vectalk<\/a>, <a href=\"https:\/\/docs.vectalk.com.br\/authentication\">Autentica\u00e7\u00e3o na API da Vectalk<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Payloads completos para enviar template pela API do WhatsApp: vari\u00e1veis posicionais e nomeadas, cabe\u00e7alho com imagem, v\u00eddeo ou PDF, bot\u00e3o de URL din\u00e2mica, quick reply e cupom.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8],"tags":[],"class_list":["post-741","post","type-post","status-publish","format-standard","hentry","category-uncategorized-pt"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Enviar template pela API do WhatsApp: JSON | Vectalk<\/title>\n<meta name=\"description\" content=\"Como enviar template pela API do WhatsApp: payloads cURL e JSON com vari\u00e1veis posicionais e nomeadas, m\u00eddia no cabe\u00e7alho, bot\u00f5es, cupom e erros comuns.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enviar template pela API do WhatsApp: JSON | Vectalk\" \/>\n<meta property=\"og:description\" content=\"Como enviar template pela API do WhatsApp: payloads cURL e JSON com vari\u00e1veis posicionais e nomeadas, m\u00eddia no cabe\u00e7alho, bot\u00f5es, cupom e erros comuns.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Vectalk\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-29T13:21:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-29T13:21:18+00:00\" \/>\n<meta name=\"author\" content=\"wanderleyfcunha\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"wanderleyfcunha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/enviar-template-api-whatsapp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/enviar-template-api-whatsapp\\\/\"},\"author\":{\"name\":\"wanderleyfcunha\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\"},\"headline\":\"Como enviar template pela API do WhatsApp: vari\u00e1veis, m\u00eddia no cabe\u00e7alho e bot\u00f5es (JSON completo)\",\"datePublished\":\"2026-10-29T13:21:11+00:00\",\"dateModified\":\"2026-10-29T13:21:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/enviar-template-api-whatsapp\\\/\"},\"wordCount\":2248,\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/enviar-template-api-whatsapp\\\/\",\"url\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/enviar-template-api-whatsapp\\\/\",\"name\":\"Enviar template pela API do WhatsApp: JSON | Vectalk\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#website\"},\"datePublished\":\"2026-10-29T13:21:11+00:00\",\"dateModified\":\"2026-10-29T13:21:18+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\"},\"description\":\"Como enviar template pela API do WhatsApp: payloads cURL e JSON com vari\u00e1veis posicionais e nomeadas, m\u00eddia no cabe\u00e7alho, bot\u00f5es, cupom e erros comuns.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/enviar-template-api-whatsapp\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/enviar-template-api-whatsapp\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/enviar-template-api-whatsapp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como enviar template pela API do WhatsApp: vari\u00e1veis, m\u00eddia no cabe\u00e7alho e bot\u00f5es (JSON completo)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/\",\"name\":\"Blog Vectalk\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\",\"name\":\"wanderleyfcunha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"caption\":\"wanderleyfcunha\"},\"sameAs\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Enviar template pela API do WhatsApp: JSON | Vectalk","description":"Como enviar template pela API do WhatsApp: payloads cURL e JSON com vari\u00e1veis posicionais e nomeadas, m\u00eddia no cabe\u00e7alho, bot\u00f5es, cupom e erros comuns.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/","og_locale":"en_US","og_type":"article","og_title":"Enviar template pela API do WhatsApp: JSON | Vectalk","og_description":"Como enviar template pela API do WhatsApp: payloads cURL e JSON com vari\u00e1veis posicionais e nomeadas, m\u00eddia no cabe\u00e7alho, bot\u00f5es, cupom e erros comuns.","og_url":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/","og_site_name":"Blog Vectalk","article_published_time":"2026-10-29T13:21:11+00:00","article_modified_time":"2026-10-29T13:21:18+00:00","author":"wanderleyfcunha","twitter_card":"summary_large_image","twitter_misc":{"Written by":"wanderleyfcunha","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/#article","isPartOf":{"@id":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/"},"author":{"name":"wanderleyfcunha","@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b"},"headline":"Como enviar template pela API do WhatsApp: vari\u00e1veis, m\u00eddia no cabe\u00e7alho e bot\u00f5es (JSON completo)","datePublished":"2026-10-29T13:21:11+00:00","dateModified":"2026-10-29T13:21:18+00:00","mainEntityOfPage":{"@id":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/"},"wordCount":2248,"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/","url":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/","name":"Enviar template pela API do WhatsApp: JSON | Vectalk","isPartOf":{"@id":"https:\/\/vectalk.com.br\/blog\/#website"},"datePublished":"2026-10-29T13:21:11+00:00","dateModified":"2026-10-29T13:21:18+00:00","author":{"@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b"},"description":"Como enviar template pela API do WhatsApp: payloads cURL e JSON com vari\u00e1veis posicionais e nomeadas, m\u00eddia no cabe\u00e7alho, bot\u00f5es, cupom e erros comuns.","breadcrumb":{"@id":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vectalk.com.br\/blog\/enviar-template-api-whatsapp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vectalk.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Como enviar template pela API do WhatsApp: vari\u00e1veis, m\u00eddia no cabe\u00e7alho e bot\u00f5es (JSON completo)"}]},{"@type":"WebSite","@id":"https:\/\/vectalk.com.br\/blog\/#website","url":"https:\/\/vectalk.com.br\/blog\/","name":"Blog Vectalk","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vectalk.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b","name":"wanderleyfcunha","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","caption":"wanderleyfcunha"},"sameAs":["https:\/\/vectalk.com.br\/blog"]}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/comments?post=741"}],"version-history":[{"count":1,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/741\/revisions"}],"predecessor-version":[{"id":744,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/741\/revisions\/744"}],"wp:attachment":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/media?parent=741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/categories?post=741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/tags?post=741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}