Crisis·Colombia

Referencia de la API v1 · solo lectura

Acceso programático a reportes normalizados tras el terremoto M7.4 del 10 de agosto de 2026 en Colombia —daños estructurales, puntos de ayuda y necesidades— cada uno con su procedencia. Pública, sin autenticación, libre para usar y citar bajo CC-BY-4.0.

1 · Resumen

Esta API expone, de forma programática y de solo lectura, el conjunto de datos de crisiscolombia.org. Hay siete categorías; solo las tres primeras se renderizan como marcadores:

  • daño — un reporte de daño o colapso estructural (un edificio, una estructura).
  • acopio — un punto o centro de recolección de ayuda.
  • necesidad — una solicitud de un recurso (agua, medicinas, rescate…).
  • información — contexto general relevante, nunca daño rojo.
  • evaluación_pendiente — evaluación declarada por una fuente y aún no completada.
  • evaluación_habitable — la fuente reporta ocupación sin restricciones; puede coexistir con daño leve o moderado y no es una verificación independiente.
  • evaluación_inconsistente — campos fuente contradictorios, en revisión.

Fuera de alcance: conteos de fallecidos/heridos, listas de víctimas y búsquedas de personas desaparecidas. Se conservan únicamente referencias a personas afectadas cuando forman parte de un punto accionable de ayuda, necesidad o rescate.

¿Para quién? Periodistas, ONG, desarrolladores de mapas/dashboards, y —especialmente— los equipos de los propios sitios que originan los datos, que pueden consumir la API sin reingestar su propia información gracias a la procedencia por registro (ver excluir_fuente).

URL base:

GET https://crisiscolombia.org/api/v1/facts

Sin autenticación · CORS abierto (Access-Control-Allow-Origin: *) · respuestas cacheadas en CDN · especificación legible por máquina en /api/v1/openapi.json (OpenAPI 3.1). Licencia de los datos: CC-BY-4.0.

Los nombres de parámetros y de campos están en español; se mantienen en inglés solo los términos técnicos universales: bbox, offset y los valores de formato (json | geojson | csv).

2 · Inicio rápido

Una sola petición que devuelve datos de inmediato (los 1000 hechos más recientes, JSON):

curl https://crisiscolombia.org/api/v1/facts

La respuesta es un sobre con metadatos y un arreglo datos:

{
  "meta": {
    "cantidad": 1000,
    "total": 1342,
    "generado": "2026-08-10T18:00:00.000Z",
    "licencia": "CC-BY-4.0",
    "atribucion": "crisiscolombia.org + fuentes originales",
    "consulta": { "limite": 1000, "offset": 0, "formato": "json" }
  },
  "datos": [
    {
      "id": "cv-219c7ab54981438cbe05e2fb",
      "categoria": "daño",
      "nivel": "colapso_total",
      "conflicto_nivel": false,
      "estructura": "Catedral Basílica de Manizales",
      "municipio": "Manizales",
      "estado": "Caldas",
      "zona": "Centro histórico",
      "lat": 5.0703, "lon": -75.5138,
      "coord_origen": "geocodificada",
      "descripcion": "Colapso parcial reportado de una torre de la Catedral Basílica de Manizales.",
      "tipo_necesidad": null,
      "atrapados": false,
      "n_fuentes": 2,
      "fuentes": [
        { "fuente": "medio colombiano", "url": "https://www.eltiempo.com/...", "post_id": "rss:...", "observado_en": "2026-08-10T14:02:00Z", "entity_support": "explicit_name", "media_entity_support": "single_entity" },
        { "fuente": "cuenta oficial", "url": "https://x.com/.../status/...", "post_id": "x:...", "observado_en": "2026-08-10T13:58:00Z", "entity_support": "explicit_name", "media_entity_support": "single_entity" }
      ],
      "fecha": "2026-08-10T14:02:00Z",
      "primera_vez": "2026-08-10T13:58:00Z"
    }
  ]
}

3 · Modelo de datos

Cada elemento de datos (y cada properties en GeoJSON, y cada fila en CSV) es un hecho con estos campos:

CampoTipoSignificado, valores y advertencias
idstringIdentificador determinista con prefijo cv-, derivado de categoría, entidad y evidencia fuente; único dentro de la versión publicada.
categoriastringUna de siete categorías. información, evaluación_pendiente, evaluación_habitable y evaluación_inconsistente son neutrales y no se renderizan como daño.
nivelstring · nullSolo para daño: colapso_total, severo, parcial o dano (genérico). Se infiere del texto con reglas. null en acopio/necesidad.
conflicto_nivelbooleantrue cuando la evidencia agrupada contiene niveles de daño incompatibles. En ese caso nivel="dano" y descripcion muestra un aviso neutral hasta revisión humana.
estructurastring · nullNombre específico del edificio/estructura cuando se identificó (p. ej. Edificio San Judas Tadeo). null si el reporte es a nivel de zona y no nombra una estructura.
municipiostringMunicipio (nombre legible). Puede venir vacío en hechos sin municipio asignado.
estadostringDepartamento colombiano. Se conserva el nombre de campo legado estado; si el hecho no lo trae, se completa con el departamento del municipio según el gazetteer.
zonastringZona, sector o referencia local (barrio, urbanización, avenida). Texto libre; puede estar vacío.
lat, lonnumber · nullCoordenadas WGS84. null si el hecho no está geolocalizado. La precisión depende de coord_origen (ver §6).
coord_origenstringProcedencia de lat/lon: explicita (suministrada por la fuente; precisión no verificada), geocodificada (aproximada) o "" (desconocida/sin coords). Detalle en §6.
descripcionstringEl hecho resumido en una frase, normalizado por IA a partir del o los posts originales.
tipo_necesidadstring · nullSolo para necesidad: recurso solicitado — agua, comida, medicinas, insumos, voluntarios, sangre, rescate, refugio, ropa, otro. null en otras categorías.
atrapadosbooleantrue si el texto menciona personas atrapadas / bajo escombros. Indicio, no confirmación oficial — verifícalo antes de actuar.
n_fuentesintegerNúmero de registros de fuente distintos que respaldan el hecho (deduplicados por URL; si no hay URL, por autor). Un valor mayor significa más registros de apoyo, no necesariamente orígenes independientes. Igual a la longitud de fuentes.
fuentesarrayProcedencia canónica con post_id, observado_en, entity_support y media_entity_support. Una foto solo aparece cuando su fuente respalda sin ambigüedad la entidad mostrada.
confianzaobjectModelo de confianza fail-closed: 3 ejes + insignia Verificado / Reportado / Sin verificar. distinct_named_sources cuenta nombres canónicos; independent_origins solo cuenta linajes origin_id explícitos; checks.status indica si se completó la revisión de procedencia / fuente / fecha / ubicación. Sin linaje y verificaciones completadas, el registro no es Verificado. Metodología: /docs/trust.
fechastring ISO 8601Última fecha entre las fuentes canónicas que respaldan la entidad. Un post cercano no relacionado no refresca el edificio.
primera_vezstring ISO 8601Primera vez que se detectó el hecho.

4 · Cómo se construyen los datos

Transparencia sobre la naturaleza y los límites del dato. El pipeline tiene cuatro etapas:

  1. Agregación de fuentes públicas. Leemos noticias, publicaciones de X y canales oficiales. Cada ítem conserva su URL de origen.
  2. Triaje fail-closed. Cada registro requiere un veredicto exitoso. Un fallo o respuesta parcial bloquea la publicación; información general y evaluaciones neutrales conservan categorías separadas.
  3. Geolocalización. Si el reporte trae coordenadas (o la fuente las publica en su catálogo) se usan directamente (coord_origen=explicita). Si no, la IA extrae un nombre de lugar y un geocodificador OSM / Nominatim lo resuelve a un punto (coord_origen=geocodificada, aproximado).
  4. Entidad y procedencia. Solo se fusionan estructuras nombradas de forma compatible. Fechas y fotos provienen exclusivamente de las fuentes que respaldan esa entidad; medios multi-entidad ambiguos se omiten.
Naturaleza del dato. Es inteligencia de fuentes abiertas, no una evaluación oficial. Antes de cada publicación, una auditoría bloqueante verifica alcance, taxonomía, geografía, fechas, fotos, traducciones, IDs y concordancia entre volcados. No reemplaza a las autoridades.

5 · Fuentes (de dónde vienen los datos)

El conjunto agrega fuentes públicas de tres tipos —X, noticias y canales oficiales— y agrupa reportes que parecen describir el mismo hecho. Esta es la vista general: cada registro lleva su procedencia exacta en fuentes. Agrupar nombres o publicaciones no presume que sus orígenes sean independientes.

Puedes filtrar por fuente con fuente y excluir_fuente, y exigir varios registros con min_fuentes. Ese filtro mide volumen de apoyo, no independencia confirmada. El desglose exacto cambia con cada exportación.

Tipo de fuenteFuenteRegistrosDetalle
Redes socialesX (x.com)Búsquedas periódicas y cuentas públicas relevantes para el evento.
Prensa / noticiasGoogle News RSS y medios directosNoticias de medios colombianos e internacionales con enlace al artículo original.
Canales oficialesOrganismos científicos y de gestión del riesgoComunicados y datos públicos de autoridades y organismos científicos.
Gracias a quienes documentan la emergencia. Este proyecto agrega, agrupa y cita; no reemplaza ni realoja. El desglose actual, registro por registro, está en el panel «Fuentes» de crisiscolombia.org y en el campo fuentes de cada hecho. No se presume ninguna alianza con las fuentes citadas.

6 · Procedencia de coordenadas (coord_origen)

No todas las coordenadas son iguales. El campo coord_origen te dice de dónde salieron lat/lon, para que sepas cuánto confiar en su precisión y puedas filtrar:

explicita
Las coordenadas vinieron con el dato: del catálogo de la fuente original (p. ej. eltiempo.com o sgc.gov.co) o indicadas explícitamente en el post. Su precisión no está verificada de forma independiente; una fuente puede publicar un punto aproximado o de relleno.
geocodificada
No venían con el dato: el pipeline las derivó. La IA extrajo un nombre de lugar (barrio, urbanización, municipio) y un geocodificador OSM / Nominatim lo resolvió a un punto. Son aproximadas: pueden caer en el centroide del área o estar desplazadas algunos cientos de metros. Corregimos manualmente los errores conocidos cuando los detectamos.
"" (vacío)
Sin procedencia conocida o sin coordenadas (lat/lon en null).
Recomendación. Usa coord_origen para distinguir puntos suministrados por la fuente de puntos geocodificados, pero valida cualquiera de los dos antes de uso operativo o despacho de ayuda. Ningún valor garantiza una dirección exacta.
# Solo hechos con coordenadas suministradas por la fuente, en GeoJSON
curl "https://crisiscolombia.org/api/v1/facts?coord_origen=explicita&formato=geojson"

7 · Filtros

Todos los parámetros son opcionales y combinables (se aplican en conjunto, tipo AND). Las listas van separadas por comas. Un valor inválido en categoria, bbox, desde, formato o en los enteros devuelve 400 con {"error": "…"}; los parámetros desconocidos se ignoran. Recuerda codificar la URL (espacios → %20, ñ%C3%B1).

ParámetroTipoValores / descripciónEjemplo
categorialistaSiete valores: daño, acopio, necesidad, información, evaluación_pendiente, evaluación_habitable, evaluación_inconsistente.?categoria=acopio,necesidad
estadolistaDepartamento colombiano (campo legado: estado). Sin distinción de mayúsculas; coincidencia exacta.?estado=Chocó
municipiolistaMunicipio. Sin distinción de mayúsculas; coincidencia exacta.?municipio=San%20José%20del%20Palmar
nivellistaSolo daño: colapso_total · severo · parcial · dano.?nivel=colapso_total,severo
tipo_necesidadlistaSolo necesidad: agua, comida, medicinas, insumos, voluntarios, sangre, rescate, refugio, ropa, otro.?tipo_necesidad=agua,medicinas
coord_origenlistaexplicita (suministradas por la fuente; precisión no verificada) · geocodificada (aproximadas). Ver §6.?coord_origen=explicita
fuentelistaConserva solo registros con al menos una fuente coincidente. Coincide por nombre y por subcadena del dominio (p. ej. eltiempo.com).?fuente=eltiempo.com
excluir_fuentelistaAnti-circular. Descarta registros cuyas fuentes estén todas en la lista; el registro sigue apareciendo si además tiene otra fuente. Ver nota abajo.?excluir_fuente=eltiempo.com
bbox4 númerosCaja geográfica minLon,minLat,maxLon,maxLat. Solo registros con coordenadas dentro. Inválido → 400.?bbox=-77.5,4.0,-75.0,6.5
desdeISO 8601Solo registros con fecha ≥ este instante. Inválido → 400. Ideal para sondeo incremental.?desde=2026-08-10T00:00:00Z
min_fuentesenteroNúmero mínimo de registros de fuente distintos (n_fuentes). Filtra por volumen de apoyo; no demuestra independencia de origen.?min_fuentes=2
limiteenteroMáximo de registros. Por defecto 1000; tope 5000 (se recorta).?limite=100
offsetenteroRegistros a saltar (paginación). Por defecto 0.?limite=100&offset=100
formatotextojson (por defecto) · geojson · csv. Ver §8.?formato=geojson

anti-circular excluir_fuente en detalle

Si mantienes uno de los sitios fuente, excluye tus propios datos para no reingestar lo tuyo y evitar bucles de retroalimentación. La regla es deliberada: un hecho solo se descarta si todas sus fuentes están en la lista de exclusión; si otra fuente no excluida también lo reporta, el hecho permanece y conserva esa procedencia externa.

# "Soy eltiempo.com: dame todo MENOS lo que solo provengo yo"
curl "https://crisiscolombia.org/api/v1/facts?excluir_fuente=eltiempo.com"

Más ejemplos

filtros Acopios en Chocó, máximo 50:

curl "https://crisiscolombia.org/api/v1/facts?categoria=acopio&estado=Choc%C3%B3&limite=50"

necesidades Solicitudes de agua o medicinas respaldadas por ≥2 registros de fuente, desde una fecha:

curl "https://crisiscolombia.org/api/v1/facts?categoria=necesidad&tipo_necesidad=agua,medicinas&min_fuentes=2&desde=2026-08-10T00:00:00Z"

8 · Formatos de salida

Elige con formato:

json (por defecto)
Sobre { "meta": {…}, "datos": [ Hecho, … ] }. meta incluye cantidad (en esta página), total (tras filtros, antes de paginar), generado, licencia, atribucion y consulta (eco de los parámetros aplicados). Content-Type: application/json.
geojson
FeatureCollection (RFC 7946) con solo los registros geolocalizados. Cada feature tiene geometry.coordinates = [lon, lat] y el hecho completo (sin lat/lon) en properties. meta va como miembro extranjero informativo. Content-Type: application/geo+json. Ideal para Leaflet, Mapbox, QGIS, etc.
csv
Tabla con cabecera; una fila por hecho. Las fuentes se aplanan a una columna fuentes con el formato nombre(url);nombre(url). Incluye BOM UTF-8 para abrir limpio en Excel. Content-Type: text/csv.
# GeoJSON de una zona, listo para pintar en un mapa
curl "https://crisiscolombia.org/api/v1/facts?formato=geojson&bbox=-77.5,4.0,-75.0,6.5"

# CSV de daños desde una fecha (da%C3%B1o = "daño" codificado para URL)
curl "https://crisiscolombia.org/api/v1/facts?categoria=da%C3%B1o&desde=2026-08-10T00:00:00Z&formato=csv"

9 · Procedencia y atribución

Cada hecho conserva en fuentes[] todas sus fuentes distintas (nombre + URL). Esto cumple dos funciones:

  • Deduplicar contra tus datos. Antes de ingerir un hecho, revisa sus fuentes / url: si ya lo tienes (o es tuyo), omítelo. Combínalo con excluir_fuente para filtrarlo del lado del servidor.
  • Dar crédito. Al reutilizar, cita la fuente original cuando corresponda, además de crisiscolombia.org.
Cómo citar. Datos bajo CC-BY-4.0. Atribución: «crisiscolombia.org + las fuentes originales». No reemplaza a las autoridades oficiales.

10 · Límites y uso justo

  • Caché. Cada respuesta trae Cache-Control: public, max-age=60, s-maxage=120; el CDN absorbe consultas repetidas. Las exportaciones se regeneran periódicamente y cada respuesta indica su hora de generación.
  • Paginación. limite tope 5000 por petición; usa offset para recorrer, o desde para traer solo lo nuevo.
  • Descargas masivas → usa los volcados estáticos. No martilles el endpoint de consulta. Para el conjunto completo o cargas frecuentes, sirve el CDN directamente:
  • Solo lectura. La API únicamente sirve GET (y OPTIONS para CORS). Otros métodos devuelven 405.

11 · Versionado

La ruta lleva la versión mayor: /api/v1/…. Política de estabilidad de v1:

  • Cambios aditivos no rompen. Podemos agregar campos nuevos a los registros o nuevos parámetros opcionales sin cambiar de versión; tu cliente debe ignorar lo que no conozca.
  • Cambios incompatibles → nueva versión. Renombrar/eliminar campos o cambiar el significado de uno existente se publicaría como /api/v2; v1 seguiría disponible durante una transición.
  • Contrato legible por máquina: /api/v1/openapi.json (OpenAPI 3.1) — genera clientes o valida contra él.