1. Início rápido
A API do Regunow usa HTTPS, autenticação Bearer e o prefixo versionado /api/v1. Você pode consultar esta documentação sem uma conta. As solicitações à API exigem acesso Pro ativo e aceitação das políticas vigentes.
- Entre no Regunow e crie uma chave em Configurações → Chaves de API.
- Guarde o segredo com segurança. Ele é exibido apenas uma vez, ao criar a chave.
- Configure o host e a chave e envie sua primeira pergunta por um backend ou uma automação confiável.
# Use your Regunow host and a key from Settings → API Keys.
export REGUNOW_BASE_URL="https://YOUR_REGUNOW_HOST"
export REGUNOW_API_KEY="YOUR_API_KEY"
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/chat/completions" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: first-question-001" \
-d '{
"messages": [{
"role": "user",
"content": "Which EU product-safety obligations apply to a connected consumer device?"
}],
"mode": "jurisdiction",
"jurisdiction": "eu"
}'A resposta está em output.content. As referências às fontes e os créditos cobrados estão incluídos. Esta solicitação consome créditos. Use uma nova chave de idempotência para cada nova pergunta.
Exemplo de JavaScript (Node.js)
// Node.js: set REGUNOW_BASE_URL and REGUNOW_API_KEY in your environment.
// Generate one key per operation; keep it unchanged when retrying that operation.
import { randomUUID } from "node:crypto";
const idempotencyKey = randomUUID();
const response = await fetch(
process.env.REGUNOW_BASE_URL + "/api/v1/chat/completions",
{
method: "POST",
headers: {
Authorization: "Bearer " + process.env.REGUNOW_API_KEY,
"Content-Type": "application/json",
"Idempotency-Key": idempotencyKey,
},
body: JSON.stringify({
messages: [{ role: "user", content: "Summarize EU product-safety obligations." }],
mode: "jurisdiction",
jurisdiction: "eu",
}),
},
);
const result = await response.json();
if (!response.ok) {
throw new Error(result.error.code + ": " + result.error.message);
}
console.log(result.output.content);2. Autenticação
Envie a chave de API no cabeçalho HTTP Authorization de cada solicitação. Chaves em URLs, cookies ou corpos de solicitação não são aceitas.
Authorization: Bearer rgn_live_...Armazene as chaves em uma variável de ambiente ou em um gerenciador de segredos. Não as inclua em código do navegador, pacotes de aplicativos móveis, repositórios públicos ou logs. O acesso por navegadores de outras origens não está habilitado; envie as solicitações pelo seu servidor.
Chaves desativadas, excluídas ou expiradas deixam de autenticar imediatamente. O Regunow armazena apenas um hash do segredo e não pode exibi-lo novamente. Crie uma chave substituta quando precisar.
O acesso Pro e a aceitação das políticas são verificados em cada solicitação. Se receber legal_acceptance_required, o titular da chave deve entrar e abrir Aceitação legal. Uma chave de API não pode aceitar políticas.
3. Modelos e opções
GET/api/v1/models
Consulte modelos, níveis de esforço, jurisdições, idiomas de resposta e recursos disponíveis. Este endpoint autenticado não cobra créditos separadamente e permite verificar uma chave antes de solicitar uma resposta de chat.
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/models" \
-H "Authorization: Bearer $REGUNOW_API_KEY"| Campo | Conteúdo |
|---|---|
models | IDs e nomes dos modelos, esforço padrão e valores de esforço disponíveis. |
default | A seleção padrão de modelo e esforço. |
jurisdictions | Identificadores das jurisdições disponíveis e seus nomes. |
languages | Códigos e nomes dos idiomas de resposta disponíveis. |
capabilities | Suporte a transmissão e arquivos, com limites de quantidade e tamanho de arquivos. |
Use os valores retornados pelo catálogo da sua implantação. No modo Jurisdição, omita model e effort para usar os padrões aceitos. Se os informar, devem corresponder a Sonnet 4.6 / Alto. Sem anexos, o serviço de recuperação gerencia o modelo de resposta; o campo de modelo descreve a seleção validada.
4. Respostas de chat
POST/api/v1/chat/completions
Envie um corpo JSON contendo um array messages. Por padrão, a API retorna a resposta completa em JSON. Defina stream como true para receber texto incrementalmente.
| Campo | Padrão | Descrição |
|---|---|---|
messages | Obrigatório | 1–20 mensagens alternadas de user e assistant, terminando com user. Cada uma contém role e content como texto. |
mode | freestyle | freestyle para pesquisa regulatória flexível ou jurisdiction para uma jurisdição disponível. |
jurisdiction | null | Obrigatório no modo Jurisdição. Use os identificadores do catálogo. Em Freestyle, deve ser omitido ou null. |
model | Padrão do catálogo | Um ID de modelo disponível. O modo Jurisdição exige a seleção padrão do Sonnet. |
effort | Padrão do modelo | Um valor de esforço disponível para o modelo. O modo Jurisdição exige Alto. |
web_search | auto / off | auto, on ou off em Freestyle; padrão auto. O modo Jurisdição aceita apenas off. |
response_language | en | Um código de idioma de resposta do catálogo. O idioma da documentação não limita o das respostas. |
stream | false | Defina true para eventos enviados pelo servidor (SSE). |
file_ids | Nenhum | Até cinco UUIDs distintos de arquivos disponíveis da conta do titular da chave. |
{
"messages": [{
"role": "user",
"content": "What retention period does this policy specify? Cite the document."
}],
"mode": "freestyle",
"web_search": "off",
"response_language": "en",
"file_ids": ["YOUR_FILE_ID"]
}Substitua YOUR_FILE_ID pelo UUID retornado após um envio bem-sucedido. Em cada pergunta seguinte, envie o histórico relevante do usuário e do assistente e inclua novamente os file_ids desejados. A API não memoriza automaticamente o histórico nem os anexos.
Mensagens de sistema e campos desconhecidos são rejeitados. A API não oferece geração de imagens ou relatórios, entrada de áudio nem acesso a memórias salvas. Imagens enviadas podem ser usadas como entrada para perguntas.
5. Respostas e citações
Uma solicitação bem-sucedida retorna object: "regunow.chat.completion", a resposta, metadados das fontes, uso e tempos. Os valores a seguir são ilustrativos.
{
"id": "request-uuid",
"request_id": "request-uuid",
"object": "regunow.chat.completion",
"created": 1790812800,
"model": "jp.anthropic.claude-sonnet-4-6",
"latency": {
"time_to_first_token_ms": 2345,
"time_to_answer_completion_ms": 9876
},
"output": {
"input_files": [],
"role": "assistant",
"content": "The complete answer...",
"finish_reason": "end_turn",
"citations": [],
"sources": [],
"web_search": false
},
"usage": {
"input_tokens": 1234,
"output_tokens": 456,
"charged_microcredits": 789000,
"charged_credits": 0.789
}
}output.contentcontém o texto definitivo da resposta. As posições das citações se referem a essa string final;sourceIndexesidentifica entradas emoutput.sources.- As fontes incluem título, nome do arquivo, tipo MIME, URI e trecho recuperado. Exiba trechos e citações junto da resposta.
- Uma URI de fonte indica uma localização e pode apontar para armazenamento privado. Somente URLs públicas dos editores devem ser apresentadas como links acessíveis. A API não oferece download nem tradução de arquivos de fontes regulatórias.
- Com anexos,
output.input_filesidentifica os arquivos fornecidos. Fontes de anexos têmfile_id; fontes regulatórias e da web têmfile_id: null. As URIs dos anexos sãonull. - A presença de um arquivo de entrada não prova que ele sustente todas as afirmações. Modelos podem omitir citações no texto; imagens ou digitalizações podem ter trechos vazios.
As contagens de tokens podem ser null quando o serviço de recuperação não as informa; isso significa desconhecido, não zero. charged_credits é a cobrança registrada ao cliente. created é um timestamp Unix em segundos; as latências são em milissegundos.
Toda resposta dos endpoints contém um cabeçalho X-Request-Id. Guarde o identificador para diagnóstico. O JSON das respostas de chat e erros também contém request_id.
6. Transmissão contínua
Defina "stream": true. A resposta usa text/event-stream. Com cURL, adicione -N para desativar o buffer de saída.
curl --fail-with-body -N \
"$REGUNOW_BASE_URL/api/v1/chat/completions" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: streaming-question-001" \
-d '{
"messages": [{"role":"user","content":"Summarize EU product-safety obligations."}],
"mode": "jurisdiction",
"jurisdiction": "eu",
"stream": true
}'Leia eventos SSE completos separados por linhas em branco; um bloco de rede pode conter parte de um evento ou vários eventos. Acrescente choices[0].delta.content conforme chegar. Ignore os comentários de manutenção da conexão que começam com :.
data: {"choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"choices":[{"index":0,"delta":{"content":"The answer begins..."},"finish_reason":null}]}
data: {"choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"choices":[],"usage":{"prompt_tokens":1234,"completion_tokens":456,"total_tokens":1690},"regunow":{"output":{},"latency":{},"usage":{"charged_credits":0.789,"charged_microcredits":789000}}}
data: [DONE]O evento final de metadados tem um array choices vazio. Leia resposta definitiva, citações e fontes em regunow.output, tempos em regunow.latency e créditos em regunow.usage. As contagens de tokens usam usage.prompt_tokens e usage.completion_tokens.
A recuperação e o processamento de citações podem causar pausas. Trate o texto como provisório até os metadados finais. Um erro após o início da transmissão chega como um objeto error seguido de [DONE]; HTTP 200 sozinho não confirma sucesso. Falhas anteriores de autenticação ou validação retornam erros JSON comuns.
A repetição de uma operação concluída continua em SSE e retorna a resposta salva em um único bloco de texto com X-Idempotent-Replayed: true.
7. Arquivos
Envie documentos ou imagens e anexe seus IDs a uma solicitação de chat. Os arquivos compartilham a Biblioteca e a cota de armazenamento do titular da chave. Documentos podem ter até 10 MiB e imagens até 5 MiB.
| Categoria | Formatos |
|---|---|
| Documentos | PDF, TXT, CSV, TSV, Markdown, DOC, DOCX, ODT, RTF, XLSX, ODS, PPTX, ODP |
| Imagens | JPEG, PNG, WebP, GIF |
Envio direto (recomendado)
Este fluxo de três etapas envia os bytes originais diretamente ao armazenamento, evitando os limites do corpo de solicitação da aplicação. Use-o em integrações hospedadas, especialmente com arquivos maiores.
POST/api/v1/files/upload-intents
Envie apenas name, mime_type e bytes (o tamanho exato). Uma solicitação bem-sucedida retorna HTTP 201 com o ID de um arquivo pendente e uma URL assinada válida por 300 segundos.
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/files/upload-intents" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: policy-intent-001" \
-d '{"name":"policy.txt","mime_type":"text/plain","bytes":16384}'{
"id": "YOUR_FILE_ID",
"status": "pending",
"upload_method": "PUT",
"upload_url": "SIGNED_UPLOAD_URL",
"upload_headers": {"Content-Type": "text/plain"},
"expires_in": 300
}Defina FILE_ID com o id retornado. Use os upload_method, upload_url e upload_headers recebidos para enviar os bytes originais exatos. Defina a Content-Length exata. Não envie a chave de API do Regunow à URL de envio nem registre URLs assinadas nos logs.
# Set UPLOAD_URL from the intent response. Use its returned upload_headers.
# This example assumes policy.txt is exactly 16,384 bytes.
curl --fail-with-body -X PUT "$UPLOAD_URL" \
-H "Content-Type: text/plain" \
-H "Content-Length: 16384" \
--data-binary @./policy.txtPOST/api/v1/files/{fileId}/complete
Envie {} com uma chave de idempotência diferente. A finalização valida os bytes e retorna HTTP 200 com um arquivo disponível. O ID só pode ser usado em file_ids após a conclusão bem-sucedida.
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/files/$FILE_ID/complete" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: policy-complete-001" \
-d '{}'Se a URL expirar, exclua o arquivo pendente não utilizado e prepare outro envio com uma nova chave. Repetir a preparação não prolonga a validade da URL. Se o resultado da finalização for incerto, consulte primeiro o estado do arquivo. Se ainda estiver pendente, tente finalizar com uma nova chave de idempotência; a antiga retorna seu resultado salvo. Finalizar um arquivo já disponível retorna seus metadados.
Envio multipart
POST/api/v1/files
Para arquivos menores, envie um campo multipart/form-data chamado file. Envie bytes originais, não base64 nem uma URL remota. Seu gateway de hospedagem pode impor um limite de corpo menor que o tamanho de arquivo permitido pela API.
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/files" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Idempotency-Key: policy-upload-001" \
-F "file=@./policy.pdf;type=application/pdf"Um envio bem-sucedido retorna HTTP 201 com um arquivo disponível; não é necessária uma chamada de finalização separada.
{
"id": "YOUR_FILE_ID",
"object": "regunow.file",
"name": "policy.pdf",
"mime_type": "application/pdf",
"category": "file",
"bytes": 16384,
"status": "available",
"created_at": "2026-10-01T00:00:00Z",
"request_id": "request-uuid",
"usage": {"charged_microcredits":500,"charged_credits":0.0005}
}Listar, consultar e excluir arquivos
| Método | Endpoint da API | Comportamento |
|---|---|---|
| GET | /api/v1/files | Lista arquivos disponíveis. limit usa 20 por padrão e aceita 1–100. Os resultados contêm data, has_more e next_after. Passe next_after como after para a próxima página. |
| GET | /api/v1/files/{fileId} | Consulta metadados e estado do arquivo (pendente, disponível ou com falha). |
| DELETE | /api/v1/files/{fileId} | Exclui permanentemente o arquivo da Biblioteca e os artefatos de análise e prévia. Retorna object: "regunow.file.deleted" e deleted: true. |
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/files?limit=20" \
-H "Authorization: Bearer $REGUNOW_API_KEY"Chaves da mesma conta acessam os arquivos disponíveis da sua Biblioteca. Arquivos inexistentes e de outras contas retornam 404. Se atender vários usuários por uma conta, aplique suas próprias permissões antes de anexar ou excluir arquivos.
Envios pendentes ou com falha ocupam a cota até a limpeza bem-sucedida. Envios incompletos com mais de 24 horas podem ser limpos. Um arquivo disponível passou pela validação de envio; a extração ocorre quando você faz uma pergunta, portanto documentos corrompidos, criptografados ou ilegíveis ainda podem falhar na análise.
8. Créditos e limites
Solicitações de chat, envios e exclusões registram uso medido. O catálogo de modelos e leituras de metadados não cobram créditos separadamente. Extração de documentos e análise de imagens são cobradas na solicitação de chat.
Consulte a cobrança de uma operação em usage.charged_credits. Um crédito equivale a 1.000.000 de microcréditos. Os limites das chaves são separados dos créditos da conta; ambos podem impedir solicitações. Confira o uso e configure os limites em Configurações → Chaves de API.
| Limite | Quantidade permitida |
|---|---|
| Chaves de API | 25 por conta |
| Solicitações de chat e alterações de arquivos simultâneas | 10 por chave |
| Corpo JSON da solicitação de chat | 192 KiB |
| Mensagens por solicitação de chat | 1–20 |
| Texto das mensagens | 32.000 caracteres por mensagem; 64.000 no total |
| Anexos por solicitação de chat | 5 arquivos distintos |
| Tamanho do documento | 10 MiB por arquivo |
| Tamanho da imagem | 5 MiB por arquivo |
| Armazenamento da Biblioteca | 5 GiB compartilhados com a Biblioteca da conta |
| Chave de idempotência | 1–120 caracteres ASCII imprimíveis, sem espaços |
| Janela de repetição | 24 horas após a liquidação |
Os limites de contexto e visão do modelo continuam válidos mesmo que cada mensagem e anexo respeite os limites da API. Os orçamentos das chaves são redefinidos em períodos móveis diários, semanais ou mensais, desde a criação da chave ou o reinício do período anterior.
Uma solicitação iniciada com orçamento disponível pode ultrapassar ligeiramente um pequeno saldo restante, pois o custo final só é conhecido após a geração. Ao atingir o limite, novas solicitações de chat e alterações de arquivos param. Reservas impedem solicitações simultâneas de gastar o mesmo orçamento disponível.
9. Novas tentativas seguras
Envie um Idempotency-Key para cada solicitação de chat, envio, finalização e exclusão. É opcional, mas altamente recomendado para evitar trabalho e cobranças repetidos após falhas de conexão.
Idempotency-Key: a-unique-key-for-this-operation- Gere uma chave única para cada nova operação e salve-a com a solicitação original.
- Tente novamente com a mesma chave de API, chave de idempotência e entradas inalteradas. Após a liquidação, estado e resposta salvos podem ser reproduzidos por 24 horas sem outra chamada ao provedor nem cobrança.
- Uma repetição inclui
X-Idempotent-Replayed: true. Reutilizar a chave com entradas diferentes ou durante a primeira solicitação retorna 409. - Resultados em cache podem incluir erros. Repetir a mesma chave pode retornar a mesma falha em vez de executar novamente. Verifique o resultado antes de iniciar outra operação.
- Depois que a janela de repetição expira, reutilizar uma chave inicia uma nova solicitação que pode gerar outra cobrança.
Use esperas exponenciais para falhas temporárias de rede, limite de frequência ou serviço. Mantenha a chave de idempotência enquanto resolve uma solicitação de resultado incerto. Corrija primeiro entradas inválidas, credenciais expiradas ou créditos esgotados.
Excluir um arquivo não apaga uma resposta de chat ou envio em cache durante a janela de repetição. Repetir um envio após a exclusão retorna a resposta original e não recria o arquivo.
10. Erros
Os erros usam uma estrutura JSON estável. Consulte error.code para tratá-los e guarde request_id ou o cabeçalho X-Request-Id ao contatar o suporte.
{
"error": {
"type": "request_error",
"code": "invalid_request",
"message": "messages must contain 1 to 20 alternating user/assistant messages, end with a user message, and stay within 64,000 characters."
},
"request_id": "request-uuid"
}| Estado | Códigos comuns | O que fazer |
|---|---|---|
| 400 | invalid_request | Confira JSON, campos permitidos, mensagens, opções do modelo e IDs dos arquivos. |
| 401 | invalid_api_key | Confira o cabeçalho Bearer. Substitua chaves expiradas, desativadas ou excluídas. |
| 402 | account_quota_exceeded, api_key_limit_exceeded | Confira os créditos da conta e o limite de créditos da chave. |
| 403 | pro_required, legal_acceptance_required | Restaure o acesso Pro ou peça ao titular que aceite as políticas vigentes no Regunow. |
| 404 | file_not_found | Use um arquivo da conta do titular da chave. |
| 409 | idempotency_conflict, request_in_progress | Use uma nova chave se alterar as entradas. Se a solicitação estiver em andamento, aguarde e repita a operação original. |
| 413 | request_too_large | Reduza o tamanho da mensagem ou do arquivo. Use envio direto se o limite do corpo do gateway for a causa. |
| 415 | unsupported_media_type | Use o Content-Type exigido pelo endpoint e um corpo de solicitação sem compressão. |
| 429 | concurrency_limit_exceeded, upstream_rate_limited | Reduza a concorrência e tente novamente com esperas exponenciais. |
| 502–504 | upstream_unavailable, upstream_timeout, service_unavailable, usage_settlement_failed | Tente novamente após falhas temporárias com esperas crescentes e a mesma chave de idempotência. Uma falha salva pode ser reproduzida. |
