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/centrosPará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.
| Campo | Qué es |
|---|---|
| slug | Identificador único del centro en la URL, ej. "centro-demo-coordinador". |
| name | Nombre del centro. |
| description | Descripción libre que escribió el centro. Puede venir null. |
| address | Dirección física. Puede venir null si el centro todavía no la registró. |
| city | Ciudad. |
| municipality | Municipio, solo si es distinto de la ciudad. Puede venir null. |
| department | Departamento. |
| country | País. Por ahora siempre "Colombia" (alcance actual de la plataforma). |
| latitude, longitude | Coordenadas geográficas, para ubicar el centro en tu propio mapa. |
| status | "OPEN" (recibiendo ahora), "CLOSED" (cerrado) o "TEMPORARILY_CLOSED" (cerrado temporalmente). |
| temporaryCloseReason | Nota de texto libre sobre el cierre temporal. Puede venir null. |
| reopensAt | Fecha (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, websiteUrl | Contacto público opcional del centro. Cada uno puede venir null. |
| schedule | Horario semanal: lista de { day, opensAt, closesAt } en formato "HH:mm". Vacía si el centro no lo configuró. |
| volunteersEnabled | Si el centro está recibiendo voluntarios en este momento. |
| volunteerNeeds | Necesidades de voluntariado activas: lista de { category, categoryLabel, customName, quantity }. quantity puede venir null (es opcional para el centro). |
| acceptingDonations | Si el centro está recibiendo donaciones en este momento. Es independiente de status y de volunteersEnabled. |
| needs | TODAS 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". |
| packages | Kits/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. |
| urgentNeeds | Solo los nombres de las necesidades con status=URGENT (subconjunto de needs). Se mantiene por compatibilidad con integraciones ya existentes. |
| communitySignal | Señ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"). |
| stale | true si el centro lleva un buen tiempo sin actualizar información (revisa directamente antes de confiar del todo). |
| url | Enlace 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
- La URL siempre lleva versión (
/api/v1/...) desde el día uno. - Agregar campos nuevos a una respuesta se considera un cambio seguro, no rompe integraciones existentes.
- Renombrar o quitar un campo, o cambiar su tipo, requiere una nueva versión (
/api/v2/...); nunca se hace env1directamente. - Si
v1llegara a deprecarse, se avisa con anticipación en esta página antes de apagarla.
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.