POST Criar Orçamento
Cria um novo orçamento. O paciente é criado (se não tiver id) ou atualizado (se tiver id), e o orçamento nasce com status PENDING. Após a criação, dispara automaticamente a notificação e a criação da proposta.
Autenticação necessária
Esta rota requer o header Authorization: Bearer {accessToken}
Endpoint
POST https://api-dev.imagemais.com.br/api/budgets
Corpo da Requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
patient | object | ✅ | Dados do paciente. Com id → atualiza; sem id → cria novo |
patient.id | number | ❌ | ID do paciente existente (para atualizar) |
patient.name | string | ✅* | Nome completo (obrigatório ao criar paciente novo) |
patient.dateBirth | string | ❌ | Data de nascimento (YYYY-MM-DD, hoje ou anterior) |
patient.gender | object | ❌ | Gênero. Ex.: { "name": "M" } |
patient.cpf | string | ❌ | CPF do paciente (exatamente 11 dígitos) |
patient.contact | object | ❌ | Dados de contato (telefone, e-mail) |
patient.address | object | ❌ | Dados de endereço |
procedures | array | ✅ | Lista de procedimentos do orçamento |
procedures[].id | number | ✅ | ID do procedimento |
procedures[].discountId | number | ❌ | ID do desconto individual do procedimento |
procedures[].discountValue | number | ❌ | Valor de desconto customizado para o procedimento |
discountId | number | ❌ | ID de um desconto geral aplicado a todo o orçamento |
budgetRequestUuid | string | ❌ | UUID (v7) da requisição de orçamento de origem |
Descontos
Se um discountId geral for informado, ele tem precedência e os descontos individuais por procedimento são ignorados. Descontos expirados retornam 400 Bad Request.
Requisição
curl -X 'POST' \
'https://api-dev.imagemais.com.br/api/budgets' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {accessToken}' \
-H 'Content-Type: application/json' \
-d '{
"patient": {
"name": "João da Silva",
"dateBirth": "2000-01-01",
"cpf": "12345678900",
"gender": { "name": "M" },
"contact": { "phone": "81999999999" }
},
"procedures": [
{ "id": 1, "price": 252 }
]
}'
Respostas
201 Criado
{
"id": 25267,
"user": {
"id": 1,
"name": "Roberto Luis"
},
"budgetsProcedures": [
{
"price": "252"
}
],
"patient": {
"id": 17541,
"name": "João da Silva",
"contact": {
"phone": "81999999999"
}
},
"status": {
"name": "PENDING"
},
"createdAt": "2026-01-15T13:43:13.337Z",
"updatedAt": "2026-01-15T13:43:13.337Z",
"deletedAt": null
}
400 Desconto expirado
{
"message": "Desconto expirado",
"error": "Bad Request",
"statusCode": 400
}
500 Erro ao criar
{
"message": "Erro ao criar orçamento",
"error": "Internal Server Error",
"statusCode": 500
}