Pular para o conteúdo
GET/disponibilidade

Horários livres

agenda:lermódulo Agenda

Os mesmos horários que o agente de IA oferece: respeita o horário de trabalho, bloqueios, compromissos, intervalo e antecedência mínima. Cada horário traz inicio/fim em UTC e inicio_local/fim_local no fuso da agenda. Até 400 horários por consulta.

GET /disponibilidade

curl "https://chat.forsi.com.br/api/v1/disponibilidade?agenda_id=f7233bb7-10b6-49d2-aa3b-8c2e7d88064d&de=2026-10-12T00:00:00-03:00&ate=2026-10-17T00:00:00-03:00&duracao_min=30" \
  -H "Authorization: Bearer $FORSI_CHAVE"
Resposta 200
{
  "dados": {
    "fuso": "America/Sao_Paulo",
    "duracao_min": 30,
    "slots": [{}],
    "truncado": false
  }
}

Parâmetros de consulta#

  • dedata e hora ISO 8601opcional

    Começo da janela (com fuso).

  • atedata e hora ISO 8601opcional

    Fim da janela (com fuso). A janela vai até 62 dias.

  • agenda_iduuidopcional

    Só esta agenda. Sem ela, todas as agendas ativas.

  • duracao_minintegeropcional

    Duração do compromisso, em minutos. Padrão: a da agenda.

    • mín. 5
    • máx. 720

Resposta#

200 com {"dados": ...}: Disponibilidade.

  • fusostringopcional
    —
  • duracao_minintegeropcional
    —
  • slotslista de Slotopcional
    —
  • truncadobooleanopcional

    Verdadeiro quando passou de 400 horários: estreite a janela.

Erros#

Todo erro vem como {"erro": {"codigo", "mensagem"}}. Trate pelo codigo: ele não muda.

Status de erro desta operação
StatusQuando
401Chave ausente ou inválida (resposta igual para qualquer motivo).
403Plano sem API, escopo insuficiente ou https/origem recusados.
422Dados inválidos ou regra de negócio (ex.: janela_fechada; conta_restrita = a Meta restringiu a conta por spam: erro traz os campos de RestricaoMeta, como ate, escopo, motivo e retry_after_s).
429Limite de requisições. Veja Retry-After.
Códigos de erro que esta área pode devolver28
  • horario_invalidoData e hora inválidas. Use o formato 2026-10-12T14:00:00-03:00 (sempre com o fuso), com o fim depois do início.
  • janela_grandeA janela de consulta passa do máximo (62 dias).
  • duracao_invalidaDuração inválida: de 5 a 720 minutos (compromisso de até 12 horas).
  • campo_longoUm dos textos passa do tamanho máximo. O campo vem em "detalhe".
  • campo_invalidoCampo obrigatório ou inválido. O campo vem em "detalhe".
  • link_invalidoO link precisa começar com https://.
  • contato_ambiguoInforme só um entre contato_id, conversa_id e telefone.
  • conversa_de_outro_contatoA conversa informada é de outro contato.
  • evento_canceladoO compromisso está cancelado e não pode ser alterado. Marque um novo.
  • evento_finalizadoO compromisso já foi encerrado (concluído ou faltou) e não pode ser alterado.
  • horario_ocupadoEsse horário já está ocupado nessa agenda.
  • horario_bloqueadoEsse horário está bloqueado (folga, almoço ou feriado).
  • fora_do_horarioEsse horário está fora do horário de trabalho da agenda.
  • antecedenciaEsse horário está mais perto do que a antecedência mínima da agenda.
  • compromisso_estado_invalidoestado só pode ser concluido ou faltou. Para confirmar ou cancelar, use as rotas próprias.
  • nada_para_atualizarMande ao menos um campo para atualizar.
  • fuso_invalidoFuso inválido. Use um nome IANA, como America/Sao_Paulo.
  • cor_invalidaCor inválida. Use slate, blue, violet, amber, emerald, green, rose, cyan ou orange.
  • lembretes_invalidosLembretes inválidos: até 5 itens, cada um só com antes_min (1 a 43200).
  • usuario_inexistenteusuario_id não é de uma pessoa desta equipe.
  • agenda_inexistenteAgenda não encontrada (ou inativa, para marcar compromisso).
  • evento_inexistenteCompromisso não encontrado.
  • bloqueio_inexistenteBloqueio não encontrado.
  • agenda_repetidaEssa pessoa já tem uma agenda.
  • limite_agendasLimite de 100 agendas por organização.
  • limite_bloqueiosLimite de 500 bloqueios por organização.
  • bloqueio_tipo_invalidotipo deve ser folga, almoco, feriado ou outro.
  • repeticao_invalidarepetir deve ser nunca, diario, semanal ou anual; repetir_ate só vale com repetição.

Os erros que valem para qualquer rota (chave, limite, JSON) estão em Erros.