Calcule la hora óptima para despertar según ciclos de sueño
Esta calculadora de ciclos de sueño convierte una hora prevista para acostarse en una lista práctica de posibles alarmas.
Ejecutar — gratis
Indique cuándo piensa ir a la cama, la duración media de su ciclo y los minutos que suele tardar en dormirse. La calculadora suma primero ese tiempo y luego avanza por ciclos completos para situar cada resultado en un límite de ciclo. Es una ayuda de planificación, no una garantía sobre la calidad del sueño ni un sustituto del consejo médico personal.
Empiece por la hora a la que realmente piensa acostarse
Use bedtime para indicar el momento en que espera meterse en la cama, con un valor HH:MM de 24 horas, como 22:30 o 00:15. La calculadora no presupone que se duerme de inmediato. Primero suma fall_asleep_minutes, cuyo valor predeterminado es de quince minutos, aunque puede adaptarlo a su rutina habitual. Por tanto, una hora de acostarse de 22:30 y quince minutos para conciliar el sueño generan un inicio estimado a las 22:45. Todas las opciones para despertar se miden desde ese punto, no desde el instante en que se acuesta. Esta diferencia importa porque ignorar la latencia adelanta todas las alarmas respecto al límite de ciclo previsto. La respuesta incluye tanto la hora normalizada de acostarse como sleep_starts_at, de modo que la suposición queda visible al guardar el resultado, mostrarlo en una aplicación o comparar distintas rutinas nocturnas. Las horas que cruzan la medianoche pasan automáticamente al día siguiente. Como la entrada solo contiene una hora de reloj, el resultado muestra horas y no fechas; interprete un resultado de madrugada como posterior a la hora de acostarse indicada.
Elija una duración media de ciclo realista
Los ciclos de sueño suelen resumirse como periodos de aproximadamente noventa minutos, por eso cycle_minutes vale 90 de forma predeterminada, pero esta calculadora le permite indicar otra media. El valor debe ser un número finito y positivo, ya que un ciclo nulo o negativo no puede definir un límite futuro para despertar. Para cada opción, el algoritmo multiplica cycle_minutes por un número entero de ciclos, suma esa duración al inicio estimado del sueño y presenta el resultado como HH:MM. Se admiten duraciones fraccionarias, mientras que la hora visible se redondea al minuto más cercano. La respuesta conserva sleep_minutes calculado en cada opción para que los clientes automatizados conozcan la duración asociada a la hora. Considere esa longitud como una estimación para planificar, no como una medición biológica exacta todas las noches. El estrés, la enfermedad, la edad, el entorno y la variación normal pueden alterar la arquitectura del sueño. Si dispone de observaciones de un dispositivo o diario, una media de varias noches representativas suele ser más útil que un único registro atípico. La herramienta hace cálculos con la media elegida; no diagnostica fases ni confirma que el límite se haya producido realmente.
Revise las opciones y reserve suficiente tiempo total de sueño
El array wake_up_times está ordenado desde un ciclo completo hasta max_cycles, que vale seis de forma predeterminada y puede configurarse entre uno y doce. Cada elemento indica el número de ciclos, los minutos totales de sueño después de dormirse y la wake_time correspondiente. Así puede explorar los cálculos, pero una opción temprana no constituye automáticamente una recomendación saludable. Un resultado de un ciclo puede ilustrar el límite de una siesta breve, mientras que un plan nocturno suele exigir suficiente sueño para sus circunstancias. Revise primero la duración total y después elija entre las horas alineadas con ciclos que también encajen con sus obligaciones. El cálculo es determinista: nunca consulta la fecha actual, la zona horaria local ni el reloj del sistema, y no utiliza servicios de red. Las mismas entradas siempre producen la misma salida en el navegador y la API. El cambio de medianoche se resuelve mediante aritmética horaria. Si persisten problemas de sueño, cansancio diurno intenso, interrupciones respiratorias u otros síntomas preocupantes, use este horario solo como registro para hablar con un profesional sanitario cualificado, no como sustituto de una evaluación.
Qué puede hacer con ella
Planificar una alarma antes de acostarse
Compare varias alarmas situadas en ciclos completos después de sumar los minutos que suele tardar en dormirse.
Crear una función de planificación del sueño
Integre en una aplicación de bienestar o panel personal un horario determinista con ciclos, duraciones y horas.
Probar una media de ciclo personalizada
Sustituya la estimación habitual de noventa minutos por su propia media y compare los límites resultantes.
Preguntas frecuentes
¿Cuánto cuesta la calculadora?
La calculadora del navegador es gratuita en esta página. Las solicitudes por API parten de $0.002.
¿Por qué se suma el tiempo para dormirse antes de los ciclos?
Los ciclos empiezan cuando se duerme, por lo que la latencia se añade a la hora de acostarse antes de contar ciclos completos.
¿Un ciclo debe durar exactamente 90 minutos?
No. El valor predeterminado es de noventa minutos, pero cycle_minutes admite cualquier número finito y positivo.
¿Qué ocurre si una hora para despertar cruza la medianoche?
Se ajusta a una hora válida de 24 horas. Un resultado de madrugada se interpreta como posterior a la hora de acostarse indicada.
¿Despertar al final de un ciclo garantiza que me sentiré descansado?
No. Es una estimación matemática de planificación; la cantidad total de sueño y los factores de salud individuales siguen siendo importantes.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/final3/sleep-cycle-wake-time-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bedtime":"22:30"}'const res = await fetch("https://api.kit.forhosting.com/final3/sleep-cycle-wake-time-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bedtime": "22:30"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/final3/sleep-cycle-wake-time-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bedtime": "22:30"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/final3/sleep-cycle-wake-time-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bedtime":"22:30"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bedtime":"22:30"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/final3/sleep-cycle-wake-time-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"bedtime": "22:30"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "final3.sleep_cycle_wake_time_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |