POST/api/appointments

Criar Agendamento

Cria um agendamento com os dados fornecidos

Access Token

Para realizar requisições GET, POST, PUT, DELETE e PATCH nos endpoints da API você precisa de uma chave de autorização. Chamamos essa chave de accessToken.

Para ter acesso ao accessToken, é necessário que o usuário master da licença efetue a liberação deste pela interface do ImageMais Clinic. O accessToken tem validade de 1 hora.

Headers

AuthorizationOBRIGATÓRIO
Tipo:string
Token de autenticação no formato Bearer {accessToken}

Parâmetros

patientOBRIGATÓRIO
Tipo:object
Objeto contendo os dados do paciente

Este parâmetro representa um objeto contendo os dados do paciente que será agendado. O objeto deve conter as seguintes propriedades:

Propriedades do objeto patient:

  • name (string, obrigatório): Nome do paciente
  • phone (string, obrigatório): Telefone do paciente (formato: (81) 99999-9999)
  • dateBirth (string, obrigatório): Data de nascimento do paciente (formato: YYYY-MM-DD)
  • cpf (string, obrigatório): CPF do paciente (formato: 123.456.789-00)
proceduresOBRIGATÓRIO
Tipo:array
Array de objetos contendo os IDs dos procedimentos na qual o medido realiza
doctorIdOBRIGATÓRIO
Tipo:number
ID do médico

Este parâmetro representa o identificador único do médico. O ID do médico deve ser um número inteiro que identifica um médico específico no sistema.

Observação: Para encontrar o ID do médico, para acessar a página de listar médicos.

dateOBRIGATÓRIO
Tipo:string
Data do agendamento (formato: YYYY-MM-DD)
startTimeOBRIGATÓRIO
Tipo:string
Horário de início (formato: HH:mm)
endTimeOBRIGATÓRIO
Tipo:string
Horário de término (formato: HH:mm)
discountIdOPCIONAL
Tipo:number
ID do desconto a ser aplicado ao agendamento

Este parâmetro representa o identificador único do desconto que será aplicado ao agendamento. O ID do desconto deve ser um número inteiro que identifica um desconto específico no sistema.

Observação: Para encontrar o ID do desconto, para acessar a página de listar finanças.

notesOPCIONAL
Tipo:string
Observações sobre o agendamento

Request URL

https://api-dev.imagemais.com/api/appointments
curl -X 'POST' \
  'https://api-dev.imagemais.com/api/appointments' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjMyLCJhY2NvdW50SWQiOjEsImlhdCI6MTc2NjQyMDQwOCwiZXhwIjoxNzY2NDI0MDA4LCJhdWQiOiJodHRwczovL2FwaS1kZXYuaW1hZ2VtYWlzLmNvbSIsImlzcyI6Imh0dHBzOi8vYXBwLWRldi5pbWFnZW1haXMuY29tIn0.IS0KJIy1dlucxMQJ3KPbLPLx9CilbdetewL6194ou_Q' \
  -H 'Content-Type: application/json' \
  -d '{
  "patient": {
    "name": "João Silva",
    "phone": "(81) 99999-9999",
    "dateBirth": "1990-01-01",
    "cpf": "123.456.789-00"
  },
  "procedures": [
    {
      "id": 3200
    },
    {
      "id": 3201,
      "discountId": 2
    }
  ],
  "doctorId": 1,
  "date": "2025-12-23",
  "startTime": "09:00",
  "endTime": "09:15",
  "notes": "Observações sobre o agendamento"
}'
{
  "patient": {
    "name": "João Silva",
  ...
{
  "patient": {
    "name": "João Silva",
    "phone": "(81) 99999-9999",
    "dateBirth": "1990-01-01",
    "cpf": "123.456.789-00"
  },
  "procedures": [
    {
      "id": 3200
    },
    {
      "id": 3600,
      "discountId": 7
    }
  ],
  "doctorId": 1,
  "date": "2025-12-23",
  "startTime": "09:00",
  "endTime": "09:15",
  "notes": "Observações sobre o agendamento"
}

Respostas

[
  {
    "id": 58,
  ...
[
  {
    "id": 58,
    "date": "2025-12-25T00:00:00.000Z",
    "startTime": "09:00",
    "endTime": "09:05",
    "notes": "Observações sobre o agendamento",
    "accountId": 1,
    "createdAt": "2025-12-22T16:35:33.920Z",
    "updatedAt": "2025-12-22T16:35:33.920Z",
    "deletedAt": null,
    "doctor": {
      "id": 1,
      "name": "Dr Victor"
    },
    "patient": {
      "dateBirth": "1990-01-01T00:00:00.000Z",
      "id": 9253,
      "name": "João Silva",
      "cpf": null,
      "contact": {
        "phone": "(81) 99999-9999"
      }
    },
    "status": {
      "id": 1,
      "name": "Agendado",
      "color": "#ffc107"
    },
    "appointmentProcedures": {
      "price": "252",
      "discountsAppointmentProcedures": [
        {
          "discountId": 7,
          "value": "50.4",
          "discount": {
            "id": 7,
            "name": "Desconto de 20%",
            "fixed": null,
            "percentage": 20,
            "expirationDate": null
          }
        }
      ],
      "procedure": {
        "id": 2,
        "name": "17 BETA ESTRADIOL E2 - SEGUNDA AMOSTRA",
        "price": "252"
      }
    }
  }
]
{
  "message": [
    "startTime should not be empty",
  ...
{
  "message": [
    "startTime should not be empty",
    "startTime must be a string",
    "endTime should not be empty",
    "endTime must be a string"
  ],
  "error": "Bad Request",
  "statusCode": 400
}
{
  "message": [
    "date should not be empty",
  ...
{
  "message": [
    "date should not be empty",
    "A data deve ser hoje ou uma data futura",
    "A data deve ser uma data válida"
  ]
}
{
  "message": [
    "patient.A data de nascimento é necessária",
  ...
{
  "message": [
    "patient.A data de nascimento é necessária",
    "patient.dateBirth must be a valid ISO 8601 date string",
    "patient.O telefone é necessário",
    "patient.phone must be a string",
    "patient.O nome é necessário",
    "patient.name must be a string"
  ]
}
{
  "message": [
    "Procedimentos não encontrados",
  ...
{
  "message": [
    "Procedimentos não encontrados",
    "Pelo menos um procedimento deve ser informado",
    "Os procedimentos são necessários"
  ],
  "error": "Bad Request",
  "statusCode": 400
}
{
  "message": "Horários 09:00 já estão ocupados por outros agendamentos",
  "error": "Conflict",
  ...
{
  "message": "Horários 09:00 já estão ocupados por outros agendamentos",
  "error": "Conflict",
  "statusCode": 409
}
{
  "message": "Médico não encontrado",
  "error": "Not Found",
  ...
{
  "message": "Médico não encontrado",
  "error": "Not Found",
  "statusCode": 404
}
{
  "statusCode": 401,
  "message": "invalid token"
  ...
{
  "statusCode": 401,
  "message": "invalid token"
}
{
  "statusCode": 401,
  "message": "jwt expired"
  ...
{
  "statusCode": 401,
  "message": "jwt expired"
}
{
  "statusCode": 500,
  "message": "Internal server error"
  ...
{
  "statusCode": 500,
  "message": "Internal server error"
}