Developers

Guia rápido

Tutoriais passo a passo para os padrões de integração mais comuns da API do hoastnow. Cada guia mostra o fluxo completo com exemplos em cURL, JavaScript, Python e C#.

Guia rápido

Obtenha sua API key, faça a primeira requisição e entenda a resposta.

1

Obtenha sua API key

Acesse a página Obter API Keys para gerar uma chave para sua comunidade ou marca. Selecione as permissões necessárias para sua integração e copie a chave — ela começa com hoa_live_.

Armazene sua API key em uma variável de ambiente, nunca diretamente no código-fonte. Use HOASTNOW_API_KEY como nome da variável por convenção.
Get API Keys
2

Faça sua primeira requisição — verificar disponibilidade

Use o endpoint de disponibilidade para ver quais horários estão disponíveis em um espaço para uma data específica. Você precisa do spaceId, que pode ser encontrado na URL ao visualizar um espaço no hoastnow.

cURL
curl "https://www.hoastnow.com/api/v1/spaces/42/availability?date=2026-04-15" \
  -H "Authorization: Bearer $HOASTNOW_API_KEY"
3

Entenda a resposta

A resposta descreve a janela de reserva da comunidade e lista cada hora disponível dentro dela. O campo durationHours indica quanto tempo cada evento dura — é definido pela comunidade e não pode ser alterado ao reservar.

JSON — sample response
{
  "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 }
  ]
}

Um slot com isAvailable: false já está reservado. Ao selecionar um horário de início, certifique-se de que startHour + durationHours esteja dentro de windowEnd. O hoastnow permitirá a reserva mesmo que o evento se estenda ligeiramente além da janela, mas indicará o tempo de uso reduzido.

Verificar disponibilidade e reservar

Fluxo completo: verifique slots disponíveis, selecione um, envie uma solicitação de reserva e trate a resposta.

Este exemplo requer uma API key com escopo de Marca com permissões ReadAvailability e WriteBookings.
1

Verifique os slots disponíveis para a data desejada

Busque disponibilidade para o espaço e a data que deseja reservar. Analise o array timeSlots para encontrar quais horários estão disponíveis.

cURL
curl "https://www.hoastnow.com/api/v1/spaces/42/availability?date=2026-04-15" \
  -H "Authorization: Bearer $HOASTNOW_API_KEY"
2

Envie a solicitação de reserva

Passe o spaceId, o startTime (data) e o startHour do slot selecionado. Inclua uma message opcional para a comunidade. Trate o caso 422 SlotUnavailable — outra reserva pode ter ocupado o slot entre sua verificação e esta chamada.

cURL
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."
  }'
3

Trate a resposta e aguarde aprovação

Um POST /bookings bem-sucedido retorna 201 Created com a reserva em status Pendente. A comunidade deve aprovar antes de confirmar a reserva. Armazene o id para consultar atualizações de status, ou configure um webhook para ser notificado quando o status mudar.

StatusMeaning
PendingSolicitação enviada, aguardando aprovação da comunidade
ApprovedComunidade aprovou — reserva confirmada
CancelledRecusada pela comunidade ou cancelada pela marca
CompletedA data do evento passou e a reserva foi realizada

Sincronizar reservas com seu sistema

Consulte GET /bookings periodicamente, mapeie os valores de status e mantenha seu sistema sincronizado.

Requer uma chave com permissão ReadBookings. Chaves de comunidade veem todas as reservas dos seus espaços; chaves de marca veem apenas as suas.
1

Busque reservas com filtro de data

Use startDate e endDate para limitar a resposta a uma janela relevante. Para um job de sincronização diário, passe a data de hoje como startDate para buscar apenas as próximas reservas.

cURL
curl "https://www.hoastnow.com/api/v1/bookings?startDate=2026-04-01&status=Approved" \
  -H "Authorization: Bearer $HOASTNOW_API_KEY"
2

Mapeie os valores de status para seu modelo de dados

Mapeie os status do hoastnow para os do seu sistema interno — por exemplo, um app de calendário pode exibir apenas reservas Aprovadas e Pendentes.

cURL
# 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"
3

Trate paginação (para o futuro)

A API atual não pagina — todas as reservas correspondentes são retornadas em uma única resposta. Porém, use filtros de intervalo de datas para limitar o tamanho da resposta e evitar payloads grandes conforme o volume de reservas crescer.

Boa prática: Para jobs de sincronização contínuos, armazene localmente o último timestamp sincronizado e use essa data como startDate nas execuções seguintes. Isso reduz o tamanho das requisições e evita reprocessar registros antigos.

Ouvir eventos com webhooks

Registre um webhook, verifique assinaturas, trate cada tipo de evento e siga as boas práticas.

Requer uma chave com permissão Webhooks. Seu endpoint deve ser acessível publicamente via HTTPS e responder em até 5 segundos.
1

Registre seu endpoint de webhook

Registre sua URL HTTPS e selecione os eventos para se inscrever usando uma soma de máscara de bits: BookingRequested=1, BookingApproved=2, BookingCancelled=4, ReviewPosted=8. Use 15 para todos os eventos.

cURL
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
  }'
JSON — 201 Created response
{
  "id": "wh_abc123",
  "url": "https://your-server.com/hooks/hoastnow",
  "events": 15,
  "signingSecret": "whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "createdAt": "2026-04-01T10:00:00Z"
}
2

Verifique a assinatura

Cada entrega inclui um cabeçalho X-Hoastnow-Signature com um resumo HMAC-SHA256 do corpo bruto da requisição. Sempre verifique antes de processar o payload — rejeite requisições que falhem com 401.

cURL
# Manually compute the expected signature for testing:
echo -n '{"event":"BookingApproved",...}' \
  | openssl dgst -sha256 -hmac "$HOASTNOW_WEBHOOK_SECRET"
3

Trate cada tipo de evento

Despache com base no campo event. Cada payload inclui um timestamp e um objeto data com os detalhes relevantes.

cURL
# 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
#   }
# }
4

Boas práticas

  • Idempotência: o hoastnow pode retentar entregas em caso de respostas não 2xx ou timeouts. Use bookingId como chave de idempotência para evitar processar o mesmo evento duas vezes.
  • Responda rapidamente: Retorne 200 em até 5 segundos. Coloque envios de e-mail, gravações no banco de dados e chamadas a terceiros em uma fila de background.
  • Sempre verifique assinaturas: Nunca pule a verificação, nem em desenvolvimento. Use ngrok para expor um endpoint local durante os testes.
  • Registre os payloads brutos: Armazene o JSON bruto antes de processar para poder reproduzir eventos se seu handler tiver um bug.
  • Trate eventos desconhecidos com elegância: Retorne 200 para tipos de evento que não reconhecer — novos tipos podem ser adicionados no futuro.
Restaurando conexão…
Conexão perdida. Recarregar