Saltar al contenido

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_KEY

Consultar 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.

Abrir la spec OpenAPI 3.1 en JSON