Portal do Desenvolvedor / Listar Horários Disponíveis
Portal do Desenvolvedor

Listar Horários Disponíveis

Consultar a disponibilidade de horários é uma das operações mais comuns ao integrar com a API do eAgenda. Este tutorial cobre todos os cenários de consulta.

Endpoint principal

GET /api/v3/available-date-times/

Parâmetros obrigatórios

ParâmetroTipoDescrição
calendar_keyUUIDChave da agenda
daydateData no formato YYYY-MM-DD

Parâmetros opcionais

ParâmetroTipoDescrição
service_keysUUID[]Filtrar por serviços específicos
action_new_appointmentstringTipo de ação (ver tabela abaixo)
min_vacancies_availablenumberMínimo de vagas disponíveis (padrão: 1)
is_manualbooleanIncluir apenas horários criados manualmente

Valores de action_new_appointment

ValorDescrição
newHorários disponíveis sem restrições
clientHorários considerando restrições para clientes
waitingHorários com lista de espera
forceAgendamento em horários já ocupados

Consulta básica

curl -X GET "https://eagenda.com.br/api/v3/available-date-times/?calendar_key=abc12345-...&day=2026-06-10" \
  -H "Authorization: Basic SEU_TOKEN"

Resposta:

{
  "count": 10,
  "results": [
    {
      "start_date": "2026-06-10T08:00:00-03:00",
      "end_date": "2026-06-10T08:30:00-03:00",
      "vacancies_available": 3
    },
    {
      "start_date": "2026-06-10T08:30:00-03:00",
      "end_date": "2026-06-10T09:00:00-03:00",
      "vacancies_available": 2
    }
  ]
}

Filtrar por serviço

Para ver horários compatíveis com serviços específicos:

curl -X GET "https://eagenda.com.br/api/v3/available-date-times/?calendar_key=abc12345-...&day=2026-06-10&service_keys=srv12345-..." \
  -H "Authorization: Basic SEU_TOKEN"

Você pode filtrar por múltiplos serviços repetindo o parâmetro:

?service_keys=srv-1&service_keys=srv-2

Consultar vários dias

A API retorna horários de um dia por vez. Para consultar uma semana, faça múltiplas requisições:

import requests
from datetime import date, timedelta

BASE_URL = "https://eagenda.com.br/api/v3"
AUTH = ("meu@email.com", "minha_senha")
CALENDAR_KEY = "abc12345-1234-5678-9abc-def012345678"

start = date(2026, 6, 10)
available_slots = []

for i in range(7):
    day = start + timedelta(days=i)
    response = requests.get(
        f"{BASE_URL}/available-date-times/",
        auth=AUTH,
        params={
            "calendar_key": CALENDAR_KEY,
            "day": day.isoformat(),
        }
    ).json()

    for slot in response["results"]:
        available_slots.append(slot)
        print(f"{slot['start_date']}{slot['vacancies_available']} vaga(s)")

Horários aleatórios

Para cenários onde o cliente aceita qualquer horário disponível (ex: próxima vaga):

GET /api/v3/available-date-times/random/
curl -X GET "https://eagenda.com.br/api/v3/available-date-times/random/?calendar_key=abc12345-...&quantity=3" \
  -H "Authorization: Basic SEU_TOKEN"

Parâmetros específicos

ParâmetroTipoDescrição
quantitynumberQuantidade de horários a retornar (padrão: 1)
start_datedatetimeData/hora mínima
end_datedatetimeData/hora máxima

Consultar dias com disponibilidade

Para saber quais dias do mês têm horários disponíveis:

GET /api/v3/days/
curl -X GET "https://eagenda.com.br/api/v3/days/?calendar_key=abc12345-...&start_date=2026-06-01&end_date=2026-06-30" \
  -H "Authorization: Basic SEU_TOKEN"

Use este endpoint para montar um calendário visual mostrando ao usuário quais dias estão disponíveis antes de consultar os horários específicos.

Dicas de implementação

  1. Cache moderado — Horários mudam frequentemente. Não faça cache por mais de 1-2 minutos
  2. Verifique antes de agendar — Sempre confirme a disponibilidade logo antes de criar o agendamento, pois outro cliente pode ter reservado o horário
  3. Use action_new_appointment=client — Para respeitar as regras de agendamento configuradas pelo administrador
  4. Paginação — Para agendas com muitos horários, use page e page_size para paginar os resultados