Números de WhatsApp Business: plantillas que revisa Meta, escribir primero con una plantilla aprobada (POST /inbox/conversations) y difusiones a muchos números. Las respuestas dentro de las 24 horas van por la bandeja. Estas cuentas no publican.
Listar plantillas
Sección titulada «Listar plantillas»/v1/accounts/{id}/whatsapp/templatesSe leen en directo de Meta, una por nombre e idioma.
Parámetros
idstringobligatorio
Respuesta 200
data []
idstringobligatorionamestringobligatoriolanguagestringobligatoriocategorystringobligatorioMARKETING, UTILITY o AUTHENTICATION.
statusstringobligatorioEl veredicto de Meta: PENDING, APPROVED, REJECTED, IN_APPEAL, PAUSED, DISABLED o PENDING_DELETION. Solo se puede enviar APPROVED.
componentsobject[]obligatorio
curl "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Crear una plantilla
Sección titulada «Crear una plantilla»/v1/accounts/{id}/whatsapp/templatesMeta la revisa (hasta 24 horas): empieza como PENDING y solo se puede enviar cuando está APPROVED. La categoría decide lo que cobra Meta por cada mensaje.
Parámetros
idstringobligatorio
Cuerpo
namestringobligatoriocategorystringobligatoriolanguagestringobligatorioCódigo de idioma de Meta, por ejemplo es, en_US, pt_BR.
componentsobject[]obligatorioLos componentes de Meta: un BODY con su texto ({{1}}, {{2}}…) y un ejemplo de cada dato, y si quieres HEADER, FOOTER y BUTTONS.
Respuesta 201
data
idstringobligatorionamestringobligatoriolanguagestringobligatoriocategorystringobligatorioMARKETING, UTILITY o AUTHENTICATION.
statusstringobligatorioEl veredicto de Meta: PENDING, APPROVED, REJECTED, IN_APPEAL, PAUSED, DISABLED o PENDING_DELETION. Solo se puede enviar APPROVED.
componentsobject[]obligatorio
curl -X POST "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Borrar una plantilla
Sección titulada «Borrar una plantilla»/v1/accounts/{id}/whatsapp/templates/{name}Todos los idiomas del nombre, o solo language.
Parámetros
idstringobligatorionamestringobligatoriolanguagestring
Respuesta 204
Sin contenido
curl -X DELETE "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates/pedido_listo" \ -H "Authorization: Bearer $MARSIAL_API_KEY"await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates/pedido_listo', { method: 'DELETE', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});import os, requests
requests.delete( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/templates/pedido_listo", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)Escribir primero con una plantilla
Sección titulada «Escribir primero con una plantilla»/v1/inbox/conversationsAbre una conversación de WhatsApp (o la retoma tras 24 horas sin mensajes) con una plantilla APPROVED. La respuesta llega a la bandeja y como message.received; desde ahí responde con POST /inbox/conversations/{id}/messages durante 24 horas.
Cuerpo
accountIdstringobligatorioLa cuenta de WhatsApp desde la que escribir.
phonestringobligatorioA quién escribir.
templateobjectobligatorioUna plantilla APPROVED: la única forma de escribir primero, o tras 24 horas sin mensajes.
template
namestringobligatoriolanguagestringobligatorioparamsstring[]Los valores de los datos, en orden: cabecera, cuerpo y botones de URL.
Respuesta 201
data
conversationIdstring | nullobligatorioLa conversación en la bandeja (cnv_…): ahí llegan las respuestas.
curl -X POST "https://api.marsial.dev/v1/inbox/conversations" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/inbox/conversations', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/inbox/conversations", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Listar difusiones
Sección titulada «Listar difusiones»/v1/accounts/{id}/whatsapp/broadcastsCon cuántos destinatarios recibieron, leyeron o fallaron.
Parámetros
idstringobligatorio
Respuesta 200
data []
idstringobligatorioId opaco de la difusión (bcs_…).
accountIdstringobligatorionamestringobligatoriostatusstringobligatoriodraft, scheduled, sending, completed, failed o cancelled.
templatestringscheduledAtstringrecipientCountintegerobligatoriosentCountintegerobligatoriodeliveredCountintegerobligatorioreadCountintegerobligatoriofailedCountintegerobligatoriocreatedAtstring
curl "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Enviar o programar una difusión
Sección titulada «Enviar o programar una difusión»/v1/accounts/{id}/whatsapp/broadcastsUna plantilla APPROVED a una lista de números, ahora o en scheduledFor. Cada destinatario es un mensaje enviado; Meta cobra su tarifa de plantilla a tu cuenta de WhatsApp Business. Un número nuevo llega como mucho a 250 personas al día hasta que Meta amplía su límite.
Parámetros
idstringobligatorio
Cuerpo
namestringobligatoriotemplateobjectobligatoriotemplate
namestringobligatoriolanguagestringobligatoriovariablesobject | object[]Qué rellena {{1}}, {{2}}… para cada destinatario: uno de sus datos, o el mismo valor para todos.
variables
fieldstringobligatorio
phonesstring[]obligatorioLos destinatarios con su prefijo de país.
scheduledForstring (date-time)Se envía a esta hora; si no, ahora.
Respuesta 201
data
idstringobligatorioId opaco de la difusión (bcs_…).
accountIdstringobligatorionamestringobligatoriostatusstringobligatoriodraft, scheduled, sending, completed, failed o cancelled.
templatestringscheduledAtstringrecipientCountintegerobligatoriosentCountintegerobligatoriodeliveredCountintegerobligatorioreadCountintegerobligatoriofailedCountintegerobligatoriocreatedAtstring
curl -X POST "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Cancelar una difusión
Sección titulada «Cancelar una difusión»/v1/accounts/{id}/whatsapp/broadcasts/{broadcastId}/cancelUna programada, o lo que queda de una que se está enviando. Lo ya enviado, enviado está.
Parámetros
idstringobligatoriobroadcastIdstringobligatorio
Respuesta 204
Sin contenido
curl -X POST "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts/bcs_…/cancel" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts/bcs_…/cancel', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/whatsapp/broadcasts/bcs_…/cancel", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]© 2026 Marsial by TWOFACES ·marsial.dev ·Panel ·soporte@twofacesco.com