POST Criar Procedimento
Cria um novo procedimento (exame) na conta, opcionalmente vinculando um tipo e fornecedores.
Esta rota requer o header Authorization: Bearer {accessToken}
Endpoint
POST https://api-dev.imagemais.com.br/api/procedures
Corpo da Requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | ✅ | Nome do procedimento |
price | number | ✅ | Preço (≥ 0, até 2 casas decimais) |
laudoLocal | boolean | ❌ | Se o laudo é feito localmente |
typeId | number | ❌ | ID do tipo de procedimento |
procedureSuppliers | array | ❌ | Lista de fornecedores vinculados ao procedimento |
procedureSuppliers[].supplierId | number | ✅* | ID do fornecedor (≥ 1) — obrigatório dentro de cada item |
procedureSuppliers[].cost | number | ✅* | Custo do fornecedor (≥ 0, até 2 casas decimais) |
procedureSuppliers[].estimate | number | ❌ | Prazo estimado (inteiro ≥ 0) |
procedureSuppliers[].code | string | ❌ | Código do procedimento no fornecedor |
Todos os supplierId precisam pertencer à conta e não podem se repetir na mesma requisição, caso contrário retorna 400 Bad Request.
Requisição
curl -X 'POST' \
'https://api-dev.imagemais.com.br/api/procedures' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {accessToken}' \
-H 'Content-Type: application/json' \
-d '{
"name": "HEMOGRAMA COMPLETO",
"price": 35.00,
"laudoLocal": false,
"typeId": 2,
"procedureSuppliers": [
{ "supplierId": 3, "cost": 12.00, "estimate": 24, "code": "LAB-001" }
]
}'
Respostas
201 Criado
{
"id": 120,
"name": "HEMOGRAMA COMPLETO",
"synonyms": null,
"price": "35",
"accountId": 1,
"createdAt": "2026-01-15T13:43:13.337Z",
"updatedAt": "2026-01-15T13:43:13.337Z",
"deletedAt": null,
"laudoLocal": false,
"typeId": 2,
"referralId": null,
"procedureSupliers": null
}
O retorno inclui o campo procedureSupliers (grafado assim, com valor null). Os fornecedores enviados são persistidos, mas não vêm nesta resposta — para consultá-los, use Buscar Procedimento por ID.
Após a criação, um listener assíncrono (evento procedure.created) chama a OpenAI para gerar 10 sinônimos do nome do exame, preenchendo o campo synonyms alguns segundos depois — ele vem null na resposta imediata da criação. O mesmo processo gera um embedding usado pela busca semântica (searchWithAi=true em Listar Procedimentos).
400 Fornecedor inválido
{
"message": "Um dos fornecedores listados não existem",
"statusCode": 400
}