/v1/chat/completions
Chat no worker com model: "rota/local". stream: true
devolve SSE depois que o job termina; no MVP, o conteúdo chega em um único chunk.
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.
Quer experimentar antes de integrar? Teste grátis no navegador: entre com Google, cole um texto e confira o resultado. São 30 dias com quota inicial, sem cartão ou chave de API.
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_..."
}
Inferência pela frota RN
A Rota escolhe o worker disponível; sua aplicação não recebe endereço de GPU nem
precisa conhecer a topologia da frota. Consulte /v1/capabilities para
descobrir o que os workers conectados podem executar naquele momento.
curl https://rota-nacional.ia.br/v1/capabilities \
-H "Authorization: Bearer $ROTA_API_KEY"
/v1/chat/completions
Chat no worker com model: "rota/local". stream: true
devolve SSE depois que o job termina; no MVP, o conteúdo chega em um único chunk.
/v1/embeddingsVetores de texto pelo worker anunciado como rn.embeddings.
/v1/audio/speechSíntese e clonagem de voz. Envie JSON com text, voz e motor opcionais.
/v1/audio/musicGeração de trilha por job assíncrono, com estilo, duração e seed controláveis.
/v1/audio/compositionsMescla voz e fundo. Envie multipart com voice e background.
/v1/ocrOCR local de imagem ou PDF, com resultado novamente tratado pela barreira de privacidade.
/v1/documents/fidelity/jobsOCR documental assíncrono para fluxos que precisam preservar estrutura e páginas.
/v1/documents/review/jobsRevisão estruturada de documento por job, com instruções e JSON Schema do resultado.
/v1/images/generations e /v1/images/editsGeração e edição de imagem por jobs assíncronos quando rn.images.* estiver disponível.
Rotas assíncronas retornam 202, status_url e
result_url. Consulte GET /v1/jobs/{id} e
GET /v1/jobs/{id}/result. Payloads e resultados ficam cifrados e
expiram automaticamente depois de 24 horas.
curl https://rota-nacional.ia.br/v1/audio/compositions \
-H "Authorization: Bearer $ROTA_API_KEY" \
-F "voice=@narracao.mp3" \
-F "background=@trilha.mp3" \
-F "background_gain_db=-18"
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]"
}
Método e evidência
O motor ativo rules-v1 aplica padrões textuais, checksum de CPF/CNPJ numérico e nomes configurados. Valores de texto em objetos e arrays são percorridos; chaves JSON e números não são tratados como strings. CNS e CRM usam contexto e formato, sem a mesma validação matemática.
O candidato neural da demonstração ainda não está ativo na API. Sua avaliação usa MiniLM, DistilBERT, ONNX e projeção Unicode. Os escores do detector não são garantia de anonimização.
Consulte a documentação de engenharia para conhecer os efeitos de cada política, o contrato de spans, os limites, o formato cifrado e as referências científicas. Os benchmarks e dados para download permitem recalcular precisão, recall e cobertura de nomes em 46 textos sintéticos.
Roadmap · ainda indisponível
Extensão e aplicativo desktop, substituição contextual, restauração autorizada, ferramentas e proxy MCP, CLI, SDK, conectores empresariais, SSO e implantação dedicada estão planejados. Esses recursos ainda não têm contrato público de API nem data de lançamento.
As rotas documentadas acima continuam sendo o contrato disponível. A conexão de agentes pela API de inferência não equivale a um servidor MCP de privacidade. Consulte a apresentação da plataforma e seu roadmap ou baixe o PDF comercial.
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.