Jev AI · API hospedada
API do Jev para classificar, rotear e pontuar
Envie texto e perguntas tipadas ao Jev AI e receba decisões estruturadas em JSON. Copie o prompt de configuração para o seu agente de programação, crie uma chave e verifique a conexão.
As chamadas de API usam primeiro a conta de tokens e aplicam o multiplicador de cada modelo. Se os tokens não forem suficientes, a chamada inteira é cobrada pelo preço em créditos do modelo. Tokens de saída são gratuitos.
O Jev AI é um serviço independente. Use uma chave do Jev AI com o endpoint /api/v1/systemone, compatível com o TypeSafe.
Avaliando alternativas? Compare o Jev com OpenJev, Djev, Laya e Semif.
Comece aqui
Copie um prompt para o seu agente de programação
Cole no agente que está trabalhando no seu app. Ele cobre como atualizar um cliente existente do SDK oficial do TypeSafe, configurar a URL base e a chave do Jev AI e testar a conexão antes da inferência.
O prompt fica em inglês para que o agente siga exatamente as instruções.
Integrate Jev AI into this project. Inspect the existing code and read https://jev-ai.pro/docs first, especially #official-sdk for setup and #errors for failure handling.
Connection details: base URL https://jev-ai.pro/api; decision endpoint POST https://jev-ai.pro/api/v1/systemone; header "Authorization: Bearer $JEV_AI_API_KEY" with a key created at https://jev-ai.pro/jev-api; default model jev-latest.
If using TypeSafe's official SDK (@typesafe-ai/sdk), reuse the existing client and explicitly set baseURL to https://jev-ai.pro/api with a Jev AI key. Changing only the key is not enough. TypeSafe publishes the SDK; Jev AI provides the compatible endpoint.
Keep JEV_AI_API_KEY server-side; never put it in browser code, logs, commits or chat. Tell me where to configure it locally and in deployment.
Follow the docs for request/response formats, retries and model limits. Start with jev-latest, verify the actual destination, and check GET https://jev-ai.pro/api/v1/models without inference. Then show me how to make one small decision call using my balance.Em seguida, crie uma chave do Jev AI abaixo e adicione-a onde o agente indicar. O prompt pede ao agente que mantenha a chave apenas no servidor.
Suas chaves da API do Jev
Crie uma chave para esta integração. Guarde-a no ambiente do servidor do seu app como JEV_AI_API_KEY e nunca a cole no chat do agente. Primeira chave? Leia o guia passo a passo da chave da API do Jev (em inglês).
Entre na sua conta para criar uma chave. Os créditos de boas-vindas e de check-in pagam as solicitações web e o fallback da API. Os tokens comprados pagam o uso de entrada da API.
Sua primeira chamada de API
- Entre na sua conta e crie uma chave acima.
- Rode este exemplo mínimo em um terminal Bash ou Zsh. Digite sua chave no prompt oculto. A solicitação usa seu saldo conforme as regras de cobrança abaixo.
- Procure um objeto
answersna resposta e depois verifique sua conexão aqui.
Usando um agente de programação ou o SDK do TypeSafe? Copie o prompt de configuração e deixe que ele configure a URL base e a chave para você.
{
printf 'Paste your API key, then press Enter (input is hidden): '
read -rs JEV_AI_API_KEY
printf '\n'
export JEV_AI_API_KEY
curl --fail-with-body https://jev-ai.pro/api/v1/systemone \
-H "Authorization: Bearer $JEV_AI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"state":"My payment failed. Please help.","questions":{"urgent":{"type":"noul","instructions":"Does this message need urgent support?"}}}'
unset JEV_AI_API_KEY
}As chamadas de API usam primeiro tokens e, se não forem suficientes, o preço em créditos do modelo. Tokens de saída são gratuitos. Criar uma chave e verificar o status não executam o modelo.
Endpoint
POST https://jev-ai.pro/api/v1/systemone
Authorization: Bearer <JEV_AI_API_KEY>
Content-Type: application/jsonSolicitação
curl https://jev-ai.pro/api/v1/systemone \
-H "Authorization: Bearer $JEV_AI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"is_urgent": { "type": "noul", "instructions": "Does this convey urgency?" },
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": { "billing": "Payments and refunds", "technical": "Bugs and outages", "sales": "Pricing" }
},
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated", "Very angry"]
}
}
}'Resposta
{
"model": "jev-1.13.0",
"answers": {
"is_urgent": { "type": "noul", "noul": 0.95 },
"department": {
"type": "choice", "choice": "billing", "confidence": 0.98,
"probabilities": { "billing": 0.99, "technical": 0.01, "sales": 0.0 }
},
"frustration": {
"type": "score", "score": 1.04, "confidence": 0.94,
"legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
"probabilities": { "0": 0.0, "1": 0.96, "2": 0.04 }
}
},
"usage": { "input_tokens": 379, "output_tokens": 70 }
}Cada resposta volta sob o id de pergunta que você escolheu. Respostas choice e score incluem probabilities e uma confidence entre 0 e 1; uma resposta noul é a probabilidade de “sim”.
SDK oficial do TypeSafe
O @typesafe-ai/sdk é publicado pelo TypeSafe. O Jev AI é um serviço independente que oferece um endpoint hospedado compatível; este SDK não é publicado pelo Jev AI.
Já usa o SDK oficial do TypeSafe? Troque a chave do Jev AI e também a URL base. Se mudar só a chave, as solicitações continuam indo para o serviço padrão do TypeSafe. As chaves e saldos do Jev AI são separados dos do TypeSafe.
Em JavaScript / TypeScript, defina baseURL: 'https://jev-ai.pro/api'. O SDK acrescenta /v1/systemone, então não inclua /v1 nem o caminho completo na URL base. A solicitação final precisa chegar a https://jev-ai.pro/api/v1/systemone.
// Official TypeSafe SDK, published by TypeSafe — @typesafe-ai/sdk 0.6.0
// Server-side JavaScript / TypeScript using the Jev AI compatible endpoint
import { TypeSafeClient, choice } from '@typesafe-ai/sdk'
const apiKey = process.env.JEV_AI_API_KEY
if (!apiKey) throw new Error('Set JEV_AI_API_KEY on your server')
const client = new TypeSafeClient({
apiKey,
baseURL: 'https://jev-ai.pro/api', // Required, including for existing SDK users
retry: { maxRetries: 0 }, // Avoid replaying a request with an uncertain outcome
})
// The SDK appends /v1/systemone to baseURL.
const response = await client.systemOne({
model: 'jev-latest',
state: { document: 'I was charged twice. Please fix this ASAP.' },
questions: {
category: choice('What is this ticket about?', { billing: null, technical: null, other: null }),
},
})
console.log(response.answers.category.choice)O exemplo desativa as novas tentativas automáticas para não repetir uma solicitação cujo resultado é incerto. Antes de fazer uma chamada de decisão que usa seu saldo, siga o checklist de conexão do SDK do TypeSafe (em inglês).
Testado com @typesafe-ai/sdk 0.6.0. GET /api/v1/models lista os nomes dos modelos e GET /api/v1/credits retorna creditsRemaining e paidInputTokensRemaining. Os campos antigos de créditos continuam disponíveis por compatibilidade.
Chamar um juiz salvo
O editor usa por padrão o formato oficial: state, model e questions completos, portáveis entre Jev AI e TypeSafe trocando apenas o endpoint e a chave. Escolha ID de juiz salvo para usar o atalho exclusivo do Jev AI mostrado abaixo; o TypeSafe não reconhece esses IDs.
Crie e gerencie seus juízes, abra um deles e escolha “API code” para obter um exemplo pronto para copiar. Use uma chave de API da mesma conta.
POST /api/v1/systemone
{
"judgeId": "YOUR_SAVED_JUDGE_ID",
"revision": 1,
"state": "New text to evaluate"
}Envie judgeId no lugar de questions. Cada chamada aplica as regras salvas ao seu novo state; a resposta e a cobrança por tokens são iguais às de uma chamada normal.
revision é opcional. Inclua-o para recusar chamadas com HTTP 409 quando as regras mudarem; omita-o para usar sempre a versão salva mais recente. Os cabeçalhos X-Jev-Judge-Id e X-Jev-Judge-Revision identificam as regras usadas. Juízes excluídos ou inacessíveis retornam HTTP 404.
Contexto da web em tempo real
O Jev não navega na internet. POST /api/v1/web-context pesquisa na web a sua pergunta de sim/não, coloca os resultados no state do Jev como evidência e retorna a resposta do Jev com e sem essa evidência. Teste primeiro no navegador.
POST https://jev-ai.pro/api/v1/web-context
Authorization: Bearer <JEV_AI_API_KEY>
Content-Type: application/json
{
"question": "Has OpenAI released GPT-6?",
"query": "OpenAI releases GPT-6 announcement",
"criteria": {
"yes": "OpenAI has publicly released a model named GPT-6",
"no": "No model named GPT-6 has been released"
},
"num_results": 6,
"attribution": false
}{
"decision": "yes",
"confidence": 0.88,
"with_web": { "answer": { "type": "choice", "choice": "yes", "probabilities": { "yes": 0.88, "no": 0.12 }, "confidence": 0.88 }, "usage": { ... } },
"without_web": { "answer": { "type": "choice", "choice": "no", ... }, "usage": { ... } },
"sources": [{ "title": "...", "url": "https://...", "publishedDate": "2026-09-10T00:00:00.000Z", "highlights": ["..."] }],
"source_weights": null,
"usage": { "input_tokens": 2140, "output_tokens": 12, "jev_calls": 2, "web_search": true },
"latency": { "search_ms": 560, "jev_ms": 410 }
}Só question é obrigatório. query usa a própria pergunta por padrão e criteria, uma regra genérica de sim/não. num_results aceita de 1 a 10 (padrão 6). Defina attribution: true para receber source_weights: quanto a probabilidade vencedora cai quando cada fonte é removida. O Jev roda de novo uma vez por fonte, então esses tokens de entrada também são cobrados.
Para usar suas próprias evidências, envie sources (até 10 objetos com title, url, publishedDate e highlights). Nenhuma pesquisa é feita e a taxa de pesquisa não é cobrada.
Cobrança: os tokens de entrada reais de todas as chamadas ao Jev, mais 170.000 tokens por pesquisa na web. Se os tokens não forem suficientes, a solicitação custa 2 créditos (1 crédito com suas próprias sources). Solicitações com falha não são cobradas.
Compare o Jev com outros modelos de decisão
Ainda escolhendo um modelo? Confira acesso por API, opções de hospedagem e o contexto dos benchmarks antes de integrar. Estas comparações estão em inglês.
- Resultados do JevBench — o ranking independente citado nestas comparações e como interpretá-lo.
- Jev vs Imajev-4B — o Jev hospedado contra um modelo aberto de 4B que também lê fotos.
- Jev vs decider-4b — o Jev hospedado contra uma reconstrução aberta e rápida baseada no Qwen3.5-4B.
- Jev vs JevK5 — o Jev hospedado contra uma alternativa de pesos abertos baseada no Qwen3.5-4B.
- Jev vs Cygnet — o Jev hospedado contra o Gemma 4 12B congelado, décimo no ranking de pesos abertos do JevBench.
- Jev vs Winnow — o Jev hospedado contra um modelo local que também conversa e lê imagens.
- Jev vs OpenJev — o Jev hospedado contra os projetos OpenJev e as opções de auto-hospedagem.
- Jev vs Djev — recursos do modelo de decisão e opções de integração.
- Jev vs Laya — diferenças entre os modelos e contexto dos benchmarks.
- Jev vs Semif — diferenças entre os modelos e opções de implantação.
- Jev vs LLM — como um modelo de decisão difere de um LLM de chat e de um classificador BERT.
- Rodar o Jev localmente? — a situação do código aberto e as alternativas auto-hospedadas em uma tabela.
Estes guias comparam modelos de decisão. O Laya Beta pode usar este mesmo endpoint quando aparece em GET /api/v1/models; os outros modelos comparados não são oferecidos neste endpoint.
Modelos, limites e cobrança
Conheça o Laya English e o Multilingual · Solicitação e limites da API do Laya (em inglês). Os dois usam sua chave do Jev AI e o endpoint acima.
Mercury Decide, o modelo de decisão da Inception, também roda neste endpoint: defina model como mercury-decide. Aceita até 32.768 tokens por solicitação e é cobrado como o Jev. Referência da API do Mercury Decide (em inglês).
GPT-6 Luna, o modelo por trás da Decisions API da OpenAI, também roda aqui: defina model como gpt-6-luna. Lê texto, JSON e até 4 imagens incorporadas e é cobrado pelo multiplicador do modelo. Referência da API do GPT-6 Luna (em inglês).
Defina model como laya-english ou laya-multilingual para usar o Laya Beta. Se você omitir, fica jev-latest. Isso também vale ao usar um judgeId salvo.
O Laya aceita 512 tokens no total por pergunta no English e 1.024 no Multilingual, incluindo state, instruções, rótulos e texto de enquadramento. Cada rótulo tem limite de 48 tokens, e a pergunta com os rótulos tem ainda um orçamento próprio de cada checkpoint. Entradas grandes demais retornam 422 sem cobrança; nada é cortado em silêncio. O uso conta a sequência de entrada de cada pergunta, incluindo o state repetido. Vale a cobrança atual da conta, com zero tokens de saída.
| Modelos | jev-latest, jev-preview, jev-1.13.0, laya-english, laya-multilingual, mercury-decide, clef, clef-flash, gpt-6-luna (os aliases do Jev apontam para jev-1.13.0; Laya Beta, Mercury Decide e GPT-6 Luna exigem uma conexão configurada. Confira a disponibilidade em GET /api/v1/models.) |
| Tipos de pergunta | noul (sim/não), choice, score · até 64 por solicitação |
| Entrada | Uma string, um objeto JSON ou um array; Clef e GPT-6 Luna também aceitam até 4 imagens incorporadas · corpo da solicitação de até 256 KB · contexto do modelo Jev de 64k tokens; Mercury Decide, 32.768 tokens; limites do Laya acima |
| Limites por pergunta | Até 255 opções por Choice e 10 níveis por Score no Jev. O state do Jev mais a pergunta mais longa precisam caber em 32k tokens. O Laya usa os limites mais rígidos descritos acima. |
| Preço | As chamadas de API descontam tokens de entrada × o multiplicador do modelo escolhido; tokens de saída são gratuitos. Se os tokens não forem suficientes, a chamada inteira passa para o preço em créditos do modelo. As ferramentas web usam primeiro créditos e depois tokens. Veja os multiplicadores na página de preços. |
| Saldo | GET /api/v1/credits retorna separadamente o saldo de créditos e o de tokens. X-Jev-Billing vale tokens, credits, credits-fallback ou tokens-fallback. X-Jev-Credits-Charged e X-Jev-Paid-Input-Tokens-Used informam o custo da chamada, e X-Jev-Tokens-Remaining, os tokens disponíveis. As solicitações são reservadas temporariamente antes da execução e liquidadas pelo uso real de entrada. Se nenhuma das contas cobrir a solicitação, ela falha com 402 e sem cobrança. |
| Limite de taxa | 1.000 solicitações por minuto por conta; 429 com Retry-After quando o Jev está ocupado. |
| Erros | 401 chave inválida · 402 sem saldo · 422 solicitação inválida · 429 diminua o ritmo · 502/504 falha do provedor (não cobrado) |