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.
https://app.jusneural.com/api/api-jusneural/consultarhttps://app.jusneural.com/api/api-jusneural/solicitacoesEntrada: 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.
- Crie uma chave no painel e guarde-a em uma variável de ambiente no seu servidor.
- Adicione créditos à carteira da API. A recarga mínima é R$ 300,00.
- Escolha a linguagem e a operação no gerador de exemplos. Ajuste a instrução, a pesquisa web e o tipo de arquivo.
- Gere e guarde uma Idempotency-Key por operação antes do envio. Reutilize-a em consultas de status e repetições.
| Método | Endpoint | Finalidade |
|---|---|---|
| POST | https://app.jusneural.com/api/api-jusneural/consultar | Gerar uma resposta com texto e arquivos opcionais. |
| GET | https://app.jusneural.com/api/api-jusneural/solicitacoes | Consultar 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.
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.
Configure também JUSNEURAL_FILE com o caminho local do arquivo no servidor.
# 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çalho | Valor |
|---|---|
| Authorization | Bearer <SUA_CHAVE_DA_API> |
| Idempotency-Key | Identificador da operação: 16 a 128 letras, números, hífens ou sublinhados. |
| Content-Type | application/json para texto/base64; multipart/form-data com boundary automático para arquivos. O GET não recebe corpo. |
| Variável usada nos exemplos | Como preencher |
|---|---|
| JUSNEURAL_API_KEY | Chave secreta emitida pelo painel. Use um gerenciador de segredos ou variável de ambiente. |
| JUSNEURAL_OPERATION_ID | UUID ou identificador persistido por sua aplicação. Outra operação deve usar outro valor. |
| JUSNEURAL_FILE | Caminho 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
| Campo | Regra |
|---|---|
| model | jusneural-2.0-pro. Único modelo aceito; é o padrão quando omitido. |
| messages | Obrigató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[].content | Até 100.000 caracteres por mensagem e 180.000 caracteres somados no histórico. |
| messages[].attachments | Opcional e exclusivo de mensagens user. Em JSON: mime_type, data_base64 e filename opcional. Em multipart: upload e filename opcional. |
| instruction | Opcional: 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. |
| web | Booleano; padrão false. true habilita pesquisa web, além das consultas jurídicas do serviço. |
| max_output_tokens | Inteiro de 256 a 32.768; padrão 8.192. Inclui raciocínio. O orçamento autorizado pode reduzir a geração. |
| max_cost_cents | Inteiro 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.
| Formato | MIME aceito |
|---|---|
| application/pdf | |
| JPEG | image/jpeg |
| PNG | image/png |
| WebP | image/webp |
| MP3 | audio/mpeg |
| M4A / MP4 de áudio | audio/mp4 |
| WAV | audio/wav |
| OGG de áudio | audio/ogg |
| FLAC | audio/flac |
| WebM de áudio | audio/webm |
- Até 4 arquivos em todo o histórico, sendo no máximo um áudio.
- Até 5 MiB por arquivo e 10 MiB no total, antes do base64.
- Corpo da requisição: até 16 MiB, sem compressão. Campo payload do multipart: até 2 MiB.
- 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.
- 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:
{
"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"
}| Campo | Significado |
|---|---|
| usage.input_tokens | Entrada total, incluindo instruções do serviço, histórico, anexos e entradas de ferramentas. |
| usage.output_tokens | Saída total, incluindo raciocínio, mesmo quando ele não é exibido. |
| usage.*_tokens_details | Detalhamento já incluído nos totais. Não some outra vez. |
| billing.cost_brl | Valor efetivamente debitado nesta operação. |
| billing.measured_cost_brl | Custo correspondente ao consumo confirmado antes de eventual desconto. |
| billing.discount_brl | Excedente absorvido pelo serviço para respeitar max_cost_cents. |
| billing.balance_brl | Saldo após o débito original. Em uma repetição, não representa uma nova leitura do saldo atual. |
| finish_reason | stop: resposta concluída; length: limite de saída atingido. |
| request_id / X-Request-Id | Identificadores 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 GET | O que fazer |
|---|---|
| 202; status: processing | Aguarde Retry-After (3 segundos) e consulte novamente. A geração ou a conclusão dos registros ainda está em andamento. |
| 200; status: completed ou failed | Leia response_status, que contém o HTTP do resultado definitivo, e result, que contém resposta, consumo e valores. |
| 404 | A 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. |
| 410 | Expirou 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
{
"error": {
"code": "service_unavailable",
"message": "Ocorreu um erro interno. Tente novamente com a mesma Idempotency-Key."
},
"request_id": "11111111-2222-4333-8444-555555555555"
}| HTTP | Situação / ação |
|---|---|
| 400 | Parâmetros, JSON, multipart ou anexos inválidos. Confira o corpo e os limites. |
| 401 / 403 | Chave inválida, revogada ou acesso indisponível. Confira o Bearer e a situação da conta. |
| 402 | Saldo disponível ou orçamento insuficiente. Recarregue ou ajuste max_cost_cents. |
| 404 | Operação não encontrada para a chave usada na consulta. |
| 408 | Envio ultrapassou o prazo. Confira conexão e tamanho dos arquivos. |
| 409 | Operação em andamento, encerrada ou Idempotency-Key reutilizada com dados diferentes. Confira error.code. |
| 410 | Resposta fora da retenção de 24 horas. |
| 413 / 415 | Tamanho, tipo de requisição ou compressão não aceitos. |
| 422 | Conteúdo não atendido. Revise o pedido. |
| 429 | Limite de chamadas ou capacidade de recebimento atingido. Respeite Retry-After. |
| 500 / 502 / 503 / 504 | Falha 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.