POST/api/budgets

Criar Orçamento

Cria um novo orçamento

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}
Content-TypeOBRIGATÓRIO
Tipo:string
Tipo de conteúdo (application/json)

Parâmetros

patientOBRIGATÓRIO
Tipo:object
Dados do paciente (objeto com name, dateBirth, gender, rg, cpf, address, contact)

Este parâmetro é um objeto que contém todos os dados do paciente, incluindo informações pessoais, endereço e contato. O objeto patient é obrigatório e deve conter pelo menos o campo name.

Campos do objeto patient:

  • name (obrigatório) - Nome do paciente
  • cpf (Opcional) - CPF do paciente
  • contact (obrigatório) - Objeto com phone

Atenção: Caso o campo name seja removido da requisição, não seja fornecido ou esteja vazio, a API retornará um erro 400 Bad Request

Observação sobre o CPF: O campo cpf é opcional. Caso não seja fornecido na requisição, o orçamento será criado normalmente. No entanto, se o campo cpf for informado de forma inválida (formato incorreto, quantidade de caracteres insuficiente ou valores não numéricos), a API retornará um erro 400 Bad Request.

proceduresOBRIGATÓRIO
Tipo:array
Array de procedimentos. Cada item deve conter { id: number, price: number, }

Este parâmetro é um array que contém os procedimentos a serem incluídos no orçamento. Cada item do array representa um procedimento com suas informações.

Campos de cada item do array:

  • id (obrigatório) - ID do procedimento
  • discountId (opcional) - ID do desconto a ser aplicado ao procedimento
discountIdOPCIONAL
Tipo:number
ID do desconto a ser aplicado ao orçamento

Este parâmetro é opcional e representa o ID do desconto a ser aplicado ao orçamento. Se fornecido, o desconto será aplicado ao valor total do orçamento.

Tipo:

discountId: number

Atenção: Caso o valor passado seja inválido ou o desconto não exista no sistema, a API retornará um erro 404 Not Found com a mensagem: "Desconto não encontrado".

Para acessar os valores do discountId aperte aqui :

Request URL

https://api-dev.imagemais.com/api/budgets
curl -X 'POST' \
  'https://api-dev.imagemais.com/api/budgets' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer string' \
  -H 'Content-Type: application/json' \
  -d '{
  "patient": {
    "name": "João da Silva",
    "cpf": "11111111111",
    "contact": {
      "phone": "81999999999"
    }
  },
  "procedures": [
    {
      "id": 1,
    },
    {
      "id": 2,
      "discountId": 2
    }
  ],
  "discountId": 2
}'
{
  "patient": {
    "name": "João da Silva",
  ...
{
  "patient": {
    "name": "João da Silva",
    "cpf": "12345678900",
    "contact": {
      "phone": "81999999999"
    }
  },
  "procedures": [
    {
      "id": 1,
      "discountId": 2
    },
    {
      "id": 2,
      "discountId": 3
    }
  ],
  "discountId": 2
}

Respostas

{
  "id": 10684,
  "user": {
  ...
{
  "id": 10684,
  "user": {
    "id": 10,
    "name": "Lucas"
  },
  "budgetsProcedures": [
    {
      "price": "252"
    },
    {
      "price": "252"
    }
  ],
  "patient": {
    "id": 9264,
    "name": "João da Silva",
    "contact": {
      "phone": "81999999999"
    }
  },
  "status": {
    "name": "PENDING"
  },
  "createdAt": "2025-12-03T18:08:51.438Z",
  "updatedAt": "2025-12-03T18:08:51.438Z",
  "deletedAt": null
}
{
  "message": [
    "patient.cpf must be longer than or equal to 11 characters",
  ...
{
  "message": [
    "patient.cpf must be longer than or equal to 11 characters",
    "patient.cpf must be a number string"
  ],
  "error": "Bad Request"
}
{
  "message": [
    "patient.name should not be empty",
  ...
{
  "message": [
    "patient.name should not be empty",
    "patient.name must be shorter than or equal to 200 characters",
    "patient.name must be a string"
  ],
  "error": "Bad Request"
}
{
  "message": [
    "Desconto não encontrado"
  ...
{
  "message": [
    "Desconto não encontrado"
  ],
  "error": "Not Found"
}
{
  "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"
}