Valkoru API
La API de Valkoru permite integrar inteligencia territorial en tu propio sistema. Puedes correr simulaciones sobre las 216.341 manzanas del Censo 2024, propagar opinión entre territorios vecinos y exportar reportes ejecutivos — todo desde tu stack.
https://api.valkoru.cl · Todas las respuestas son application/json salvo el endpoint de reporte (PDF).
Flujo típico
Una integración completa sigue cuatro pasos en secuencia:
- Simular — lanzas un job con el estímulo y el territorio; el servidor corre el modelo por manzanas en paralelo
- Consultar — haces polling a
GET /results/{job_id}hastastatus = "done" - Propagar — opcional: propaga los scores entre manzanas vecinas por rondas (modelo Friedkin-Johnsen)
- Exportar — genera un PDF con resumen ejecutivo y métricas de propagación
Autenticación
Todos los endpoints protegidos requieren el header X-API-Key con tu API key. Las keys tienen el formato vk-... y se generan desde tu panel o vía API.
# Todas las requests autenticadas llevan este header X-API-Key: vk-tu_api_key_aqui
Crear tu primera API Key
Las API keys se generan desde la aplicación, en la sección Ajustes. Necesitas una cuenta activa.
¿No tienes cuenta aún? Crear cuenta gratis →
Formato de la key
Todas las keys tienen el prefijo vk- seguido de 32 caracteres aleatorios. En el panel solo se muestra el prefijo corto (vk-AbCdEfG) — el secreto completo nunca vuelve a estar visible.
# Ejemplo de API key vk-AbCdEfGhIjKlMnOpQrStUvWxYz012345678formato
Simular territorio
Lanza una simulación sobre un conjunto de manzanas. El modelo corre en paralelo — el job se encola y puedes consultar el progreso con polling.
| Parámetro | Tipo | Descripción |
|---|---|---|
| estimulo | string | Texto del anuncio, campaña o estímulo a evaluar |
| campana | string | Nombre de la campaña (encabezado del estímulo) |
| comunas | string[] | Lista de comunas en mayúsculas. Ej: ["PROVIDENCIA", "NUNOA"] |
| region_codes | string[] | Códigos de región. Ej: ["13"] para RM |
| provider | string | openai (default) · heuristic (sin LLM, más rápido) |
| layer_preset | string | base · financiero · consumo · bienestar · seguridad · completo |
| max_manzanas | integer | Muestra máxima (10–500). Default: 50 |
curl https://api.valkoru.cl/simulate \ -H "X-API-Key: vk-..." \ -H "Content-Type: application/json" \ -d '{ "campana": "Tocó Crédito, Toca MACHBANK", "estimulo": "Crédito de consumo con abono inmediato, tasa desde 0,94%. 100% digital, sin filas.", "comunas": ["PROVIDENCIA", "NUNOA", "MAIPU"], "layer_preset": "financiero", "max_manzanas": 50 }'bash
{
"job_id": "uuid-del-job",
"total": 50,
"coverage_pct": 12.4
}
json
Consultar resultados
El job corre de forma asíncrona. Haz polling hasta que status sea "done" o "error". Tiempo típico: 15–60 segundos según el número de manzanas.
curl https://api.valkoru.cl/results/uuid-del-job \ -H "X-API-Key: vk-..."bash
{
"status": "done",
"total": 50,
"results": [
{
"objectid": 131422,
"manzent": "13101000100",
"comuna": "PROVIDENCIA",
"score": 74, // receptividad 0-100
"reaccion": "Los residentes ven el producto...",
"razones": ["Alta bancarización", "..."],
"dimensiones": {
"economica": 78,
"cultural": 65,
"politica": 60,
"emocional": 72
},
"confidence": 0.83, // calidad del estimado
"divergence": +12 // diferencia LLM vs prior censal
}
// ... 49 manzanas más
]
}
json
Propagar opinión entre territorios
Simula cómo los scores se difunden entre manzanas vecinas a lo largo de rondas — modelo Friedkin-Johnsen con personalidad territorial derivada de clustering censal. Devuelve un snapshot del mapa por cada ronda y métricas de dinámica.
| Parámetro | Tipo | Descripción |
|---|---|---|
| job_id | requerido | ID del job de simulación completado |
| iterations | integer | Rondas de propagación (1–30). Default: 10 |
| threshold | float | Radio de influencia en metros (50–5000). Default: 700 |
curl https://api.valkoru.cl/propagate \ -H "X-API-Key: vk-..." \ -H "Content-Type: application/json" \ -d '{"job_id": "uuid-del-job", "iterations": 10}'bash
{
"iterations": 10,
"steps": [
// paso 0 (inicial) — incluye comuna y arquetipo territorial
[{ "objectid": 131422, "score": 74, "delta": 0, "comuna": "PROVIDENCIA", "archetype": "Élite profesional" }, ...],
// pasos 1-10
[{ "objectid": 131422, "score": 72, "delta": -2 }, ...]
],
"metrics": {
"delta_promedio": -1.2,
"avg_abs_delta": 3.4,
"pct_movimiento_material": 38.0, // % con |Δ| ≥ 3
"punto_inflexion": 2, // ronda con mayor velocidad
"convergencia": true,
"velocidades_por_ronda": [2.1, 1.8, 0.4, ...],
"top_volatiles": [[131422, -8.2], ...],
"top_resistentes": [[131500, -0.1], ...]
}
}
json
Exportar reporte PDF
Genera un reporte ejecutivo en PDF con resumen por comunas, distribución de receptividad, resumen LLM y — si incluyes métricas de propagación — una sección de dinámica territorial.
application/pdf como binario.curl https://api.valkoru.cl/reporte \ -H "X-API-Key: vk-..." \ -H "Content-Type: application/json" \ -o reporte.pdf \ -d '{ "job_id": "uuid-del-job", "estimulo": "Crédito de consumo con abono inmediato...", "comuna": "PROVIDENCIA", "prop_metrics": { ... } }'bash
Consultar territorio disponible
curl "https://api.valkoru.cl/territory/estimate?comunas=PROVIDENCIA&comunas=NUNOA" \ -H "X-API-Key: vk-..."bash
{
"n_manzanas": 4821,
"n_comunas": 2,
"n_regiones": 1,
"project_required": false
}
json
Capas de datos disponibles
El parámetro layer_preset en /simulate controla qué datos adicionales ve el modelo al evaluar cada manzana.
| Preset | Capas incluidas | Mejor para |
|---|---|---|
| base | Censo + CASEN | Análisis general, demografía e ingreso |
| financiero | base + EFH | Fintech, crédito, bancarización, productos bancarios |
| consumo | base + EPF | Retail, alimentación, gasto discrecional |
| bienestar | base + EBS | Salud mental, satisfacción, estrés económico |
| seguridad | base + ENUSC | Delivery nocturno, seguros, movilidad urbana |
| completo | Todas las capas | Análisis profundo, mayor costo computacional |
Gestión de API Keys
Errores
| Código | Causa |
|---|---|
| 401 | API key inválida, revocada o ausente |
| 400 | Parámetros inválidos o territorio vacío |
| 403 | Límite de simulaciones gratuitas agotado, o alcance requiere proyecto |
| 404 | Job no encontrado o no pertenece a tu cuenta |
| 500 | Error interno — contactar soporte |
403 con código project_scope_required indican que el territorio seleccionado supera los límites del plan self-service. Escríbenos a contacto@valkoru.cl para definir alcance.