Pular para o conteúdo
Referência de integração · Jusneural 2.0 Pro

Documentação da API

Tudo para conectar inteligência jurídica à sua aplicação: da primeira chamada ao acompanhamento de consumo, com exemplos em seis linguagens.

POSThttps://app.jusneural.com/api/api-jusneural/consultar
GEThttps://app.jusneural.com/api/api-jusneural/solicitacoes

Entrada: R$ 31,38 / 1M tokens · Saída: R$ 120,29 / 1M tokens · Recarga mínima: R$ 300,00

Resposta em JSON · Autenticação Bearer · Timeout do cliente: 120 segundos

Comece por aqui

A API Jusneural 2.0 Pro recebe uma pergunta ou documento e entrega uma resposta textual em JSON. O uso é independente dos planos da plataforma: qualquer pessoa cadastrada pode criar uma chave e recarregar a carteira da API.

  1. Crie uma chave no painel e guarde-a em uma variável de ambiente no seu servidor.
  2. Adicione créditos à carteira da API. A recarga mínima é R$ 300,00.
  3. Escolha a linguagem e a operação no gerador de exemplos. Ajuste a instrução, a pesquisa web e o tipo de arquivo.
  4. Gere e guarde uma Idempotency-Key por operação antes do envio. Reutilize-a em consultas de status e repetições.
MétodoEndpointFinalidade
POSThttps://app.jusneural.com/api/api-jusneural/consultarGerar uma resposta com texto e arquivos opcionais.
GEThttps://app.jusneural.com/api/api-jusneural/solicitacoesConsultar status e resultado de uma operação anterior, sem nova geração.

A chamada de geração é síncrona. O serviço limita o processamento a 100 segundos desde a entrada da requisição e reserva tempo para concluir os registros, com limite de resposta de 110 segundos. Configure o timeout do cliente para 120 segundos. A resposta é entregue inteira, sem streaming. A consulta GET acompanha a operação; ela não cria uma fila nem retoma uma geração interrompida.

Código pronto para adaptar

Exemplos de integração

Escolha uma linguagem e o tipo de operação. Os exemplos usam variáveis de ambiente e mostram uma chamada completa. Gerar, copiar e baixar o código não executa chamadas nem consome créditos.

Bash com curl. Para o exemplo base64, instale também jq e base64.

Configure JUSNEURAL_API_KEY e JUSNEURAL_OPERATION_ID no ambiente do seu servidor. Gere e guarde um identificador antes do envio; reutilize-o nas repetições e consultas de status.

74/2.000 caracteres. Preferências subordinadas às regras do Jusneural.

cURL · Consulta com texto
# Defina as variáveis no ambiente antes de executar.
: "${JUSNEURAL_API_KEY:?Defina sua chave da API}"
: "${JUSNEURAL_OPERATION_ID:?Defina um ID único e reutilize-o nas repetições}"
payload='{
  "model": "jusneural-2.0-pro",
  "messages": [
    {
      "role": "user",
      "content": "Explique os requisitos da tutela de urgência no processo civil brasileiro."
    }
  ],
  "instruction": "Responda de forma objetiva, com fundamentação jurídica e linguagem formal.",
  "web": false,
  "max_output_tokens": 8192,
  "max_cost_cents": 1000
}'

printf '%s' "$payload" | curl --request POST 'https://app.jusneural.com/api/api-jusneural/consultar' \
  --connect-timeout 10 --max-time 120 --fail-with-body \
  --header "Authorization: Bearer $JUSNEURAL_API_KEY" \
  --header "Idempotency-Key: $JUSNEURAL_OPERATION_ID" \
  --header 'Content-Type: application/json' \
  --data-binary @-

Execute as chamadas no servidor. A chave secreta deve ficar em uma variável de ambiente ou gerenciador de segredos. Em falha de rede, consulte a operação antes de repetir o POST.

Autenticação e preparação

CabeçalhoValor
AuthorizationBearer <SUA_CHAVE_DA_API>
Idempotency-KeyIdentificador da operação: 16 a 128 letras, números, hífens ou sublinhados.
Content-Typeapplication/json para texto/base64; multipart/form-data com boundary automático para arquivos. O GET não recebe corpo.
Variável usada nos exemplosComo preencher
JUSNEURAL_API_KEYChave secreta emitida pelo painel. Use um gerenciador de segredos ou variável de ambiente.
JUSNEURAL_OPERATION_IDUUID ou identificador persistido por sua aplicação. Outra operação deve usar outro valor.
JUSNEURAL_FILECaminho local do arquivo no servidor que executa o exemplo. Necessário apenas para os exemplos com anexos.

Execute os exemplos no servidor da sua aplicação. Não inclua a chave em páginas públicas, aplicativos distribuídos ou repositórios. Use HTTPS na integração. Os exemplos leem a chave do ambiente e não incluem credenciais pessoais no código gerado.

O botão Copiar código copia somente o exemplo selecionado. O gerador de exemplos não executa chamadas nem consome créditos. Configure JUSNEURAL_FILE para anexos e escolha o MIME correspondente. Use Salvar em PDF para baixar o guia completo com o exemplo selecionado.

Corpo da consulta

CampoRegra
modeljusneural-2.0-pro. Único modelo aceito; é o padrão quando omitido.
messagesObrigatório: 1 a 40 mensagens. Cada uma deve ter role (user ou assistant) e content textual não vazio. A última mensagem deve ser user.
messages[].contentAté 100.000 caracteres por mensagem e 180.000 caracteres somados no histórico.
messages[].attachmentsOpcional e exclusivo de mensagens user. Em JSON: mime_type, data_base64 e filename opcional. Em multipart: upload e filename opcional.
instructionOpcional: até 2.000 caracteres. Preferência de estilo, escopo ou formato subordinada às regras do serviço; não altera identidade nem instrução principal.
webBooleano; padrão false. true habilita pesquisa web, além das consultas jurídicas do serviço.
max_output_tokensInteiro de 256 a 32.768; padrão 8.192. Inclui raciocínio. O orçamento autorizado pode reduzir a geração.
max_cost_centsInteiro de 1 a 30.000; padrão 1.000 (R$ 10,00). Valor máximo autorizado e reservado para a operação, em centavos.

Não são aceitos campos extras, papéis system/developer, URLs de arquivos ou configurações internas. Valores inválidos retornam 400. Para continuar uma conversa, envie o histórico relevante e os anexos que ainda sejam necessários.

PDF, imagens e áudios

Multipart é recomendado para arquivos. Envie um único campo de texto payload contendo o JSON da chamada e uma parte binária por arquivo. No JSON, use attachments: [{"upload":"arquivo_1"}]. O nome arquivo_1 precisa corresponder à parte binária. Cada arquivo deve ser referenciado exatamente uma vez; não repita partes nem misture anexos base64 no payload multipart.

Deixe a biblioteca HTTP definir o Content-Type e o boundary do formulário. O MIME deve ser informado na parte binária. O filename opcional fica no JSON, aceita até 180 caracteres sem caminhos e serve apenas como identificação do anexo.

No transporte application/json, envie mime_type e data_base64: base64 puro, sem prefixo data: e sem quebras de linha. O serviço interpreta o arquivo; a sequência base64 não é cobrada como texto literal.

FormatoMIME aceito
PDFapplication/pdf
JPEGimage/jpeg
PNGimage/png
WebPimage/webp
MP3audio/mpeg
M4A / MP4 de áudioaudio/mp4
WAVaudio/wav
OGG de áudioaudio/ogg
FLACaudio/flac
WebM de áudioaudio/webm
  1. Até 4 arquivos em todo o histórico, sendo no máximo um áudio.
  2. Até 5 MiB por arquivo e 10 MiB no total, antes do base64.
  3. Corpo da requisição: até 16 MiB, sem compressão. Campo payload do multipart: até 2 MiB.
  4. Prazo de envio do corpo: 30 segundos, incluído no prazo total da chamada. Um envio demorado reduz o tempo disponível para geração.
  5. Arquivos precisam estar íntegros. PDFs devem estar sem senha. O conteúdo também precisa caber no contexto e no orçamento autorizado.

O serviço da API não armazena os anexos em disco, banco ou bucket. Eles são processados durante a chamada. A resposta pode conter trechos do material analisado e fica disponível por 24 horas para consulta e repetição.

Resposta, tokens e cobrança

O texto fica em choices[0].message.content. usage mostra o consumo confirmado de todas as etapas. billing traz valores em reais como strings decimais de oito casas; preserve a precisão ao armazená-los. Exemplo ilustrativo:

Exemplo de resposta em JSON
{
  "model": "jusneural-2.0-pro",
  "model_name": "Jusneural 2.0 Pro",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Resposta jurídica produzida pelo Jusneural."
      },
      "finish_reason": "stop"
    }
  ],
  "web": false,
  "usage": {
    "input_tokens": 1000,
    "output_tokens": 200,
    "total_tokens": 1200,
    "output_tokens_details": {
      "reasoning_tokens": 40
    },
    "input_tokens_details": {
      "tool_tokens": 0
    }
  },
  "billing": {
    "currency": "BRL",
    "cost_brl": "0.05543800",
    "measured_cost_brl": "0.05543800",
    "discount_brl": "0.00000000",
    "balance_brl": "299.94456200"
  },
  "request_id": "11111111-2222-4333-8444-555555555555"
}
CampoSignificado
usage.input_tokensEntrada total, incluindo instruções do serviço, histórico, anexos e entradas de ferramentas.
usage.output_tokensSaída total, incluindo raciocínio, mesmo quando ele não é exibido.
usage.*_tokens_detailsDetalhamento já incluído nos totais. Não some outra vez.
billing.cost_brlValor efetivamente debitado nesta operação.
billing.measured_cost_brlCusto correspondente ao consumo confirmado antes de eventual desconto.
billing.discount_brlExcedente absorvido pelo serviço para respeitar max_cost_cents.
billing.balance_brlSaldo após o débito original. Em uma repetição, não representa uma nova leitura do saldo atual.
finish_reasonstop: resposta concluída; length: limite de saída atingido.
request_id / X-Request-IdIdentificadores de atendimento para acompanhamento. Guarde-os junto da Idempotency-Key.

Entrada: R$ 31,38 por milhão de tokens. Saída: R$ 120,29 por milhão. Todos os passos e novas tentativas com consumo confirmado entram na soma, inclusive quando a operação termina com erro. Não há cobrança estimada. Confira usage e billing também nas respostas de erro, quando presentes. O débito nunca supera max_cost_cents.

Idempotência, status e novas tentativas

Guarde a Idempotency-Key antes de enviar o POST. Se houver falha de conexão, consulte o GET /api/api-jusneural/solicitacoes usando o mesmo Bearer e a mesma chave de operação, sem corpo nem arquivos. Somente a chave de API que originou a chamada pode consultar o resultado.

Resposta da consulta GETO que fazer
202; status: processingAguarde Retry-After (3 segundos) e consulte novamente. A geração ou a conclusão dos registros ainda está em andamento.
200; status: completed ou failedLeia response_status, que contém o HTTP do resultado definitivo, e result, que contém resposta, consumo e valores.
404A operação ainda não foi registrada para essa chave. Se o POST original terminou ou falhou, repita com o mesmo ID e os mesmos dados.
410Expirou a retenção de 24 horas. A operação original não será executada ou cobrada outra vez.

Se o POST retornar 504 sem usage e billing, a conclusão dos registros pode estar pendente. Consulte o GET com a mesma Idempotency-Key até obter o resultado definitivo; não interprete a ausência desses campos como consumo zero. Uma resposta gerada dentro do prazo pode aparecer como completed nessa consulta se apenas o registro final tiver demorado. Não crie outro ID para recuperar a resposta.

O GET não gera tokens nem cobrança. Um resultado final de erro também é idempotente: repetir o POST com o mesmo ID recupera esse resultado. Use outro ID somente para uma nova geração, sujeita à cobrança do consumo confirmado. Mudar parâmetros ou anexos usando o mesmo ID retorna 409.

Limites por conta, compartilhados entre todas as chaves: 60 POSTs por minuto, 120 consultas de status por minuto, 3 gerações e 3 recebimentos simultâneos. Em 429, respeite Retry-After e aumente o intervalo das tentativas com uma pequena variação aleatória. Evite repetição automática ilimitada.

Erros e como resolver

Exemplo de resposta em JSON
{
  "error": {
    "code": "service_unavailable",
    "message": "Ocorreu um erro interno. Tente novamente com a mesma Idempotency-Key."
  },
  "request_id": "11111111-2222-4333-8444-555555555555"
}
HTTPSituação / ação
400Parâmetros, JSON, multipart ou anexos inválidos. Confira o corpo e os limites.
401 / 403Chave inválida, revogada ou acesso indisponível. Confira o Bearer e a situação da conta.
402Saldo disponível ou orçamento insuficiente. Recarregue ou ajuste max_cost_cents.
404Operação não encontrada para a chave usada na consulta.
408Envio ultrapassou o prazo. Confira conexão e tamanho dos arquivos.
409Operação em andamento, encerrada ou Idempotency-Key reutilizada com dados diferentes. Confira error.code.
410Resposta fora da retenção de 24 horas.
413 / 415Tamanho, tipo de requisição ou compressão não aceitos.
422Conteúdo não atendido. Revise o pedido.
429Limite de chamadas ou capacidade de recebimento atingido. Respeite Retry-After.
500 / 502 / 503 / 504Falha interna ou timeout. Consulte a operação antes de tentar uma nova geração.

Trate o status HTTP e error.code no código de integração. A mensagem é destinada à leitura humana. Falhas internas usam textos genéricos. Para suporte, informe os identificadores da operação; não envie sua chave secreta. Falhas do cliente ou da rede podem não trazer corpo JSON: nesses casos, consulte o status usando o ID persistido.

Créditos e pagamentos

A carteira da API é independente de assinaturas, planos e tokens dos outros serviços. Recarga mínima de R$ 300,00, por Pix ou cartão de crédito, pelo painel da API. O painel mostra saldo, consumo recente e histórico de pagamentos.

Precisa de ajuda na integração?

Fale com o suporte Jusneural e informe o request_id, o cabeçalho X-Request-Id e o identificador da operação. Preserve sua chave secreta.

Abrir painel da API
Ícone do WhatsApp Fale com o suporte