IntegraçõesAPI LeoRad AI

API LeoRad AI

REST

Guia de integração com a API REST de IA da LeoRad: geração e edição de laudos, transcrição de áudio, revisão, tutoria e OCR de documentos.

URL base:https://api-ai.leorad.com.br

#Visão Geral

A API LeoRad AI integra-se à plataforma LeoRad, uma solução especializada em análise, processamento e interação com laudos radiológicos. Desenvolvida com assistentes de inteligência artificial treinados para o domínio da radiologia, a plataforma permite que o radiologista foque na análise das imagens, otimizando o tempo de documentação e aumentando a eficiência do fluxo de trabalho.

A API segue o padrão REST, utiliza autenticação baseada em tokens e é ideal para integração com sistemas que precisam gerar, editar, revisar ou transcrever laudos, bem como extrair texto de documentos por OCR.

Métodos disponíveis

Todos os endpoints utilizam a URL base https://api-ai.leorad.com.br. A autenticação é obrigatória em todas as requisições.

#Autenticação

A plataforma LeoRad utiliza dois tipos de tokens para diferentes cenários de integração. Entender a distinção entre eles é essencial para utilizar a API corretamente.

Token de Login
Identifica o usuário na plataforma web. Usado para autenticação direta e para obter o Token de API.
Token de API
Token JWT obtido a partir do Token de Login. Necessário no cabeçalho de todas as chamadas à API LeoRad AI.

#Token de Login

O Token de Login é exclusivo para cada usuário da plataforma LeoRad. Ele é utilizado para autenticar o acesso à aplicação web e para obter o Token de API nas integrações REST.

Como obter seu Token de Login

  1. 1
    Crie sua conta: Acesse app.leorad.com.br e crie sua conta caso ainda não possua uma.
  2. 2
    Acesse seu Perfil: Após fazer login, clique no ícone de engrenagem no menu lateral para acessar as configurações do seu perfil.
  3. 3
    Gere o Token: Dentro do Perfil, selecione a opção "Token" e clique em "Gerar Token". O token será exibido e estará pronto para uso.

Acesso direto à aplicação web

O Token de Login pode ser utilizado para abrir a aplicação LeoRad diretamente, incorporando-o na URL de acesso:

url
https://app.leorad.com.br/<SEU_TOKEN_DE_LOGIN>
Mantenha seu Token de Login em segredo. Não compartilhe com terceiros. Caso seja comprometido, você pode revogar e gerar um novo token a qualquer momento diretamente na interface do aplicativo.

#Token de API

Para utilizar a API LeoRad AI, é necessário obter um Token de API (JWT). Esse token é gerado a partir do seu Token de Login e deve ser incluído no cabeçalho de todas as requisições à API.

Obtendo o Token de API

Faça uma requisição POST para o endpoint abaixo, substituindo <SEU_TOKEN_DE_LOGIN> pelo token obtido na seção anterior:

POSThttps://api-app.leorad.com.br/legacy-api/public/token-login/<SEU_TOKEN_DE_LOGIN>
curl
curl -X POST \
  "https://api-app.leorad.com.br/legacy-api/public/token-login/<SEU_TOKEN_DE_LOGIN>"

Exemplo de resposta

json
{
  "apiToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
}

Utilizando o Token de API

O apiToken retornado deve ser incluído no cabeçalho Authorization de todas as requisições à API LeoRad AI, precedido da palavra Bearer:

http
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...
O Token de API tem validade limitada e identifica o usuário — o e-mail da conta é lido do próprio token. Caso receba um erro 401 Unauthorized, solicite um novo token repetindo o fluxo de autenticação.

#Métodos da API

Todos os endpoints abaixo utilizam a URL base https://api-ai.leorad.com.br e exigem autenticação via Token de API no cabeçalho Authorization. O usuário é identificado pelo token — não é necessário enviar o campo user no corpo da requisição.

As requisições podem ser enviadas como multipart/form-data (obrigatório quando incluírem arquivos binários) ou como application/json para parâmetros de texto. Toda resposta inclui o cabeçalho X-Request-Id, útil para suporte.

Consumindo respostas em streaming

Os endpoints marcados como Streaming devolvem text/plain; charset=utf-8 em pedaços, à medida que o modelo gera o texto — o que reduz drasticamente o tempo até o primeiro caractere. Se preferir uma resposta única, envie stream=false (no corpo, na query string ou no cabeçalho X-Stream: false).

javascript
// Leitura de uma resposta em streaming (text/plain)
const reader = response.body.getReader();
const decoder = new TextDecoder();
let texto = '';

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  const chunk = decoder.decode(value, { stream: true });
  texto += chunk;
  // Exiba o chunk assim que ele chega para dar retorno imediato ao usuário
  console.log(chunk);
}

#POST /assistant

StreamingConsome créditosmultipart/form-dataapplication/json

Gera um laudo radiológico completo a partir do ditado do médico (áudio), de instruções em texto e, opcionalmente, de exames anexados. Quando um arquivo de áudio é enviado, o endpoint executa duas etapas: a transcrição (STT) e, em seguida, a geração do laudo. A resposta é transmitida via streaming, permitindo exibição progressiva do conteúdo.

POSThttps://api-ai.leorad.com.br/assistant
ParâmetroTipoRequeridoDescrição
agentstringNãoAgente de IA a ser utilizado. Quando omitido, aplica-se o agente configurado no perfil do usuário e, na ausência dele, fastAgent. O agente determina a especialidade, a profundidade da análise e o custo em créditos da requisição — a lista completa está logo abaixo.
orderContentstringNãoInstruções em texto para a geração do laudo (o "ditado" escrito). Pode ser usado sozinho ou em conjunto com o áudio. É também por este campo que os dados do exame são enviados ao agente — indicação clínica, pedido médico, medidas, sexo, idade, prioridade, contraste, exame e laudo anteriores. São os mesmos dados dos parâmetros opcionais da integração por iframe: lá eles chegam pela query string e o aplicativo os converte em um bloco de texto no topo da caixa de mensagem, que é exatamente o que vai neste campo. Na API, monte esse bloco você mesmo — o formato está descrito abaixo.
editorContentstringNãoConteúdo HTML já presente no editor (modelo/máscara ou laudo parcial). Serve como estrutura base para o laudo gerado.
filesbinary | arrayNãoÁudio do ditado e/ou anexos (imagens, PDF). Formatos de áudio: flac, m4a, mp3, mp4, mpeg, mpga, oga, ogg, wav, webm. Em requisições JSON, aceita também [{ "url": "https://…" }] — útil para arquivos grandes, já que o corpo da requisição é limitado a 6 MB.
languagestringNãoIdioma do laudo gerado. Valores: pt-BR (padrão), pt-PT, en, es, fr, it, de, ar, pl.
languageSpeechstringNãoIdioma do áudio para o reconhecimento de voz. Exemplos: pt-BR, pt-PT, en, es. Quando omitido, usa a preferência do usuário.
modelSpeechstringNãoVersão do LEO Speech Engine usada na transcrição. Valores: v1, v2, v3, v4. Quando omitido — ou quando a versão pedida estiver desativada — aplica-se o padrão configurado para a conta.
termsSpeechstringNãoTermos frequentes na fala do usuário, usados para melhorar a precisão do reconhecimento de voz.
conversationIdstringNãoSomente para fastAgent e fastTurbo: continua uma conversa anterior, preservando o contexto. O identificador é devolvido no registro de execução da chamada anterior.
streambooleanNãoEnvie false para receber o laudo em uma única resposta, em vez de streaming.

Agentes disponíveis

São os mesmos agentes oferecidos no aplicativo LeoRad, com o mesmo custo em créditos. Os agentes fastAgent e fastTurbo mantêm memória de conversa (ver conversationId); os demais tratam cada requisição de forma independente.

Rápidos

fastAgentFast1 créditopadrão
Análise radiológica rápida para todas as modalidades

Modelo otimizado para velocidade e eficiência energética. Atende todas as modalidades de exames (US, RX, TC, RM, MMG, etc.) com foco na agilidade. Ideal para laudos de rotina que exigem resposta rápida com menor consumo de recursos.

fastTurboFast Turbo1 crédito
Análise radiológica ultra rápida para todas as modalidades

Modelo otimizado para ultra velocidade e eficiência energética. Atende todas as modalidades de exames (US, RX, TC, RM, MMG, etc.) com foco na agilidade. Ideal para laudos de rotina que exigem resposta rápida com menor consumo de recursos.

Geral

generalGeral3 créditos
Análise completa para todas as modalidades radiológicas

Oferece interpretação abrangente para todos os tipos de exames (US, RX, TC, RM, MMG, etc.). Combina análise diagnóstica com explicações didáticas detalhadas, ideal para casos que requerem correlação clínica e contextualização diagnóstica em qualquer modalidade de imagem.

Direct — raciocínio avançado

directAgent2Direct Fast2 créditos
Raciocínio avançado com capacidade de análise de imagens

Modelo desenvolvido para casos complexos que demandam análise detalhada. Apresenta melhor desempenho na interpretação de imagens médicas em relação aos outros modelos, adequado para diagnósticos diferenciais e situações que requerem maior precisão diagnóstica. É a opção mais rápida e econômica da linha Direct.

directAgentDirect3 créditos
Raciocínio avançado com capacidade de análise de imagens

Modelo desenvolvido para casos complexos que demandam análise detalhada. Apresenta melhor desempenho na interpretação de imagens médicas em relação aos outros modelos, adequado para diagnósticos diferenciais e situações que requerem maior precisão diagnóstica.

directAgentProDirect Pro5 créditos
Raciocínio avançado com capacidade de análise de imagens

Mesma linha do Direct, na configuração de maior capacidade de raciocínio. Indicado para os casos mais difíceis, em que a profundidade da análise compensa o tempo de resposta e o custo mais altos.

Especialidades

endoscopyEndoscopia3 créditos
Especialista em diagnóstico endoscópico

Focado na interpretação de exames endoscópicos do trato gastrointestinal. Identifica lesões, alterações mucosas e fornece correlação com achados histopatológicos, auxiliando no diagnóstico de patologias digestivas.

densitometryDensitometria3 créditos
Análise especializada em densidade óssea

Dedicado à avaliação de exames de densitometria óssea (DEXA). Calcula scores precisos, classifica osteoporose/osteopenia e fornece orientações para acompanhamento e tratamento de distúrbios do metabolismo ósseo. Pode processar imagens das tabelas oriundas dos aparelhos de DEXA.

ultrassomUltrassom2 créditos
Especialista em laudos ultrassonográficos

Modelo focado na elaboração de laudos de ultrassom em todas as especialidades. Auxilia na estruturação e redação de relatórios profissionais a partir das transcrições médicas, abrangendo ultrassom obstétrico, abdominal, pélvico, tireoide e demais modalidades ultrassonográficas.

ultrassom2Ultrassom PRO3 créditos
Laudos ultrassonográficos com raciocínio avançado

Mesma especialidade do Ultrassom, processada pelos modelos de raciocínio avançado da linha Direct — com análise de imagem nativa. Indicado para exames ultrassonográficos que exigem maior profundidade de análise.

anamneseAnamnese3 créditos
Especialista em histórico clínico e consulta médica

Modelo dedicado ao processamento e estruturação de informações da anamnese a partir de áudios de consultas médicas. Organiza o histórico do paciente, queixas principais, antecedentes e evolução clínica de forma clara e objetiva para auxiliar na elaboração de relatórios médicos completos.

pathologyPatologia3 créditos
Especialista em diagnóstico patológico

Modelo dedicado ao processamento e estruturação de informações de patologias a partir de transcrições médicas. Organiza as informações de patologias, como lesões e alterações, fornecendo correlação com achados histopatológicos e auxiliando no diagnóstico.

radiographyRadiografia1 crédito
Especialista em diagnóstico radiográfico

Modelo dedicado ao processamento e estruturação de informações de radiografia a partir de transcrições médicas. Organiza as informações do exame, como lesões e alterações, fornecendo correlação com os achados radiográficos.

echocardioEcocardio3 créditos
Especialista em ecocardiograma

Calcula todos os parâmetros derivados e classificações do ecocardiograma (ASC, FEVE, massa, IMVE, ERP, E/e′, PSAP, geometria do VE, função diastólica ASE 2016 e graus de estenose).

Como enviar os dados do exame no orderContent
O aplicativo LeoRad monta um bloco de texto com um dado por linha e o coloca antes do pedido do médico. Reproduza o mesmo formato na API — cada linha corresponde a um parâmetro da integração por iframe:
  • ind (indicação clínica), part (pedido médico) e mea (medidas) entram sem rótulo, apenas o valor;
  • os demais entram rotulados: Sexo: Feminino, Idade: 45 anos (age + age-unit por extenso), Prioridade: Urgente, Contraste: Sim — 10ml de gadolínio (contrast + contrast-details), Exame Anterior: …, Laudo Anterior: …;
  • mod (modelo/máscara) não vai aqui — é o conteúdo do editorContent; files (anexos) vai no parâmetro files.
Valores em HTML (prev-report, por exemplo) devem ser convertidos para texto puro. Depois do bloco, em uma nova linha, vem a instrução livre do médico.
Prefira formatos de áudio compactados como mp3 ou ogg para reduzir o tempo de processamento e os custos da requisição. O corpo da requisição é limitado a 6 MB; acima disso, envie os arquivos por URL.

Exemplo de requisição (JavaScript)

javascript
const formData = new FormData();
formData.append('agent', 'fastAgent');
formData.append('language', 'pt-BR');
formData.append('languageSpeech', 'pt-BR');
formData.append('modelSpeech', 'v2');
formData.append('files', audioBlob, 'ditado.mp3');

// Dados do exame + pedido do médico, um por linha, no mesmo formato
// que a integração por iframe usa (ver /devs/iframe#parametros-opcionais).
formData.append('orderContent', [
  'Dor abdominal há 3 dias',            // ind  — sem rótulo
  'US de abdome total',                 // part — sem rótulo
  'Fígado 14,2 cm; baço 9,1 cm',        // mea  — sem rótulo
  'Sexo: Feminino',                     // sex
  'Idade: 45 anos',                     // age + age-unit
  'Prioridade: Urgente',                // prior
  'Contraste: Não',                     // contrast (+ contrast-details)
  'Exame Anterior: TC de abdome em 2024',
  'Laudo Anterior: Fígado de dimensões normais...',
  'Compare com o exame anterior e destaque as mudanças.',
].join('
'));

const response = await fetch('https://api-ai.leorad.com.br/assistant', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <SEU_TOKEN_DE_API>',
  },
  body: formData,
});

if (!response.ok) {
  throw new Error(await response.text());
}

// A resposta chega em chunks de texto
const reader = response.body.getReader();
const decoder = new TextDecoder();
let laudo = '';

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  laudo += decoder.decode(value, { stream: true });
}

console.log('Laudo gerado:', laudo);

#POST /speech

Resposta únicaNão consome créditosmultipart/form-dataapplication/json

Recebe um arquivo de áudio e devolve a transcrição do conteúdo falado como texto puro, sem qualquer formatação de laudo. Útil para capturar o ditado do radiologista e tratá-lo no seu próprio sistema.

POSThttps://api-ai.leorad.com.br/speech
ParâmetroTipoRequeridoDescrição
filebinarySimArquivo de áudio a ser transcrito. Formatos suportados: flac, m4a, mp3, mp4, mpeg, mpga, oga, ogg, wav, webm. O campo files também é aceito, como item único ou array.
languageSpeechstringNãoIdioma para o reconhecimento de voz. Exemplos: pt-BR, pt-PT, en, es. Quando omitido, usa a preferência do usuário.
promptstringNãoPrompt adicional para orientar o modelo na transcrição (por exemplo, termos técnicos recorrentes). Quando omitido, usa o prompt configurado para a conta.
O áudio é limitado a 4,5 MB. Acima disso a requisição é recusada com 413 Payload Too Large — divida o áudio em trechos menores ou use um formato mais compactado.

Resposta

text
Ultrassonografia de abdome total. Fígado de dimensões normais, com contornos regulares e ecotextura homogênea.

Exemplo de requisição (JavaScript)

javascript
const formData = new FormData();
formData.append('languageSpeech', 'pt-BR');
formData.append('file', audioBlob, 'ditado.mp3');

const response = await fetch('https://api-ai.leorad.com.br/speech', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <SEU_TOKEN_DE_API>',
  },
  body: formData,
});

// A resposta é o texto puro da transcrição
const transcricao = await response.text();
console.log('Transcrição:', transcricao);

#POST /reviewer

Resposta únicaNão consome créditosapplication/json

Revisa um laudo pronto e devolve, em JSON estruturado, as correções de gramática e digitação (como pares "errado ➡️ certo", prontos para substituição automática), a informação sobre uso de contraste e as inconsistências encontradas no texto. Ideal para controle de qualidade antes da assinatura.

POSThttps://api-ai.leorad.com.br/reviewer
ParâmetroTipoRequeridoDescrição
editorContentstringSimTexto ou HTML do laudo a ser revisado. Limite de 100.000 caracteres.
languagestringNãoIdioma da revisão. Valores: pt-BR (padrão), pt-PT, en, es, fr, it, de, ar, pl.
contextoarrayNãoDados do exame vindos do RIS/PACS (sexo, idade, indicação clínica, contraste), no formato [{ "rotulo": "Contraste", "valor": "Iodado" }]. Quando enviados, a revisão cruza esses dados com o texto do laudo e aponta divergências.
Em result.grammar cada item é uma troca literal no formato errado ➡️ certo, pensada para ser aplicada diretamente sobre o texto. Já result.errors traz observações em linguagem natural, para leitura humana. O campo contrast assume "Sim", "Não" ou "Não informado".

Exemplo de resposta

json
{
  "service": "leorad-ai-processor",
  "message": "Revisão processada com sucesso",
  "timestamp": "2025-01-20T14:32:07.812Z",
  "requestId": "8f1c0e4a-...",
  "fallback": false,
  "result": {
    "grammar": [
      "dimenções ➡️ dimensões"
    ],
    "contrast": "Não informado",
    "errors": [
      "A técnica descreve exame sem contraste, mas as conclusões citam realce pós-contraste."
    ]
  }
}

Exemplo de requisição (JavaScript)

javascript
const response = await fetch('https://api-ai.leorad.com.br/reviewer', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <SEU_TOKEN_DE_API>',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    language: 'pt-BR',
    editorContent: '<p>Fígado de dimenções normais, com contornos regulares.</p>',
  }),
});

const { result } = await response.json();
console.log('Correções:', result.grammar);
console.log('Contraste:', result.contrast);
console.log('Inconsistências:', result.errors);

#POST /tutor

StreamingNão consome créditosapplication/json

Produz uma revisão comentada do laudo, com fins didáticos — apontando o que pode ser melhorado, diagnósticos diferenciais a considerar e problemas de estrutura — seguida de uma versão reescrita do laudo inteiro. A resposta é texto em Markdown transmitido via streaming.

POSThttps://api-ai.leorad.com.br/tutor
ParâmetroTipoRequeridoDescrição
editorContentstringSimTexto ou HTML do laudo a ser analisado. Limite de 100.000 caracteres.
languagestringNãoIdioma dos comentários e do laudo sugerido. Valores: pt-BR (padrão), pt-PT, en, es, fr, it, de, ar, pl.
streambooleanNãoEnvie false para receber todo o texto em uma única resposta.
O laudo sugerido vem delimitado por <report> e </report> ao final da resposta — o que permite exibir os comentários e oferecer a substituição do laudo separadamente.

Exemplo de requisição (JavaScript)

javascript
const response = await fetch('https://api-ai.leorad.com.br/tutor', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <SEU_TOKEN_DE_API>',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    language: 'pt-BR',
    editorContent: '<p>Fígado de dimensões normais, com contornos regulares.</p>',
  }),
});

// Resposta em streaming (Markdown). O laudo sugerido vem dentro de <report>…</report>
const texto = await response.text();
const laudoSugerido = texto.match(/<report>([\s\S]*?)<\/report>/)?.[1] ?? '';

console.log('Comentários + laudo:', texto);
console.log('Somente o laudo sugerido:', laudoSugerido);

#POST /scan

StreamingNão consome créditosmultipart/form-dataapplication/json

Extrai o texto contido em imagens e documentos por meio de OCR (reconhecimento óptico de caracteres). Indicado para digitalizar laudos e pedidos médicos em papel, ou para ler exames anteriores em PDF. Aceita vários arquivos por requisição e devolve o texto via streaming.

POSThttps://api-ai.leorad.com.br/scan
ParâmetroTipoRequeridoDescrição
filebinarySimImagem ou PDF a ser processado. Em multipart/form-data o campo pode ser repetido para enviar vários arquivos. Alternativamente, envie JSON com files: [{ "url": "https://…" }] — recomendado para lotes grandes, já que o corpo da requisição é limitado a 6 MB.
agentstringNãoMotor de OCR a ser utilizado. Um valor não reconhecido cai em V1.
V1OCR por modelo multimodal — todos os arquivos em uma única leitura. Melhor para documentos com layout complexo.
V2Agente de OCR especializado da LeoRad, com aplicação das substituições de texto configuradas na conta.
V3OCR dedicado de alta fidelidade, arquivo a arquivo. Melhor para documentos longos e digitalizações densas.
languagestringNãoIdioma do documento. Valores: pt-BR (padrão), pt-PT, en, es, fr, it, de, ar, pl.
streambooleanNãoEnvie false para receber todo o texto extraído em uma única resposta.
O agente V3 não aceita arquivos de áudio — eles são descartados antes do processamento. Se nenhum arquivo compatível restar, a requisição retorna 400 Bad Request.

Exemplo de requisição (JavaScript)

javascript
const formData = new FormData();
formData.append('agent', 'V3');
// O campo "file" pode ser repetido para enviar vários arquivos
formData.append('file', pagina1, 'laudo-p1.jpg');
formData.append('file', pagina2, 'laudo-p2.jpg');

const response = await fetch('https://api-ai.leorad.com.br/scan', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <SEU_TOKEN_DE_API>',
  },
  body: formData,
});

// Resposta em streaming: o texto extraído chega conforme é reconhecido
const texto = await response.text();
console.log('Texto extraído:', texto);

// Alternativa para lotes grandes: enviar os arquivos por URL
// body: JSON.stringify({ agent: 'V3', files: [{ url: 'https://…/laudo.pdf' }] })

#Erros

A API usa os códigos de status HTTP convencionais. Erros de processamento devolvem um corpo JSON descritivo — exceto quando ocorrem durante um streaming já iniciado, caso em que o status já foi enviado como 200 e a resposta simplesmente termina com o conteúdo produzido até ali.

CódigoSignificado
400Parâmetro obrigatório ausente ou inválido (agente desconhecido, laudo vazio, nenhum arquivo compatível).
401Token de API ausente, inválido ou expirado.
403A conta não tem permissão para usar a API ou está sem créditos disponíveis.
413Arquivo acima do limite aceito pelo endpoint.
422Arquivo enviado por URL não pôde ser baixado (URL expirada ou objeto inexistente).
500Falha interna do serviço.
502O provedor de IA não respondeu ou devolveu um erro. Tente novamente.

Formato do corpo de erro

json
{
  "service": "Assistant",
  "error": "AIError",
  "message": "Descrição legível do problema",
  "provider": "vertex-ai"
}
Registre o cabeçalho X-Request-Id devolvido em cada resposta: é por ele que a equipe de suporte localiza a execução nos registros do serviço.

#Migração da API anterior

A API de IA da LeoRad migrou do serviço voice-processor ( https://voice-processor.leorad.com.br) para o ai-processor (https://api-ai.leorad.com.br). Se você já integrava com a versão anterior, estes são os pontos de atenção:

Nova URL base
Substitua https://voice-processor.leorad.com.br por https://api-ai.leorad.com.br.
Rotas sem o prefixo /ai
/ai/assistant/assistant, /ai/speech/speech, /ai/scan/scan.
O revisor mudou de rota e de resposta
/ai/review foi substituído por /reviewer, que devolve JSON estruturado (grammar, contrast, errors) em vez de texto livre. A revisão comentada com fins didáticos passou a ter endpoint próprio: /tutor.
O campo user deixou de ser necessário
O usuário é identificado pelo próprio Token de API. Enviar user no corpo não causa erro, mas o valor é ignorado.
Novo endpoint
/tutor (revisão comentada com laudo sugerido) não existia na API anterior.
Novos agentes e novo motor de OCR
O /assistant ganhou echocardio, ultrassom2 e directAgentPro; o /scan ganhou o motor V3.
Respostas em streaming por padrão
/assistant, /tutor e /scan transmitem text/plain em pedaços. Para manter o comportamento de resposta única, envie stream=false.
O Token de Login e o fluxo de obtenção do Token de API não mudaram — as credenciais que você já usa continuam válidas.

#Suporte

Em caso de dúvidas, sugestões ou problemas técnicos relacionados à integração com a API LeoRad AI, nossa equipe de suporte está disponível para ajudar.

Entre em contato

Nossa equipe de suporte técnico está disponível para auxiliar na integração, esclarecer dúvidas sobre os endpoints ou resolver qualquer problema encontrado durante o desenvolvimento.

contato@leorad.com.br