Autenticación
Llaves de API por entorno (pruebas y producción) enviadas en el encabezado Authorization.
Una API REST con JSON, autenticación por llave y webhooks. Envía mensajes, administra plantillas y contactos, y recibe respuestas en tiempo real.
Llaves de API por entorno (pruebas y producción) enviadas en el encabezado Authorization.
Recursos predecibles, códigos HTTP estándar y respuestas fáciles de consumir.
Recibe estados de entrega, lecturas y mensajes entrantes en tu servidor.
Tráfico cifrado con TLS y firma de webhooks para validar su origen.
Con tu llave de API puedes enviar una plantilla aprobada a un número que haya dado su consentimiento. La respuesta incluye un identificador para consultar el estado o recibirlo por webhook.
POST /v1/messagesmessage.delivered en tu webhook# Enviar una plantilla de WhatsApp
curl -X POST https://api.clickmanager.com.co/v1/messages \
-H "Authorization: Bearer $CLICKMANAGER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "whatsapp",
"to": "+573001234567",
"type": "template",
"template": {
"name": "confirmacion_pedido",
"language": "es_CO",
"variables": { "nombre": "Juan", "pedido": "A-10293" }
}
}'const res = await fetch('https://api.clickmanager.com.co/v1/messages', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + process.env.CLICKMANAGER_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
channel: 'whatsapp',
to: '+573001234567',
type: 'template',
template: {
name: 'confirmacion_pedido',
language: 'es_CO',
variables: { nombre: 'Juan', pedido: 'A-10293' },
},
}),
});
const data = await res.json();
console.log(data.id, data.status);$ch = curl_init('https://api.clickmanager.com.co/v1/messages');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CLICKMANAGER_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'channel' => 'whatsapp',
'to' => '+573001234567',
'type' => 'template',
'template' => [
'name' => 'confirmacion_pedido',
'language' => 'es_CO',
'variables' => ['nombre' => 'Juan', 'pedido' => 'A-10293'],
],
]),
]);
$data = json_decode(curl_exec($ch), true);import os, requests
r = requests.post(
"https://api.clickmanager.com.co/v1/messages",
headers={"Authorization": f"Bearer {os.environ['CLICKMANAGER_API_KEY']}"},
json={
"channel": "whatsapp",
"to": "+573001234567",
"type": "template",
"template": {
"name": "confirmacion_pedido",
"language": "es_CO",
"variables": {"nombre": "Juan", "pedido": "A-10293"},
},
},
)
print(r.json())Ejemplo ilustrativo de la referencia preliminar de la API. Los nombres de campos pueden variar hasta el lanzamiento.
Referencia preliminar. La URL base será https://api.clickmanager.com.co.
| Método | Ruta | Descripción |
|---|---|---|
| POST | /v1/messages | Envía un mensaje (plantilla o respuesta dentro de la ventana de atención). |
| GET | /v1/messages/{id} | Consulta el estado de un mensaje: en cola, enviado, entregado, leído o fallido. |
| GET | /v1/templates | Lista las plantillas y su estado de aprobación en Meta. |
| POST | /v1/templates | Crea una plantilla y la envía a aprobación. |
| POST | /v1/contacts | Crea o actualiza un contacto, con etiquetas y registro de consentimiento. |
| GET | /v1/contacts | Lista y filtra contactos. |
| DELETE | /v1/contacts/{id} | Elimina un contacto y sus datos asociados. |
| POST | /v1/campaigns | Crea y programa una campaña para un segmento. |
| GET | /v1/campaigns/{id}/stats | Obtén métricas de entrega, lectura y respuesta. |
| POST | /v1/webhooks | Registra la URL donde recibirás eventos. |
Cada evento llega a tu servidor como una petición POST con un cuerpo JSON y una firma para verificar que proviene de Click Manager.
message.sent, message.delivered, message.read, message.failedmessage.received cuando un cliente te escribetemplate.approved y template.rejectedcontact.opted_out cuando alguien se da de baja{
"event": "message.delivered",
"created_at": "2026-11-04T15:32:10Z",
"data": {
"id": "msg_01JABCDEF",
"channel": "whatsapp",
"to": "+573001234567",
"status": "delivered"
}
}Ejemplo ilustrativo del cuerpo de un evento.
Envía solo a quienes aceptaron recibir tus mensajes y respeta las bajas de inmediato.
Para iniciar una conversación debes usar plantillas aprobadas por Meta.
No expongas la llave de API en aplicaciones cliente. Úsala solo desde tu servidor.
Escríbenos y te damos acceso al entorno de pruebas para que empieces a construir.