model
Obrigatório. ID do catálogo (rota/codigo, rota/auto etc.).
Documentação
A API Rota Nacional começa pela limpeza: detecta PII em texto, áudio e documentos, devolve o conteúdo limpo e grava auditoria cifrada. A mesma chave também acessa modelos e chat completions quando você quiser usar inferência.
Passo 1
Crie uma conta pública, gere uma chave sk-rota-* e guarde o segredo
como variável de ambiente. O segredo completo aparece uma única vez.
export ROTA_API_KEY="sk-rota-..."
Passo 2
Use /v1/privacy/clean para textos, JSON curto ou itens pequenos. A resposta
traz cleaned, findings, contagens por categoria e audit_id,
sem expor valores detectados.
curl https://rota-nacional.ia.br/v1/privacy/clean \
-H "Authorization: Bearer $ROTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Paciente com CPF 452.198.736-28, CNS 898001160093761 e CRM-SP 123456.",
"policy": "placeholder"
}'
{
"object": "privacy.clean",
"action": "pseudonymized",
"clean_text": "Paciente com CPF [CPF_1], [CNS_1] e [CRM_1].",
"privacy": {
"categories": ["cns", "cpf", "crm"],
"counts": { "cns": 1, "cpf": 1, "crm": 1 },
"total": 3
},
"audit_id": "aud_..."
}
Batch MVP
O MVP processa o lote de forma síncrona e já retorna status: completed.
O contrato está preparado para fila assíncrona e worker médico sem quebrar clientes.
curl https://rota-nacional.ia.br/v1/privacy/jobs \
-H "Authorization: Bearer $ROTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "id": "1", "text": "Prontuário ABC-123 com contato pessoa@example.invalid." },
{ "id": "2", "text": "Convênio SAUDE-4455 e consulta 09/07/2026." }
]
}'
Depois consulte metadados do job, sem conteúdo bruto:
curl https://rota-nacional.ia.br/v1/privacy/jobs/privjob_... \
-H "Authorization: Bearer $ROTA_API_KEY"
Áudio
Envie um arquivo de áudio (multipart, até 25 MB) para /v1/audio/transcriptions.
A Rota transcreve, passa o texto pela mesma barreira de privacidade e devolve a transcrição
já sanitizada, com privacy, findings e audit_id.
O áudio bruto nunca é armazenado fora da auditoria cifrada. Contrato compatível com SDKs de
transcrição OpenAI.
curl https://rota-nacional.ia.br/v1/audio/transcriptions \
-H "Authorization: Bearer $ROTA_API_KEY" \
-F "file=@consulta.mp3" \
-F "model=rota/transcricao" \
-F "language=pt"
{
"object": "audio.transcription",
"text": "Paciente [PESSOA_1] no endereço [ENDERECO_1].",
"privacy": { "categories": ["endereco", "nome"], "total": 2 },
"audit_id": "aud_..."
}
Documentos
Envie um documento (multipart, até 25 MB) para /v1/privacy/extract. A Rota extrai o
texto, aplica a barreira e devolve o resultado sanitizado com audit_id.
PDF nato-digital tem extração determinística; imagem (PNG/JPEG/TIFF/WEBP) usa OCR marcado como
beta — melhor-esforço, com notice na resposta. Documento ilegível falha
com erro claro, sem devolver conteúdo bruto.
curl https://rota-nacional.ia.br/v1/privacy/extract \
-H "Authorization: Bearer $ROTA_API_KEY" \
-F "file=@encaminhamento.pdf"
{
"object": "document.extraction",
"source": "pdf",
"pages": 2,
"text": "Paciente com CPF [CPF_1] e [CNS_1].",
"privacy": { "categories": ["cns", "cpf"], "total": 2 },
"audit_id": "aud_..."
}
Opcional
curl https://rota-nacional.ia.br/v1/models \
-H "Authorization: Bearer $ROTA_API_KEY"
IDs atuais do catálogo:
Inferência opcional
curl https://rota-nacional.ia.br/v1/chat/completions \
-H "Authorization: Bearer $ROTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "rota/resumo",
"messages": [
{ "role": "user", "content": "Explique a Rota Nacional em uma frase." }
],
"max_tokens": 80
}'
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.ROTA_API_KEY,
baseURL: "https://rota-nacional.ia.br/v1"
});
const resposta = await client.chat.completions.create({
model: "rota/resumo",
messages: [
{ role: "user", content: "ping" }
]
});
console.log(resposta.choices[0]?.message?.content);
Parâmetros
modelObrigatório. ID do catálogo (rota/codigo, rota/auto etc.).
messagesObrigatório. Lista não vazia de { role, content }, papéis system/user/assistant/tool.
max_tokensOpcional. Limite de tokens de saída.
temperatureOpcional. Aleatoriedade da resposta.
streamOpcional. true para SSE (ver seção Streaming).
tools / tool_choiceOpcional. Ver seção Tool calling abaixo.
Streaming
curl -N https://rota-nacional.ia.br/v1/chat/completions \
-H "Authorization: Bearer $ROTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "rota/resumo",
"stream": true,
"messages": [
{ "role": "user", "content": "Responda em tópicos curtos." }
]
}'
Tool calling
Envie tools no formato OpenAI (function com name,
description e parameters em JSON Schema). O suporte real de
execução depende do modelo escolhido — rota/agentes e rota/codigo
são curados para esse uso; rota/auto direciona automaticamente pra
rota/agentes quando detecta uso de ferramentas na conversa.
curl https://rota-nacional.ia.br/v1/chat/completions \
-H "Authorization: Bearer $ROTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "rota/agentes",
"max_tokens": 300,
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Retorna o clima de uma cidade",
"parameters": { "type": "object", "properties": { "city": { "type": "string" } }, "required": ["city"] }
}
}],
"messages": [{ "role": "user", "content": "Qual o clima em Recife?" }]
}'
Privacidade
A política padrão substitui dados pessoais por marcadores por request. O painel mostra categorias e contagens tratadas; conteúdo bruto e payload limpo ficam em arquivo cifrado de auditoria quando a retenção está habilitada, com purge definido pela administração.
Categorias médicas básicas já entram na camada determinística: cns,
crm, prontuario, convenio e
data_clinica.
{
"entrada": "Meu CPF é 452.198.736-28",
"limpo": "Meu CPF é [CPF_1]"
}
Erros
{ "error": { "message", "type", "code" } }.invalid_json, missing_privacy_input, model_not_found ou invalid_messages — requisição malformada.
invalid_api_key — chave ausente ou inválida.
model_disabled — modelo desabilitado para esta conta.
account_suspended, trial_expired ou account_pending_approval — conta sem uso liberado.
pii_blocked — política da organização bloqueou o payload sensível.
pii_blocked — política de privacidade bloqueou a request.
rate_limited, quota_requests_exceeded ou quota_tokens_exceeded — limite por minuto ou mensal.
upstream_error — falha ao consultar o modelo.
audit_archive_key_not_configured — auditoria temporariamente indisponível (config administrativa).
not_found — rota inexistente.