POST Criar Agendamento
Cria um ou mais agendamentos para um paciente.
Autenticação necessária
Esta rota requer o header Authorization: Bearer {accessToken}
Um agendamento por procedimento
Cada item em procedures[] gera um agendamento separado. O sistema distribui os horários automaticamente a partir do startTime informado.
Endpoint
POST https://api-dev.imagemais.com.br/api/appointments
Corpo da Requisição
Campos principais
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
doctorId | number | ✅ | ID do médico |
date | string | ✅ | Data do agendamento no formato YYYY-MM-DD |
startTime | string | ✅ | Horário de início no formato HH:mm |
endTime | string | ✅ | Horário de término no formato HH:mm |
notes | string | ❌ | Observações do agendamento |
priority | string | ❌ | Prioridade do paciente. Exemplo: PcD |
isFit | boolean | ❌ | Indica se é um encaixe |
patient
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
patient.name | string | ✅ | Nome do paciente |
patient.id | number | ❌ | ID do paciente (quando já cadastrado) |
patient.dateBirth | string | ❌ | Data de nascimento no formato YYYY-MM-DD |
patient.cpf | string | ❌ | CPF do paciente (somente números) |
patient.rg | string | ❌ | RG do paciente |
patient.gender.name | string | ❌ | Gênero. Exemplo: M, F |
patient.address.street | string | ❌ | Logradouro |
patient.address.number | string | ❌ | Número |
patient.address.district | string | ❌ | Bairro |
patient.address.city | string | ❌ | Cidade |
patient.address.state | string | ❌ | Estado |
patient.address.cep | string | ❌ | CEP |
patient.address.complement | string | ❌ | Complemento |
patient.contact.phone | string | ❌ | Telefone principal |
patient.contact.secondary_phone | string | ❌ | Telefone secundário |
patient.contact.email | string | ❌ |
procedures[]
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
procedures[].id | number | ✅ | ID do procedimento |
procedures[].discountId | number | ❌ | ID do desconto a aplicar no procedimento |
Requisição
curl -X 'POST' \
'https://api-dev.imagemais.com.br/api/appointments' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {accessToken}' \
-H 'Content-Type: application/json' \
-d '{
"patient": {
"name": "João Silva",
"dateBirth": "1990-01-01",
"cpf": "12345678900",
"gender": {
"name": "M"
}
},
"procedures": [
{
"id": 1
},
{
"id": 2,
"discountId": 1
}
],
"doctorId": 1,
"date": "2026-05-17",
"startTime": "09:00",
"endTime": "09:15",
"notes": "Observações sobre o agendamento",
"priority": "PcD",
"isFit": false
}'
Respostas
200 Sucesso
Retorna um array com um agendamento criado por procedimento.
[
{
"id": 5281,
"date": "2026-05-17T00:00:00.000Z",
"startTime": "09:00",
"endTime": "09:10",
"notes": "Observações sobre o agendamento",
"accountId": 1,
"isFit": false,
"createdAt": "2026-05-16T14:17:37.694Z",
"createdByUserId": 11,
"updatedAt": "2026-05-16T14:17:37.694Z",
"deletedAt": null,
"doctor": {
"id": 2,
"name": "Dr. Victor Rocha"
},
"patient": {
"id": 17535,
"name": "Joao Silva",
"dateBirth": "1990-01-01T00:00:00.000Z",
"cpf": "27238001055",
"contact": null
},
"status": {
"id": 1,
"name": "Agendado",
"color": "#ffc107"
},
"createdBy": {
"id": 11,
"name": "Douglas Galera"
},
"appointmentProcedures": {
"price": "252",
"discountsAppointmentProcedures": [],
"procedure": {
"id": 1,
"name": "17 BETA ESTRADIOL E2 - PRIMEIRA AMOSTRA",
"price": "252"
}
}
},
{
"id": 5282,
"date": "2026-05-17T00:00:00.000Z",
"startTime": "09:10",
"endTime": "09:20",
"notes": "Observações sobre o agendamento",
"accountId": 1,
"isFit": false,
"createdAt": "2026-05-16T14:17:37.694Z",
"createdByUserId": 11,
"updatedAt": "2026-05-16T14:17:37.694Z",
"deletedAt": null,
"doctor": {
"id": 2,
"name": "Dr. Victor Rocha"
},
"patient": {
"id": 17535,
"name": "Joao Silva",
"dateBirth": "1990-01-01T00:00:00.000Z",
"cpf": "27238001055",
"contact": null
},
"status": {
"id": 1,
"name": "Agendado",
"color": "#ffc107"
},
"createdBy": {
"id": 11,
"name": "Douglas Galera"
},
"appointmentProcedures": {
"price": "252",
"discountsAppointmentProcedures": [
{
"discountId": 6,
"value": "75.6",
"discount": {
"id": 6,
"name": "Desconto de parente",
"fixed": null,
"percentage": 30,
"expirationDate": null
}
}
],
"procedure": {
"id": 2,
"name": "17 BETA ESTRADIOL E2 - SEGUNDA AMOSTRA",
"price": "252"
}
}
}
]
404 Não Encontrado
Retornado quando o médico informado não existe.
{
"message": "Médico não encontrado",
"error": "Not Found",
"statusCode": 404
}
Retornado quando o desconto informado não existe.
{
"message": "Desconto não encontrado",
"error": "Not Found",
"statusCode": 404
}
409 Conflito
Retornado quando já existe um paciente cadastrado com o CPF informado.
{
"message": "Já existe um paciente com esse CPF",
"error": "Conflict",
"statusCode": 409
}
Retornado quando o horário informado já está ocupado por outro agendamento.
{
"message": "Horários 09:00 já estão ocupados por outros agendamentos",
"error": "Conflict",
"statusCode": 409
}