Volver

API pública de SÍCOPIO! (v1)

Datos de solo lectura, sin autenticación obligatoria, de TODO lo que ya es público en la plataforma: estado, necesidades completas (no solo las urgentes), voluntariado con detalle, horario, contacto, dirección. La idea es que no tengas que visitar sicopio.org para mostrar la información, esta API ya te la entrega completa. Puedes usar solo los campos que te sirvan, no estás obligado a consumir ni mostrar toda la respuesta.

Nota sobre las URLs de ejemplo de esta página: https://www.sicopio.com es la dirección real del entorno donde estás viendo esto ahora mismo (en desarrollo local, eso es http://localhost:3000; en producción sería el dominio real). No es un error ni un valor de relleno, cambia solo según dónde la estés consultando.

La URL incluye /terremotos/: SÍCOPIO! está preparado para cubrir más de un tipo de emergencia a futuro, cada uno con su propio espacio de rutas y de API, para que activar uno nuevo no afecte a quien ya consume este.

Atribución obligatoria

Los datos provienen de información reportada directamente por los centros de acopio a través de SÍCOPIO!. SÍCOPIO! no garantiza la exactitud, vigencia o disponibilidad continua de esta información. Todo consumidor de esta API debe mostrar de forma visible que la información proviene de SÍCOPIO! (así, con el nombre exacto de la marca, no una paráfrasis genérica) y enlazar de vuelta a https://www.sicopio.com. Cada respuesta la incluye en meta.atribucion.

Listar centros

GET https://www.sicopio.com/api/v1/terremotos/centros

Parámetros opcionales: departamento, estado (OPEN/CLOSED/TEMPORARILY_CLOSED), voluntarios=1, inactivos=1, limit (máx. 100).

curl "https://www.sicopio.com/api/v1/terremotos/centros?departamento=Cundinamarca&voluntarios=1"
const res = await fetch("https://www.sicopio.com/api/v1/terremotos/centros?departamento=Cundinamarca");
const { centros } = await res.json();
// usa solo los campos que necesites, ej. centros.map(c => c.name)

Detalle de un centro

GET https://www.sicopio.com/api/v1/terremotos/centros/[slug]
curl "https://www.sicopio.com/api/v1/terremotos/centros/centro-demo-coordinador"

Campos disponibles por centro

Todo lo que ya es público en la página del centro, con el detalle completo, nada administrativo ni datos de coordinadores.

CampoQué es
slugIdentificador único del centro en la URL, ej. "centro-demo-coordinador".
nameNombre del centro.
descriptionDescripción libre que escribió el centro. Puede venir null.
addressDirección física. Puede venir null si el centro todavía no la registró.
cityCiudad.
municipalityMunicipio, solo si es distinto de la ciudad. Puede venir null.
departmentDepartamento.
countryPaís. Por ahora siempre "Colombia" (alcance actual de la plataforma).
latitude, longitudeCoordenadas geográficas, para ubicar el centro en tu propio mapa.
status"OPEN" (recibiendo ahora), "CLOSED" (cerrado) o "TEMPORARILY_CLOSED" (cerrado temporalmente).
temporaryCloseReasonNota de texto libre sobre el cierre temporal. Puede venir null.
reopensAtFecha (ISO 8601) de cuándo reabre, si el centro la puso. Puede venir null.
trustLevel"REPORTED", "INCORPORATED", "VERIFIED" o "INSTITUTIONAL": nivel de confianza dentro de la red.
publicPhone, instagramUrl, facebookUrl, websiteUrlContacto público opcional del centro. Cada uno puede venir null.
scheduleHorario semanal: lista de { day, opensAt, closesAt } en formato "HH:mm". Vacía si el centro no lo configuró.
volunteersEnabledSi el centro está recibiendo voluntarios en este momento.
volunteerNeedsNecesidades de voluntariado activas: lista de { category, categoryLabel, customName, quantity }. quantity puede venir null (es opcional para el centro).
acceptingDonationsSi el centro está recibiendo donaciones en este momento. Es independiente de status y de volunteersEnabled.
needsTODAS las necesidades de producto del centro: lista de { name, status, quantity, unit }, con status "NEEDED", "URGENT" o "NOT_ACCEPTED". quantity y unit pueden venir null (son opcionales para el centro), ej. 200 + "litros".
packagesKits/paquetes activos agrupados (ej. "Kit de aseo"): lista de { name, items }, donde items tiene la misma forma que needs ({ name, status, quantity, unit }). Un producto que forma parte de un kit no aparece duplicado fuera de su grupo.
urgentNeedsSolo los nombres de las necesidades con status=URGENT (subconjunto de needs). Se mantiene por compatibilidad con integraciones ya existentes.
communitySignalSeñal comunitaria independiente del estado oficial: { type, triggeredAt } cuando 5+ personas distintas reportaron algo (ej. que el centro parece cerrado) sin que el centro lo haya confirmado ni desmentido en 90 minutos. null si no hay ninguna activa.
updatedAt, updatedLabelÚltima actualización del centro: fecha ISO 8601 y texto legible en español (ej. "hace 2 h").
staletrue si el centro lleva un buen tiempo sin actualizar información (revisa directamente antes de confiar del todo).
urlEnlace a la página pública completa del centro dentro de SÍCOPIO!.

Llave de API (opcional)

Sin llave: 60 solicitudes/minuto para listar, 120/minuto para el detalle de un centro, medido por IP. Con una llave (pídela escribiendo a soporte), el límite sube a 300/minuto por llave en vez de por IP. Útil si varios usuarios de tu sitio comparten la misma IP de salida.

curl -H "X-API-Key: TU_LLAVE" "https://www.sicopio.com/api/v1/terremotos/centros"

Versionado y cambios

Widget embebible

Cada centro tiene un widget listo para insertar por <iframe>, con el mismo lenguaje visual de la plataforma (estado, semáforo de voluntarios, necesidades urgentes). El código exacto está disponible en el panel de cada coordinador, en "Perfil público, Widget para tu sitio". También acepta ?theme=light o ?theme=dark en la URL para forzar el tema.

<iframe src="https://www.sicopio.com/terremotos/widget/[slug]" width="320" height="180" style="border:0;border-radius:16px" loading="lazy" title="Estado en SÍCOPIO!"></iframe>

Esta API expone únicamente información que ya es pública en SÍCOPIO! (la misma que ves en la página de cada centro, ahora con el detalle completo). No incluye datos de coordinadores ni nada administrativo. Sujeta al límite de uso razonable descrito arriba.