Referencia de la API v1 · solo lectura
Acceso programático a los reportes normalizados del terremoto de Venezuela del 24 de junio de 2026 —daños estructurales, puntos de acopio 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 crisisvenezuela.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 SismoAyuda 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:
https://crisisvenezuela.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://crisisvenezuela.org/api/v1/factsLa respuesta es un sobre con metadatos y un arreglo datos:
{
"meta": {
"cantidad": 1000,
"total": 1342,
"generado": "2026-06-27T18:00:00.000Z",
"licencia": "CC-BY-4.0",
"atribucion": "crisisvenezuela.org + fuentes originales",
"consulta": { "limite": 1000, "offset": 0, "formato": "json" }
},
"datos": [
{
"id": "cv-219c7ab54981438cbe05e2fb",
"categoria": "daño",
"nivel": "colapso_total",
"conflicto_nivel": false,
"estructura": "Edificio San Judas Tadeo",
"municipio": "Chacao",
"estado": "Miranda",
"zona": "El Rosal",
"lat": 10.497, "lon": -66.853,
"coord_origen": "explicita",
"descripcion": "Colapso total del edificio, hay personas atrapadas bajo los escombros.",
"tipo_necesidad": null,
"atrapados": true,
"n_fuentes": 3,
"fuentes": [
{ "fuente": "terremotovenezuela.com", "url": "https://terremotovenezuela.com/edificio/...", "post_id": "terremotove:...", "observado_en": "2026-06-26T14:02:00Z", "entity_support": "source_record", "media_entity_support": "source_record" },
{ "fuente": "elnacional.com", "url": "https://www.elnacional.com/...", "post_id": "rss:...", "observado_en": "2026-06-26T13:58:00Z", "entity_support": "explicit_name", "media_entity_support": "single_entity" }
],
"fecha": "2026-06-26T14:02:00Z",
"primera_vez": "2026-06-24T22:10: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:
| Campo | Tipo | Significado, valores y advertencias |
|---|---|---|
id | string | Identificador determinista con prefijo cv-, derivado de categoría, entidad y evidencia fuente; único dentro de la versión publicada. |
categoria | string | Una 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. |
nivel | string · null | Solo para daño: colapso_total, severo, parcial o dano (genérico). Se infiere del texto con reglas. null en acopio/necesidad. |
conflicto_nivel | boolean | true 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. |
estructura | string · null | Nombre 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. |
municipio | string | Municipio (nombre legible). Puede venir vacío en hechos sin municipio asignado. |
estado | string | Estado / entidad federal. Si el hecho no lo trae, se completa con el estado del municipio según el gazetteer. |
zona | string | Zona, sector o referencia local (barrio, urbanización, avenida). Texto libre; puede estar vacío. |
lat, lon | number · null | Coordenadas WGS84. null si el hecho no está geolocalizado. La precisión depende de coord_origen (ver §6). |
coord_origen | string | Procedencia de lat/lon: explicita (suministrada por la fuente; precisión no verificada), geocodificada (aproximada) o "" (desconocida/sin coords). Detalle en §6. |
descripcion | string | El hecho resumido en una frase, normalizado por IA a partir del o los posts originales. |
tipo_necesidad | string · null | Solo para necesidad: recurso solicitado — agua, comida, medicinas, insumos, voluntarios, sangre, rescate, refugio, ropa, otro. null en otras categorías. |
atrapados | boolean | true si el texto menciona personas atrapadas / bajo escombros. Indicio, no confirmación oficial — verifícalo antes de actuar. |
n_fuentes | integer | Nú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. |
fuentes | array | Procedencia 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. |
confianza | object | Modelo 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. |
fecha | string ISO 8601 | Última fecha entre las fuentes canónicas que respaldan la entidad. Un post cercano no relacionado no refresca el edificio. |
primera_vez | string ISO 8601 | Primera 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:
- Agregación de fuentes públicas. Leemos prensa, redes sociales y plataformas ciudadanas (p. ej. terremotovenezuela.com, acopiove, RedQuipu y reportes ciudadanos). Cada ítem conserva su URL de origen.
- 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.
- 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). - 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.
5 · Fuentes (de dónde vienen los datos)
El conjunto agrega fuentes públicas de tres tipos —redes sociales y fediverso, prensa, y catálogos estructurados del ecosistema— 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 de fuente con min_fuentes. Ese filtro mide volumen de apoyo, no independencia confirmada. Los conteos de abajo son aproximados, cambian con cada exportación, se solapan y no suman el total.
| Tipo de fuente | Fuente | Registros | Detalle |
|---|---|---|---|
| Redes sociales / Fediverso (~7.900) | X / Twitter (x.com) | ~6.900 | La corriente más grande; búsquedas periódicas más cuentas curadas. |
Instagram (instagram.com) | ~200 | Cuentas y reels. | |
| Mastodon / Fediverso | ~600 | Repartido entre mastodon.social, mstdn.social, mastodon.world, masto.ai, mas.to, vzla.masto.host y otras instancias; incluye fed.brid.gy, que puentea publicaciones de Bluesky. | |
| Prensa / noticias (~3.650) | Google News RSS (news.google.com) | ~3.600 | A su vez agrega medios como Reuters, AP, BBC, El Nacional, La Patilla, Efecto Cocuyo, etc. |
| GDELT | — | Monitoreo global de noticias. | |
| Otros medios sueltos | — | Cabeceras individuales fuera de los agregadores. | |
| Catálogos estructurados (plataformas aliadas) | terremotovenezuela.app | ~814 | Edificios y estructuras con daños. |
acopiove.org | — | Catálogo de centros de acopio y refugios (Venezuela y diáspora). A su vez agrega sub-fuentes que acreditamos por nombre: acopiovzla.com, RefugioVE, @JulietaOsorior, Venezuela Conecta, La Mega, ayudavenezuela.help, entre otras. | |
RedQuipu (redquipu.com) | — | Red de iniciativas. | |
Reporta Venezuela (zonasafectadasvenezuela.app) | — | Zonas afectadas, refugios y acopios. |
fuentes de cada hecho.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.
terremotovenezuela.comoacopiove) 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/lonennull).
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://crisisvenezuela.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ámetro | Tipo | Valores / descripción | Ejemplo |
|---|---|---|---|
categoria | lista | Siete valores: daño, acopio, necesidad, información, evaluación_pendiente, evaluación_habitable, evaluación_inconsistente. | ?categoria=acopio,necesidad |
estado | lista | Estado/entidad federal. Sin distinción de mayúsculas; coincidencia exacta. | ?estado=Miranda |
municipio | lista | Municipio. Sin distinción de mayúsculas; coincidencia exacta. | ?municipio=Chacao |
nivel | lista | Solo daño: colapso_total · severo · parcial · dano. | ?nivel=colapso_total,severo |
tipo_necesidad | lista | Solo necesidad: agua, comida, medicinas, insumos, voluntarios, sangre, rescate, refugio, ropa, otro. | ?tipo_necesidad=agua,medicinas |
coord_origen | lista | explicita (suministradas por la fuente; precisión no verificada) · geocodificada (aproximadas). Ver §6. | ?coord_origen=explicita |
fuente | lista | Conserva solo registros con al menos una fuente coincidente. Coincide por nombre y por subcadena del dominio (p. ej. terremotovenezuela.com). | ?fuente=elnacional.com |
excluir_fuente | lista | Anti-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=terremotovenezuela.com |
bbox | 4 números | Caja geográfica minLon,minLat,maxLon,maxLat. Solo registros con coordenadas dentro. Inválido → 400. | ?bbox=-67.5,10.0,-66.5,10.7 |
desde | ISO 8601 | Solo registros con fecha ≥ este instante. Inválido → 400. Ideal para sondeo incremental. | ?desde=2026-06-25T00:00:00Z |
min_fuentes | entero | Número mínimo de registros de fuente distintos (n_fuentes). Filtra por volumen de apoyo; no demuestra independencia de origen. | ?min_fuentes=2 |
limite | entero | Máximo de registros. Por defecto 1000; tope 5000 (se recorta). | ?limite=100 |
offset | entero | Registros a saltar (paginación). Por defecto 0. | ?limite=100&offset=100 |
formato | texto | json (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 terremotovenezuela.com: dame todo MENOS lo que solo provengo yo"
curl "https://crisisvenezuela.org/api/v1/facts?excluir_fuente=terremotovenezuela.com"Más ejemplos
filtros Acopios en el Distrito Capital, máximo 50:
curl "https://crisisvenezuela.org/api/v1/facts?categoria=acopio&estado=Distrito%20Capital&limite=50"necesidades Solicitudes de agua o medicinas respaldadas por ≥2 registros de fuente, desde una fecha:
curl "https://crisisvenezuela.org/api/v1/facts?categoria=necesidad&tipo_necesidad=agua,medicinas&min_fuentes=2&desde=2026-06-25T00:00:00Z"8 · Formatos de salida
Elige con formato:
- json (por defecto)
- Sobre
{ "meta": {…}, "datos": [ Hecho, … ] }.metaincluyecantidad(en esta página),total(tras filtros, antes de paginar),generado,licencia,atribucionyconsulta(eco de los parámetros aplicados). Content-Type:application/json. - geojson
FeatureCollection(RFC 7946) con solo los registros geolocalizados. Cada feature tienegeometry.coordinates = [lon, lat]y el hecho completo (sinlat/lon) enproperties.metava 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
fuentescon el formatonombre(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://crisisvenezuela.org/api/v1/facts?formato=geojson&bbox=-67.5,10.0,-66.5,10.7"
# CSV de daños desde una fecha (da%C3%B1o = "daño" codificado para URL)
curl "https://crisisvenezuela.org/api/v1/facts?categoria=da%C3%B1o&desde=2026-06-25T00: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 conexcluir_fuentepara filtrarlo del lado del servidor. - Dar crédito. Al reutilizar, cita la fuente original cuando corresponda, además de crisisvenezuela.org.
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.
limitetope 5000 por petición; usaoffsetpara recorrer, odesdepara 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:
- /facts.json — el conjunto completo (los mismos registros que esta API).
- /colapsos.json · /colapsos.csv — solo estructuras colapsadas/dañadas con nombre.
- Solo lectura. La API únicamente sirve
GET(yOPTIONSpara CORS). Otros métodos devuelven405.
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;v1seguiría disponible durante una transición. - Contrato legible por máquina: /api/v1/openapi.json (OpenAPI 3.1) — genera clientes o valida contra él.