Saltar al contenido principal
POST
/
api
/
v1
/
meta-templates
/
send
curl -X POST https://api.mindosoftware.com/api/v1/meta-templates/send/ \
  -H "X-API-Key: mindo_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number_id": "813497231850626",
    "template_name": "welcome_message",
    "language": "es",
    "recipient_phone": "+5491112345678",
    "variables": {
      "name": "Juan Perez",
      "code": "ABC123"
    },
    "button_variables": {
      "button_0": "ABC-123"
    }
  }'
{
  "success": true,
  "message_id": "wamid.HBgNNTQ5MTEyMzQ1Njc4FQIAERgSQjVBN0YzRjQ2NzFCNDVBNQA=",
  "template_name": "welcome_message",
  "recipient_phone": "+5491112345678",
  "status": "sent",
  "sent_at": "2025-11-16T21:30:00Z"
}

Descripción

Este endpoint permite enviar un template de WhatsApp a un destinatario individual. Implementa un patrón fire-and-forget: al enviar el mensaje, retorna un message_id (wamid de Meta) que podés usar para consultar el estado del mensaje. La API valida el template, resuelve las variables y envía el mensaje a través de la API de Meta de forma sincrónica.

Header de autenticación

X-API-Key
string
requerido
Tu API Key de Mindo. Formato: mindo_xxxxxxxxxxxxxxxxxxxxxxxx

Parámetros del body

phone_number_id
string
requerido
ID de Meta del número de WhatsApp desde el cual se enviará el mensaje. Podés obtenerlo con el endpoint Obtener cuentas de negocio.
template_name
string
requerido
Nombre del template aprobado a enviar. Debe tener estado APPROVED en Meta.
language
string
Idioma del template. Por defecto: "es". Ejemplos: "es", "en", "pt_BR".
recipient_phone
string
requerido
Número de teléfono del destinatario en formato internacional (ej: "+5491112345678"). Sin espacios.
variables
object
Variables personalizadas para el template. Las claves deben coincidir con las variables definidas en el template.
button_variables
object
Variables para botones dinámicos del template. Las claves usan el formato button_0, button_1, etc., donde el número corresponde al índice del botón (comenzando en 0). Los valores son los sufijos o payloads dinámicos de cada botón.Importante: Los botones de tipo URL solo admiten 1 variable.

Respuesta (200 OK)

success
boolean
Indica si el mensaje fue enviado exitosamente.
message_id
string
ID del mensaje asignado por Meta (wamid). Usar para consultar el estado del mensaje.
template_name
string
Nombre del template enviado.
recipient_phone
string
Número de teléfono del destinatario.
status
string
Estado inicial del mensaje. Siempre "sent" al enviarse exitosamente.
sent_at
string (ISO 8601)
Fecha y hora en que se envió el mensaje.
curl -X POST https://api.mindosoftware.com/api/v1/meta-templates/send/ \
  -H "X-API-Key: mindo_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number_id": "813497231850626",
    "template_name": "welcome_message",
    "language": "es",
    "recipient_phone": "+5491112345678",
    "variables": {
      "name": "Juan Perez",
      "code": "ABC123"
    },
    "button_variables": {
      "button_0": "ABC-123"
    }
  }'
{
  "success": true,
  "message_id": "wamid.HBgNNTQ5MTEyMzQ1Njc4FQIAERgSQjVBN0YzRjQ2NzFCNDVBNQA=",
  "template_name": "welcome_message",
  "recipient_phone": "+5491112345678",
  "status": "sent",
  "sent_at": "2025-11-16T21:30:00Z"
}

Estados del mensaje

El campo status del mensaje puede tener los siguientes valores:
EstadoDescripción
sentMensaje enviado a Meta exitosamente
deliveredMensaje entregado al dispositivo del destinatario
readMensaje leído por el destinatario
failedEl envío del mensaje falló
El endpoint de consulta de estado individual (GET /api/v1/meta-templates/messages/\{message_id\}/) estará disponible próximamente. Mientras tanto, podés usar el message_id retornado para trazabilidad interna.

Casos de uso

Envía un mensaje de bienvenida personalizado cuando un nuevo cliente se registra.
Python
import requests

response = requests.post(
    "https://api.mindosoftware.com/api/v1/meta-templates/send/",
    headers={"X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx"},
    json={
        "phone_number_id": "813497231850626",
        "template_name": "welcome_message",
        "recipient_phone": "+5491112345678",
        "variables": {
            "name": "Juan Perez"
        }
    }
)

data = response.json()
print(f"Bienvenida enviada: {data['message_id']}")
JavaScript
const response = await fetch(
  "https://api.mindosoftware.com/api/v1/meta-templates/send/",
  {
    method: "POST",
    headers: {
      "X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      phone_number_id: "813497231850626",
      template_name: "welcome_message",
      recipient_phone: "+5491112345678",
      variables: { name: "Juan Perez" }
    })
  }
);

const data = await response.json();
console.log("Bienvenida enviada:", data.message_id);
Envía un código de verificación único al usuario.
Python
import requests
import secrets

code = secrets.token_hex(3).upper()

response = requests.post(
    "https://api.mindosoftware.com/api/v1/meta-templates/send/",
    headers={"X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx"},
    json={
        "phone_number_id": "813497231850626",
        "template_name": "verification_code",
        "recipient_phone": "+5491112345678",
        "variables": {
            "name": "Juan",
            "code": code
        }
    }
)

data = response.json()
print(f"Código {code} enviado: {data['message_id']}")
JavaScript
const code = Math.random().toString(36).substring(2, 8).toUpperCase();

const response = await fetch(
  "https://api.mindosoftware.com/api/v1/meta-templates/send/",
  {
    method: "POST",
    headers: {
      "X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      phone_number_id: "813497231850626",
      template_name: "verification_code",
      recipient_phone: "+5491112345678",
      variables: { name: "Juan", code }
    })
  }
);

const data = await response.json();
console.log(`Código ${code} enviado:`, data.message_id);
Notifica al cliente cuando su pedido cambia de estado.
Python
import requests

response = requests.post(
    "https://api.mindosoftware.com/api/v1/meta-templates/send/",
    headers={"X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx"},
    json={
        "phone_number_id": "813497231850626",
        "template_name": "order_update",
        "recipient_phone": "+5491112345678",
        "variables": {
            "order_id": "ORD-001",
            "status": "En camino"
        }
    }
)

data = response.json()
print(f"Notificación enviada: {data['message_id']}")
JavaScript
const response = await fetch(
  "https://api.mindosoftware.com/api/v1/meta-templates/send/",
  {
    method: "POST",
    headers: {
      "X-API-Key": "mindo_xxxxxxxxxxxxxxxxxxxxxxxx",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      phone_number_id: "813497231850626",
      template_name: "order_update",
      recipient_phone: "+5491112345678",
      variables: { order_id: "ORD-001", status: "En camino" }
    })
  }
);

const data = await response.json();
console.log("Notificación enviada:", data.message_id);