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.
Tu API Key de Mindo. Formato: mindo_xxxxxxxxxxxxxxxxxxxxxxxx
Parámetros del body
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 .
Nombre del template aprobado a enviar. Debe tener estado APPROVED en Meta.
Idioma del template. Por defecto: "es". Ejemplos: "es", "en", "pt_BR".
Número de teléfono del destinatario en formato internacional (ej: "+5491112345678"). Sin espacios.
Variables personalizadas para el template. Las claves deben coincidir con las variables definidas en el template.
Respuesta (200 OK)
Indica si el mensaje fue enviado exitosamente.
ID del mensaje asignado por Meta (wamid). Usar para consultar el estado del mensaje.
Nombre del template enviado.
Número de teléfono del destinatario.
Estado inicial del mensaje. Siempre "sent" al enviarse exitosamente.
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"
}
}'
200 - OK
400 - Validación
400 - Template no aprobado
404 - Template no encontrado
404 - Número no encontrado
401 - No autenticado
{
"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:
Estado Descripció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
Mensaje de bienvenida a nuevo cliente
Envía un mensaje de bienvenida personalizado cuando un nuevo cliente se registra. 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' ] } " )
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. 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' ] } " )
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 );
Notificación de estado de pedido
Notifica al cliente cuando su pedido cambia de estado. 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' ] } " )
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 );