Skip to main content

POST Criar Procedimento

Cria um novo procedimento (exame) na conta, opcionalmente vinculando um tipo e fornecedores.

Autenticação necessária

Esta rota requer o header Authorization: Bearer {accessToken}


Endpoint

POST https://api-dev.imagemais.com.br/api/procedures

Corpo da Requisição

CampoTipoObrigatórioDescrição
namestringNome do procedimento
pricenumberPreço (≥ 0, até 2 casas decimais)
laudoLocalbooleanSe o laudo é feito localmente
typeIdnumberID do tipo de procedimento
procedureSuppliersarrayLista de fornecedores vinculados ao procedimento
procedureSuppliers[].supplierIdnumber✅*ID do fornecedor (≥ 1) — obrigatório dentro de cada item
procedureSuppliers[].costnumber✅*Custo do fornecedor (≥ 0, até 2 casas decimais)
procedureSuppliers[].estimatenumberPrazo estimado (inteiro ≥ 0)
procedureSuppliers[].codestringCódigo do procedimento no fornecedor
Validação de fornecedores

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
}
Campo procedureSupliers

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.

Geração assíncrona de sinônimos (IA)

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
}