Scheduling

Agendamiento

Define tipos de evento reservables, ofrece disponibilidad, toma reservas y envía correos de confirmación y recordatorio.

Agendamiento es un motor de reservas white-label sobre calendario. Los tipos de evento definen la oferta; el motor calcula slots seguros; las reservas se crean de forma transaccional para que dos invitados no tomen el mismo slot. Los cuerpos y respuestas de agendamiento usan nombres de campo en camelCase.

Tipos de evento

Un tipo de evento es una definición de reunión reservable: duración, tipo de ubicación, política de disponibilidad (zona horaria del anfitrión, ventanas de trabajo, aviso, buffers), una conexión y calendario opcionales, branding y preguntas personalizadas. Créalos y actualízalos por la API o el panel.

Crear un tipo de eventobash
curl -X POST https://api.hora.to/v1/scheduling/event-types \
  -H "Authorization: Bearer $HORATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug":"intro-call","name":"Intro call","durationMinutes":30,"connectionId":"conn_123","calendarId":"cal_primary"}'

Disponibilidad

Pide a un tipo de evento sus slots reservables en una ventana. El motor devuelve slots ya ajustados por zona horaria del anfitrión, horario laboral, aviso mínimo, anticipación máxima y buffers: ofrécelos al invitado tal cual.

Obtener disponibilidadbash
curl "https://api.hora.to/v1/scheduling/event-types/evt_123/availability?from=2026-06-10T00:00:00Z&to=2026-06-17T00:00:00Z" \
  -H "Authorization: Bearer $HORATO_API_KEY"

Reservas

Crea una reserva contra un slot ofrecido. La escritura es transaccional y revalida disponibilidad, así que un slot tomado concurrentemente devuelve `conflict` en vez de una doble reserva. Si el tipo de evento tiene conexión y calendario, se crea un evento de calendario (y enlace de videollamada) en modo best-effort. Reprogramar y cancelar mueven o liberan el slot.

Envía un `Idempotency-Key` para que un create reintentado devuelva la reserva original en lugar de duplicarla.

Crear una reservabash
curl -X POST https://api.hora.to/v1/scheduling/bookings \
  -H "Authorization: Bearer $HORATO_API_KEY" \
  -H "Idempotency-Key: bk-2026-06-10-dana" \
  -H "Content-Type: application/json" \
  -d '{"eventTypeId":"evt_123","start":"2026-06-10T16:00:00Z","inviteeEmail":"dana@example.com","inviteeName":"Dana","inviteeTimezone":"America/Costa_Rica"}'
Reprogramar y cancelarbash
curl -X POST https://api.hora.to/v1/scheduling/bookings/bk_123/reschedule \
  -H "Authorization: Bearer $HORATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"start":"2026-06-11T16:00:00Z"}'

curl -X POST https://api.hora.to/v1/scheduling/bookings/bk_123/cancel \
  -H "Authorization: Bearer $HORATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"Invitee requested"}'

Confirmación y recordatorios

Los recordatorios son opcionales por tipo de evento mediante `reminderPolicy`. Activa una confirmación (enviada de inmediato al reservar) y cualquier cantidad de offsets de recordatorio en minutos antes del inicio. Las notificaciones se envían desde la conexión del tipo de evento y las entrega el mismo dispatcher con reintentos que el email programado; cancelar o reprogramar una reserva anula o reancla automáticamente sus notificaciones pendientes.

Por defecto `reminderPolicy` está vacío, así que los tipos de evento existentes permanecen en silencio hasta que lo actives. Apunta `confirmationTemplateSlug` / `reminderTemplateSlug` a una plantilla de email para controlar el texto, u omítelos para usar el texto integrado.

Activar confirmación + recordatorios 24h/1hbash
curl -X PATCH https://api.hora.to/v1/scheduling/event-types/evt_123 \
  -H "Authorization: Bearer $HORATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reminderPolicy":{"confirmation":true,"reminderMinutes":[1440,60]}}'