Modelo de acceso
- Beta publica
- Por ahora no requiere API key
- Pensada para integraciones de solo lectura y herramientas ligeras
- Objetivo actual: 100 solicitudes por IP y por dia
La API de SunriseTime sirve para descubrir slugs de ciudad y luego pedir datos de sol, luna y oracion en una sola respuesta estructurada. El catalogo actual cubre 500 ciudades indexadas.
Primero resuelve el slug de la ciudad y despues pide los tiempos con ese slug.
curl "https://sunrisetime.co/api/v1/cities?query=madrid&limit=3" curl "https://sunrisetime.co/api/v1/times?city=madrid&date=2026-03-29" Estas tres rutas cubren la mayoria de integraciones externas.
Mantener el flujo simple ayuda: primero slug, luego una ciudad por solicitud.
/api/v1/cities| Parametro | Obligatorio | Notas |
|---|---|---|
query | No | Ciudad, slug, pais o region administrativa. Vacio devuelve ciudades populares. |
limit | No | Por defecto 10, maximo 25. |
/api/v1/times| Parametro | Obligatorio | Notas |
|---|---|---|
city | Si | Slug estable como madrid, istanbul o london. |
date | No | Fecha local opcional en formato YYYY-MM-DD. |
El JSON esta agrupado por caso de uso para que sea mas facil integrarlo.
{
"meta": {
"version": "v1",
"endpoint": "/api/v1/times",
"cacheTtlSeconds": 900
},
"city": {
"slug": "madrid",
"name": "Madrid",
"timezone": "Europe/Madrid"
},
"sun": {
"sunrise": "7:48 AM",
"sunset": "8:22 PM"
},
"moon": {
"phase": "Waxing Crescent",
"illumination": 12
},
"prayerTimes": {
"fajr": "5:58 AM",
"maghrib": "8:23 PM"
}
} Ahora mismo funciona mejor desde terminal o servidor. El acceso desde navegadores de terceros debe esperar a un control CORS mas amplio.
curl "https://sunrisetime.co/api/v1/times?city=madrid&date=2026-03-29" const cityLookup = await fetch("https://sunrisetime.co/api/v1/cities?query=madrid&limit=1");
const cityResult = await cityLookup.json();
const citySlug = cityResult.cities[0]?.slug;
const timingResponse = await fetch(`https://sunrisetime.co/api/v1/times?city=${citySlug}&date=2026-03-29`
);
const timingData = await timingResponse.json();
console.log(timingData.sun.sunrise, timingData.prayerTimes.maghrib); Los errores devuelven JSON estructurado para que el manejo externo sea mas estable.
| Codigo | Estado | Significado |
|---|---|---|
missing_city | 400 | No se envio el parametro city a /api/v1/times. |
invalid_date | 400 | El valor de date no estaba en formato YYYY-MM-DD. |
unknown_city | 404 | El slug de ciudad enviado no existe en el indice actual. |
invalid_limit | 400 | El valor de limit enviado a /api/v1/cities era invalido. |
Usa estos enlaces cuando quieras validar el metodo, revisar slugs publicos o pedir mas volumen.