Documentación API
Integra consultas electorales, antecedentes y digitalización de documentos en tus aplicaciones.
La API de Avappi ofrece múltiples servicios para consultar información de ciudadanos colombianos de manera rápida y confiable. Ideal para campañas políticas, verificaciones de identidad, y digitalización de documentos.
https://avappi.avapp.com.co/
Precios
Todos los precios están en Pesos Colombianos (COP). El saldo se descuenta automáticamente por cada consulta exitosa.
Nota: Clientes Enterprise pueden negociar tarifas personalizadas.
Autenticación
Todas las peticiones deben incluir tu API Key. Puedes obtener una registrándote en nuestro dashboard.
Métodos de envío
| Método | Parámetro | Ejemplo |
|---|---|---|
| Header (Recomendado) | X-API-Key |
X-API-Key: sk_live_123... |
| Query Param | apiKey |
?apiKey=sk_live_123... |
Consulta Individual (Censo)
Obtén la información de votación de una sola cédula. Costo: $80 COP
Ejemplo de Solicitud
curl -X GET "https://avappi.avapp.com.co/consultar/1234567890" \
-H "X-API-Key: tu_api_key"
Respuesta Exitosa
{
"success": true,
"data": {
"departamento": "BOGOTA D.C.",
"municipio": "BOGOTA D.C.",
"puesto": "COLEGIO NUEVA GRANADA",
"direccion": "CR 2 E # 70 - 20",
"mesa": "1"
},
"duration": 1245,
"fromCache": false
}
Consulta Masiva (Censo)
Consulta hasta 10 cédulas en una sola petición. Costo: $80 COP × cantidad de cédulas
Body (JSON)
{
"cedulas": ["1234567890", "9876543210"]
}
Ejemplo de Solicitud
curl -X POST "https://avappi.avapp.com.co/consultar/bulk" \
-H "X-API-Key: tu_api_key" \
-H "Content-Type: application/json" \
-d '{"cedulas": ["1234567890", "9876543210"]}'
Digitalización de Documentos
Extrae datos estructurados de documentos mediante OCR. Costo: $100 COP por registro
Headers
| Header | Valor |
|---|---|
Content-Type |
multipart/form-data |
X-API-Key |
Tu API Key |
Body (Form Data)
| Campo | Tipo | Descripción |
|---|---|---|
file |
File | Imagen del documento (JPG, PNG, PDF) |
type |
string | Tipo de documento: cedula, e14, general |
Ejemplo con cURL
curl -X POST "https://avappi.avapp.com.co/api/digitization" \
-H "X-API-Key: tu_api_key" \
-F "file=@documento.jpg" \
-F "type=cedula"
Respuesta Exitosa
{
"success": true,
"records": 1,
"data": [
{
"nombre": "JUAN PEREZ GARCIA",
"cedula": "1234567890",
"fecha_nacimiento": "1990-05-15",
"confidence": 0.95
}
],
"cost": 100
}
Envíos WhatsApp
Envía mensajes de WhatsApp desde tus propios sistemas, por los números que ya tiene tu organización en Avappi. Sirve tanto para avisos sueltos (un recibo, una confirmación) como para lotes de hasta 100 mensajes en una sola petición.
avp_..., y se crea desde el panel en Admin → API de envíos. Se muestra una sola vez al crearla: si se pierde, se revoca y se crea otra.
Autenticación
La clave va en un encabezado. Aquí no funciona el parámetro ?apiKey= de las consultas.
X-Api-Key: avp_tu_clave
# o, si tu cliente ya trabaja con Bearer:
Authorization: Bearer avp_tu_clave
Permisos de la clave
Cada clave lleva permisos y, si se quiere, una lista de números desde los que puede enviar.
| Permiso | Qué habilita |
|---|---|
enviar |
Mandar mensajes (POST /api/envios/mensajes). |
consultar |
Ver estado, historial, plantillas, cuentas y saldo. |
Una clave sin el permiso que pide la ruta recibe 403.
Cobro
Se descuenta por mensaje aceptado por WhatsApp, según la regla acordada con tu organización (algunas cobran por mensaje enviado, otras por categoría de plantilla). Puedes ver el saldo y la regla vigente en GET /api/envios/saldo. Si no alcanza, la petición responde 402 y no se envía nada del lote.
Enviar mensajes
Campos del mensaje
| Campo | Obligatorio | Descripción |
|---|---|---|
para |
Sí | Número de destino. Un celular colombiano de 10 dígitos se completa solo con el 57. |
plantilla |
Sí* | Nombre de la plantilla en Meta. Debe estar aprobada en la cuenta que envía. |
idioma |
No | Idioma de la plantilla, p. ej. es. Sin él se toma la aprobada. |
variables |
No | Valores para los huecos de la plantilla, como {"1": "Ana", "2": "45.000"}. |
texto |
Sí* | Mensaje libre. Solo llega si el contacto te escribió en las últimas 24 horas; fuera de esa ventana WhatsApp exige plantilla. |
desde / waAccountId |
No | Número o cuenta con la que enviar. Si tu clave tiene una sola cuenta, se toma esa; si tiene varias, hay que indicarlo. |
* Hace falta plantilla o texto, uno de los dos.
Un mensaje
curl -X POST "https://avappi.avapp.com.co/api/envios/mensajes" \
-H "X-Api-Key: avp_tu_clave" \
-H "Content-Type: application/json" \
-d '{
"para": "3001234567",
"plantilla": "recordatorio_pago",
"idioma": "es",
"variables": { "1": "Ana", "2": "45.000" }
}'
Varios de una vez
Hasta 100 mensajes por petición. El saldo se revisa una sola vez para todo el lote, así que no te quedas a mitad sin saber qué salió.
curl -X POST "https://avappi.avapp.com.co/api/envios/mensajes" \
-H "X-Api-Key: avp_tu_clave" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: recibos-2026-08-14-lote-7" \
-d '{
"desde": "573001110000",
"mensajes": [
{ "para": "3001234567", "plantilla": "recordatorio_pago", "variables": { "1": "Ana" } },
{ "para": "3007654321", "plantilla": "recordatorio_pago", "variables": { "1": "Luis" } }
]
}'
"repetida": true en vez de volver a enviar. Úsalo siempre que reintentes por un timeout, así un corte de red no le cuesta mensajes duplicados a nadie.
Respuesta
El resultado viene mensaje por mensaje: que la petición sea 200 no quiere decir que todos hayan salido.
{
"ok": true,
"enviados": 1,
"fallidos": 1,
"desde": "573001110000",
"resultados": [
{ "ok": true, "para": "573001234567", "wamid": "wamid.HBgMNTc..." },
{ "ok": false, "para": "573007654321", "error": "No existe la plantilla \"recordatorio_pago\" en esa cuenta" }
]
}
Cuando falla toda la petición
{
"ok": false,
"error": "Saldo insuficiente para enviar 2 mensajes",
"saldo": 1200
}
Estado e historial
Un mensaje aceptado no es un mensaje entregado. WhatsApp avisa después si se entregó, si lo leyeron o si rebotó, y eso queda aquí.
curl -X GET "https://avappi.avapp.com.co/api/envios/mensajes/wamid.HBgMNTc..." \
-H "X-Api-Key: avp_tu_clave"
{
"ok": true,
"mensaje": {
"wamid": "wamid.HBgMNTc...",
"telefono": "573001234567",
"desde": "573001110000",
"tipo": "template",
"estado": "delivered",
"origen": "api",
"eventos": [
{ "estado": "sent", "ocurrido_en": "2026-08-14T15:02:11.000Z" },
{ "estado": "delivered", "ocurrido_en": "2026-08-14T15:02:14.000Z" }
]
}
}
Los mensajes salientes de tu organización, para conciliar contra tus propios registros.
| Parámetro | Descripción |
|---|---|
desde |
Fecha inicial, en formato ISO. |
hasta |
Fecha final, en formato ISO. |
telefono |
Filtra por un destinatario. |
limite |
Cuántos traer. Por omisión 100, tope 500. |
curl -X GET "https://avappi.avapp.com.co/api/envios/mensajes?desde=2026-08-01&limite=50" \
-H "X-Api-Key: avp_tu_clave"
Plantillas, cuentas y saldo
Las plantillas aprobadas que puedes usar, con sus variables. Consúltalas antes de enviar en vez de asumir nombres: Meta puede rechazar o pausar una plantilla en cualquier momento.
{
"ok": true,
"plantillas": [
{
"nombre": "recordatorio_pago",
"idioma": "es",
"categoria": "UTILITY",
"estado": "APPROVED",
"desde": "573001110000"
}
]
}
Los números desde los que puede enviar esta clave. El id es lo que va en waAccountId.
{
"ok": true,
"cuentas": [
{ "id": 3, "etiqueta": "Principal", "numero": "573001110000", "verificada": true }
]
}
Cuánto queda y cómo se cobra. Vale la pena mirarlo antes de un lote grande.
{
"ok": true,
"organizacion": "Partido Ejemplo",
"saldo": 250000,
"modo": "prepago",
"limiteCredito": 0,
"cobraPor": "enviado",
"gastadoEsteMes": 48000
}
Códigos de Error
| Código | Descripción |
|---|---|
400 |
Solicitud inválida. Verifica los parámetros enviados. |
401 |
API Key inválida o faltante. |
402 |
Saldo insuficiente. Recarga en el dashboard. |
403 |
La clave no tiene el permiso que pide la ruta (envíos WhatsApp). |
404 |
No se encontró el recurso, p. ej. un wamid que no es de tu organización. |
429 |
Límite de velocidad excedido (60 req/min). |
500 |
Error interno del servidor. |
503 |
Servicio externo no disponible (Registraduría). |
Avappi