Inicio rápido
Guías paso a paso para los patrones de integración más comunes de la API de hoastnow. Cada guía muestra el flujo completo con ejemplos en cURL, JavaScript, Python y C#.
Inicio rápido
Obtén tu API key, haz tu primera solicitud y entiende la respuesta.
Obtén tu API key
Visita la página Obtener API Keys para generar una clave para tu comunidad o marca. Selecciona los permisos que necesita tu integración y copia la clave — empieza con hoa_live_.
Haz tu primera solicitud — verificar disponibilidad
Usa el endpoint de disponibilidad para ver qué horarios están disponibles en un espacio para una fecha dada. Necesitas el spaceId, que puedes encontrar en la URL al ver un espacio en hoastnow.
curl "https://www.hoastnow.com/api/v1/spaces/42/availability?date=2026-04-15" \
-H "Authorization: Bearer $HOASTNOW_API_KEY"Entiende la respuesta
La respuesta describe la ventana de reserva de la comunidad y lista cada hora disponible dentro de ella. El campo durationHours indica cuánto dura cada evento — es definido por la comunidad y no puede cambiarse al reservar.
{
"spaceId": 42,
"spaceName": "Sunset Clubhouse",
"date": "2026-04-15",
"windowStart": 9,
"windowEnd": 21,
"durationHours": 3,
"timeSlots": [
{ "hour": 9, "label": "9:00 AM", "isAvailable": true },
{ "hour": 10, "label": "10:00 AM", "isAvailable": true },
{ "hour": 11, "label": "11:00 AM", "isAvailable": false }
]
}Un slot con isAvailable: false ya está reservado. Al elegir una hora de inicio, asegúrate de que startHour + durationHours esté dentro de windowEnd. hoastnow permitirá la reserva aunque el evento se extienda ligeramente fuera de la ventana, pero indicará el tiempo de uso reducido.
¿Qué sigue?
Verificar disponibilidad y reservar
Flujo completo: verifica slots disponibles, selecciona uno, envía una solicitud de reserva y maneja la respuesta.
Verifica los slots disponibles para tu fecha objetivo
Obtén disponibilidad para el espacio y la fecha que deseas reservar. Analiza el array timeSlots para encontrar las horas disponibles.
curl "https://www.hoastnow.com/api/v1/spaces/42/availability?date=2026-04-15" \
-H "Authorization: Bearer $HOASTNOW_API_KEY"Envía la solicitud de reserva
Pasa el spaceId, el startTime (fecha) y el startHour del slot seleccionado. Incluye un message opcional para la comunidad. Maneja el caso 422 SlotUnavailable — otro booking pudo haber tomado el slot entre tu verificación y esta llamada.
curl -X POST https://www.hoastnow.com/api/v1/bookings \
-H "Authorization: Bearer $HOASTNOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"spaceId": 42,
"startTime": "2026-04-15",
"startHour": 10,
"message": "Brand activation event — approximately 50 attendees."
}'Maneja la respuesta y espera aprobación
Un POST /bookings exitoso devuelve 201 Created con la reserva en estado Pendiente. La comunidad debe aprobarla antes de que se confirme. Guarda el id para consultar actualizaciones de estado, o configura un webhook para recibir notificaciones cuando cambie.
| Status | Meaning |
|---|---|
Pending | Solicitud enviada, esperando aprobación de la comunidad |
Approved | Comunidad aprobada — reserva confirmada |
Cancelled | Rechazada por la comunidad o cancelada por la marca |
Completed | La fecha del evento pasó y la reserva se cumplió |
¿Qué sigue?
Sincronizar reservas con tu sistema
Consulta GET /bookings periódicamente, mapea los estados y mantén tu sistema sincronizado.
Obtén reservas con filtro de fecha
Usa startDate y endDate para limitar la respuesta a una ventana relevante. Para un trabajo de sincronización diario, pasa la fecha de hoy como startDate para obtener solo las próximas reservas.
curl "https://www.hoastnow.com/api/v1/bookings?startDate=2026-04-01&status=Approved" \
-H "Authorization: Bearer $HOASTNOW_API_KEY"Mapea los estados a tu modelo de datos
Mapea los estados de hoastnow a los que use tu sistema interno — por ejemplo, una app de calendario podría mostrar solo las reservas Aprobadas y Pendientes.
# Filter to approved bookings only
curl "https://www.hoastnow.com/api/v1/bookings?startDate=2026-04-01&status=Approved" \
-H "Authorization: Bearer $HOASTNOW_API_KEY"Maneja la paginación (para el futuro)
La API actual no pagina — todas las reservas que coincidan se devuelven en una sola respuesta. Sin embargo, usa filtros de rango de fechas para limitar el tamaño de la respuesta y evitar payloads grandes a medida que crecen tus reservas.
¿Qué sigue?
Escuchar eventos con webhooks
Registra un webhook, verifica firmas, maneja cada tipo de evento y aplica buenas prácticas.
Registra tu endpoint de webhook
Registra tu URL HTTPS y selecciona los eventos a los que suscribirte usando una suma de máscara de bits: BookingRequested=1, BookingApproved=2, BookingCancelled=4, ReviewPosted=8. Usa 15 para suscribirte a todos los eventos.
curl -X POST https://www.hoastnow.com/api/v1/webhooks \
-H "Authorization: Bearer $HOASTNOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/hooks/hoastnow",
"events": 15
}'{
"id": "wh_abc123",
"url": "https://your-server.com/hooks/hoastnow",
"events": 15,
"signingSecret": "whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"createdAt": "2026-04-01T10:00:00Z"
}Verifica la firma
Cada entrega incluye un encabezado X-Hoastnow-Signature con un resumen HMAC-SHA256 del cuerpo bruto de la solicitud. Siempre verifica esto antes de procesar el payload — rechaza las solicitudes que fallen con 401.
# Manually compute the expected signature for testing:
echo -n '{"event":"BookingApproved",...}' \
| openssl dgst -sha256 -hmac "$HOASTNOW_WEBHOOK_SECRET"Maneja cada tipo de evento
Despacha según el campo event. Cada payload incluye un timestamp y un objeto data con los detalles relevantes.
# Webhook payloads look like this:
# {
# "event": "BookingApproved",
# "timestamp": "2026-04-15T10:30:00Z",
# "data": {
# "bookingId": 1002, "spaceId": 42, "spaceName": "Sunset Clubhouse",
# "date": "2026-04-15", "startHour": 10, "endHour": 13,
# "status": "Approved", "totalPrice": 345.00
# }
# }Buenas prácticas
-
Idempotencia: hoastnow puede reintentar entregas ante respuestas no 2xx o tiempos de espera agotados. Usa bookingId como clave de idempotencia para evitar procesar el mismo evento dos veces.
-
Responde rápido: Devuelve 200 en menos de 5 segundos. Encola envíos de correo, escrituras en BD y llamadas a terceros en un trabajo en segundo plano.
-
Verifica siempre las firmas: Nunca omitas la verificación, ni siquiera en desarrollo. Usa ngrok para exponer un endpoint local durante las pruebas.
-
Registra los payloads brutos: Guarda el JSON bruto antes de procesarlo para poder reproducir eventos si tu manejador tiene un error.
-
Maneja eventos desconocidos con gracia: Devuelve 200 para tipos de eventos que no reconozcas — podrían añadirse nuevos tipos en el futuro.