API de Vigencia
Integra fuentes legales verificadas.
Consulta citas legales chilenas verificadas contra BCN desde tu SaaS. Recibe avisos cuando cambia una norma que sigues.
Autenticación
Envía tu API key en uno de estos headers. Usa solo uno.
Authorization: Bearer TU_API_KEY
X-Api-Key: TU_API_KEYConsultar una norma
Envía la pregunta como JSON y procesa la respuesta de la API.
curl -X POST https://darksalmon-kangaroo-899367.hostingersite.com/api/v1/consulta \
-H 'Authorization: Bearer TU_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"pregunta":"Artículo 1 de la Constitución Política de la República"}'Recibir avisos de cambios
Registra una URL HTTPS pública. Guarda el secreto de la respuesta: solo se entrega al crear la suscripción.
curl -X POST https://darksalmon-kangaroo-899367.hostingersite.com/api/v1/suscripciones \
-H 'X-Api-Key: TU_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"idNorma":3513,"url":"https://tu-dominio.cl/webhooks/vigencia"}'Consultar versiones
Lista las versiones disponibles y compara dos fechas de versión.
curl 'https://darksalmon-kangaroo-899367.hostingersite.com/api/v1/normas/3513/versiones' \
-H 'Authorization: Bearer TU_API_KEY'
curl 'https://darksalmon-kangaroo-899367.hostingersite.com/api/v1/normas/3513/diff?desde=1986-04-08&hasta=2026-10-17' \
-H 'Authorization: Bearer TU_API_KEY'Límites del plan piloto
- Por minuto
- 60 solicitudes
- Por mes
- 20.000 solicitudes
Las respuestas autenticadas incluyen headers de cuota. Si recibes 429, espera los segundos indicados por `Retry-After`.
Verificar la firma del webhook
La firma es HMAC-SHA-256 del cuerpo HTTP exacto en bytes UTF-8. Verifícala antes de procesar el evento y compara con tiempo constante.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verificarWebhook(rawBody, firmaHeader, secreto) {
const esperado = createHmac("sha256", secreto).update(rawBody).digest();
const valor = firmaHeader?.match(/^sha256=([a-f0-9]{64})$/i)?.[1];
if (!valor) return false;
const recibido = Buffer.from(valor, "hex");
return recibido.length === esperado.length && timingSafeEqual(recibido, esperado);
}Usa el buffer original del request, antes de parsear o volver a serializar el JSON.
Contrato completo
La spec documenta las rutas, parámetros, cuerpos, autenticación y respuestas conocidas.