Genere el programa de un evento y detecte solapamientos
Una conferencia a las 09:00 de 60 minutos termina a las 10:00, y un panel que empieza a las 09:45 se le solapa 15 minutos: el generador ordena las sesiones, calcula cada hora de fin y señala cada choque antes de imprimir la agenda. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Nombre del evento
- Product Leadership Summit
- Número de sesiones
- 3
Convierta una lista de sesiones, horas de inicio y duraciones en un programa ordenado sin hacer cálculos manuales. El generador organiza las sesiones, calcula la hora exacta de finalización, señala las que pasan de medianoche e informa de cada solapamiento y su duración. Resulta útil para congresos, talleres, actos comunitarios, jornadas formativas y cualquier agenda donde un error horario pueda confundir a ponentes, personal o asistentes.
Introduzca un horario de origen fiable
Comience con el nombre del evento y un registro por cada sesión que quiera publicar. Cada registro necesita un nombre claro, una hora de inicio en formato HH:MM de 24 horas y una duración positiva expresada en minutos enteros. El reloj de 24 horas evita confusiones entre mañana y tarde, y los minutos permiten describir con igual precisión tanto una pausa breve como un taller extenso.
El generador ordena los registros por hora de inicio, por lo que no es necesario introducirlos cronológicamente. Aun así, use nombres distintos y fáciles de reconocer: aparecen en el informe de solapamientos y ayudan a localizar cada conflicto. Considere la lista enviada como el plan oficial de una jornada.
Si una sesión comienza de noche y termina después de medianoche, la hora final pasa al día siguiente y el desplazamiento de día lo indica expresamente. Las agendas vacías, las horas mal formadas, los nombres ausentes y las duraciones no positivas se rechazan para evitar programas engañosos.
Interprete las horas finales y los avisos de solapamiento
El resultado incluye el nombre del evento, la cantidad de sesiones, una lista cronológica, un indicador general de solapamientos y el detalle de cada conflicto. Cada sesión conserva su inicio y duración, y añade la hora final calculada. Un desplazamiento de día igual a cero significa que termina en la misma fecha; un valor de uno indica que finaliza después de la medianoche siguiente.
Dos sesiones se solapan cuando la posterior comienza antes de que termine la anterior. Si una acaba exactamente a las 10:30 y otra empieza a las 10:30, no existe conflicto. Cuando sí lo hay, el registro identifica ambas sesiones e indica los minutos compartidos, lo que facilita decidir si conviene acortar una intervención, retrasar un inicio o usar salas diferentes.
El generador examina todos los pares pertinentes, no solo filas consecutivas; por eso, un taller largo que abarque varias sesiones breves produce todos los avisos aplicables.
Integre el programa en el flujo del evento
Genere de nuevo el programa cada vez que cambie un horario y use la respuesta estructurada como fuente revisada para el sitio web, los correos a asistentes, la agenda impresa, la señalización o las instrucciones para ponentes. En un proceso manual, pegue el plan actual en el ejecutor del navegador y compruebe el indicador de solapamientos antes de publicarlo. Como el algoritmo no depende de la red, la fecha actual, valores aleatorios ni supuestos ocultos de calendario, una misma entrada siempre produce la misma salida.
Esto facilita comparar revisiones y saber qué horarios cambiaron. La herramienta no asigna salas, añade márgenes de traslado, deduce zonas horarias ni resuelve conflictos: ofrece cálculos precisos y un informe completo para que la organización decida con datos fiables.
Qué puede hacer con ella
Revisión de la agenda de un congreso
Calcule el final de las ponencias y detecte conflictos de ponentes o salas antes de publicar el programa.
Planificación de una jornada de talleres
Combine clases, ejercicios, comidas y pausas en un horario cronológico con límites exactos.
Publicación automatizada del programa
Valide una agenda desde una aplicación y envíe el resultado estructurado a plantillas web, de correo o impresas.
Preguntas frecuentes
¿Qué formato horario debo utilizar?
Use el formato HH:MM de 24 horas, por ejemplo, 09:30 o 17:05.
¿Se consideran solapadas dos sesiones consecutivas?
No. Si una empieza en el minuto exacto en que acaba la otra, ambas permanecen sin aviso de conflicto.
¿Puede el generador corregir un solapamiento automáticamente?
No. Informa de cada par afectado y de la duración del cruce; la organización decide sobre salas, ponentes y horarios.
¿Cómo sé si dos sesiones de mi agenda se solapan?
Introduzca cada sesión con su hora de inicio y su duración. El generador compara todas las parejas, no solo las filas vecinas, y muestra ambos nombres con los minutos compartidos, como los 15 minutos entre una conferencia de las 09:00 y un panel de las 09:45.
¿Qué ocurre si una sesión termina después de medianoche?
Su hora de fin pasa al día siguiente y el programa indica que termina al otro día, de modo que una sesión nocturna nunca parece acabar antes de empezar.
Herramientas relacionadas
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/doc/event-program-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"event_name":"Product Leadership Summit","sessions":[{"name":"Opening keynote","start_time":"09:00","duration_minutes":60},{"name":"Strategy panel","start_time":"09:45","duration_minutes":45},{"name":"Networking break","start_time":"10:30","duration_minutes":20}]}'const res = await fetch("https://api.kit.forhosting.com/doc/event-program-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"event_name": "Product Leadership Summit",
"sessions": [
{
"name": "Opening keynote",
"start_time": "09:00",
"duration_minutes": 60
},
{
"name": "Strategy panel",
"start_time": "09:45",
"duration_minutes": 45
},
{
"name": "Networking break",
"start_time": "10:30",
"duration_minutes": 20
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/event-program-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"event_name": "Product Leadership Summit",
"sessions": [
{
"name": "Opening keynote",
"start_time": "09:00",
"duration_minutes": 60
},
{
"name": "Strategy panel",
"start_time": "09:45",
"duration_minutes": 45
},
{
"name": "Networking break",
"start_time": "10:30",
"duration_minutes": 20
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/event-program-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"event_name":"Product Leadership Summit","sessions":[{"name":"Opening keynote","start_time":"09:00","duration_minutes":60},{"name":"Strategy panel","start_time":"09:45","duration_minutes":45},{"name":"Networking break","start_time":"10:30","duration_minutes":20}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"event_name":"Product Leadership Summit","sessions":[{"name":"Opening keynote","start_time":"09:00","duration_minutes":60},{"name":"Strategy panel","start_time":"09:45","duration_minutes":45},{"name":"Networking break","start_time":"10:30","duration_minutes":20}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/event-program-generate", 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
{
"event_name": "Product Leadership Summit",
"sessions": [
{
"name": "Opening keynote",
"start_time": "09:00",
"duration_minutes": 60
},
{
"name": "Strategy panel",
"start_time": "09:45",
"duration_minutes": 45
},
{
"name": "Networking break",
"start_time": "10:30",
"duration_minutes": 20
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.event_program_generate",
"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.
Límites
max_mb | 25 |
max_pages | 200 |
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. |
Notas técnicas
Integre el programa en el flujo del evento
En un proceso automatizado, llame a la API por $0.002 cuando una persona guarde la agenda, impida la publicación si has_overlaps es verdadero y lleve los campos calculados a su plantilla.
Preguntas técnicas
¿Cuánto cuesta?
Cada solicitud a la API cuesta $0.002; la versión del navegador puede ejecutarse localmente en esta página.
¿Qué ocurre si una sesión pasa de medianoche?
La hora final continúa en el día siguiente y day_offset indica cuántos días después del inicio termina.