Portal do Desenvolvedor / Criar um Agendamento
Portal do Desenvolvedor

Criar um Agendamento

Neste tutorial, você vai aprender o fluxo completo para criar um agendamento via API: desde a consulta de agendas e horários até a confirmação do agendamento.

Fluxo de agendamento

O processo segue 4 etapas:

  1. Listar agendas — Obter as agendas disponíveis
  2. Listar serviços — Ver os serviços oferecidos
  3. Consultar horários — Verificar disponibilidade
  4. Criar o agendamento — Enviar os dados do agendamento

Passo 1: Listar agendas

Primeiro, obtenha a lista de agendas da sua conta:

curl -X GET "https://eagenda.com.br/api/v3/calendars/?is_active=true" \
  -H "Authorization: Basic SEU_TOKEN"

Resposta:

{
  "count": 2,
  "results": [
    {
      "calendar_key": "abc12345-1234-5678-9abc-def012345678",
      "name": "Consultório Dr. Silva",
      "slug": "consultorio-dr-silva",
      "is_active": true,
      "appointment_mode": "hybrid"
    }
  ]
}

Guarde o calendar_key — você vai precisar dele nos próximos passos.

Passo 2: Listar serviços

Consulte os serviços disponíveis para agendamento:

curl -X GET "https://eagenda.com.br/api/v3/services/" \
  -H "Authorization: Basic SEU_TOKEN"

Resposta:

{
  "count": 3,
  "results": [
    {
      "service_key": "srv12345-1234-5678-9abc-def012345678",
      "name": "Consulta Inicial",
      "duration": 60,
      "price": "150.00",
      "is_active": true
    }
  ]
}

Guarde o service_key dos serviços desejados.

Passo 3: Consultar horários disponíveis

Com o calendar_key e service_keys, consulte os horários disponíveis para um dia específico:

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

Resposta:

{
  "count": 8,
  "results": [
    {
      "start_date": "2026-06-10T09:00:00-03:00",
      "end_date": "2026-06-10T10:00:00-03:00",
      "vacancies_available": 1
    },
    {
      "start_date": "2026-06-10T10:00:00-03:00",
      "end_date": "2026-06-10T11:00:00-03:00",
      "vacancies_available": 1
    }
  ]
}

Dica: Use o parâmetro action_new_appointment=client para ver apenas horários disponíveis considerando as restrições para agendamento por clientes.

Passo 4: Criar o agendamento

Com todas as informações, crie o agendamento:

curl -X POST "https://eagenda.com.br/api/v3/appointments/" \
  -H "Authorization: Basic SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "calendar_key": "abc12345-1234-5678-9abc-def012345678",
    "start_date": "2026-06-10T09:00:00-03:00",
    "service_keys": ["srv12345-1234-5678-9abc-def012345678"],
    "person": {
      "full_name": "João da Silva",
      "email": "joao@exemplo.com",
      "phone": "+5511999990000"
    }
  }'

Resposta (201 Created):

{
  "appointment_key": "apt12345-1234-5678-9abc-def012345678",
  "search_code": "AGD-2026-001234",
  "status": "CONFIRMED",
  "start_date": "2026-06-10T09:00:00-03:00",
  "end_date": "2026-06-10T10:00:00-03:00",
  "calendar": {
    "calendar_key": "abc12345-1234-5678-9abc-def012345678",
    "name": "Consultório Dr. Silva"
  },
  "person": {
    "person_key": "prs12345-1234-5678-9abc-def012345678",
    "full_name": "João da Silva",
    "email": "joao@exemplo.com"
  },
  "services": [
    {
      "service_key": "srv12345-1234-5678-9abc-def012345678",
      "name": "Consulta Inicial"
    }
  ]
}

Exemplo completo em Python

import requests

BASE_URL = "https://eagenda.com.br/api/v3"
AUTH = ("meu@email.com", "minha_senha")

# 1. Listar agendas ativas
calendars = requests.get(
    f"{BASE_URL}/calendars/",
    auth=AUTH,
    params={"is_active": True}
).json()

calendar_key = calendars["results"][0]["calendar_key"]

# 2. Listar serviços
services = requests.get(f"{BASE_URL}/services/", auth=AUTH).json()
service_key = services["results"][0]["service_key"]

# 3. Consultar horários disponíveis
slots = requests.get(
    f"{BASE_URL}/available-date-times/",
    auth=AUTH,
    params={
        "calendar_key": calendar_key,
        "day": "2026-06-10",
        "service_keys": service_key,
    }
).json()

start_date = slots["results"][0]["start_date"]

# 4. Criar o agendamento
appointment = requests.post(
    f"{BASE_URL}/appointments/",
    auth=AUTH,
    json={
        "calendar_key": calendar_key,
        "start_date": start_date,
        "service_keys": [service_key],
        "person": {
            "full_name": "João da Silva",
            "email": "joao@exemplo.com",
            "phone": "+5511999990000",
        },
    }
).json()

print(f"Agendamento criado: {appointment['search_code']}")
print(f"Status: {appointment['status']}")

Possíveis erros

CódigoCausaSolução
400Dados inválidos ou incompletosVerifique os campos obrigatórios
400Horário não disponívelConsulte os horários disponíveis novamente
401Não autenticadoVerifique suas credenciais
403Sem permissãoVerifique as permissões da conta