account jevmodel.org

Accedi per ricevere 100.000 token di input gratis

Circa 500 richieste Jev nel playground o dal tuo codice con una API key. I pacchetti partono da $9,90 quando ne hai bisogno di più. Nessuna carta richiesta.

Accedendo accetti i nostri termini. Usiamo la tua email solo per il tuo account.
Jev Model · Riferimento per sviluppatori

Documentazione API Jev

Chiama l’API di decisioni Jev ospitata con uno state e un insieme di domande tipizzate — ricevi una scelta, un punteggio e probabilità sì/no su cui il tuo codice può diramare. Questo riferimento copre il formato del wire, i campi della risposta, la fatturazione, la gestione degli errori e il server MCP remoto per agenti.

URL base https://jevmodel.org Endpoint di valutazione POST /v1/systemone · POST /mcp

Panoramica

Jev valuta uno state — un ticket di supporto, un log di chat, una chiamata a uno strumento, qualsiasi testo o JSON — rispetto a un insieme di domande tipizzate e restituisce risposte strutturate su cui il tuo codice può diramare. Non genera testo.

Una richiesta può porre fino a 8 domande; vengono valutate insieme e condividono il costo di input dello state. Il corpo della richiesta ha la stessa forma accettata dall’API SystemOne di TypeSafe — per migrare un’integrazione funzionante, scambia l’URL base e la chiave Bearer.

  • POST https://jevmodel.org/v1/systemone — l’unico endpoint di decisione.
  • CORS è aperto (access-control-allow-origin: *), l’endpoint risponde da qualsiasi origine. Tieni comunque la chiave su un server.
  • Il playground invia esattamente la stessa forma di richiesta attraverso la tua sessione di browser — ciò che vedi in anteprima è ciò che invii.

Autenticazione

Ogni chiamata API richiede una chiave jevmodel.org. Creane una in Dashboard → API keys; le chiavi iniziano con sk- e vengono mostrate una sola volta alla creazione. Conservala come variabile d’ambiente, ad esempio JEVMODEL_API_KEY.

Header Authorization
Authorization: Bearer $JEVMODEL_API_KEY

Le chiavi appartengono al saldo di token del tuo account e possono essere revocate dalla dashboard. Non esporre mai una chiave nel codice lato client né committarla in un repository — se trapela, revocala e generane una nuova. Il playground si autentica con la tua sessione di browser connessa e non ha bisogno di chiave.

Endpoint HTTP

Invia un corpo JSON all’endpoint di valutazione con autenticazione Bearer:

Richiesta HTTP
POST /v1/systemone HTTP/1.1
Host: jevmodel.org
Authorization: Bearer $JEVMODEL_API_KEY
Content-Type: application/json
Idempotency-Key: ticket-4821-run-1   # optional

Idempotency-Key è opzionale (fino a 100 caratteri). I nuovi tentativi con la stessa chiave riutilizzano il record di fatturazione originale, quindi una richiesta ripetuta non viene addebitata due volte per lo stesso input.

Esempio cURL completo
curl -X POST https://jevmodel.org/v1/systemone \
  -H "Authorization: Bearer $JEVMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "The customer has been billed twice and wants a refund today.",
    "questions": {
      "route": {
        "type": "choice",
        "instructions": "Which queue should own this ticket?",
        "criteria": {
          "billing": "Payments, refunds, invoices",
          "technical": "Product errors and usage problems",
          "sales": "Pricing, upgrades, new business"
        }
      },
      "escalate": {
        "type": "noul",
        "instructions": "Does this need a human right now?"
      },
      "urgency": {
        "type": "score",
        "instructions": "How urgent is this for the customer?",
        "criteria": ["routine", "soon", "urgent", "critical"]
      }
    }
  }'

Corpo della richiesta

Un oggetto JSON con uno state e una mappa di domande:

Corpo della richiesta
{
  "model": "jev-latest",
  "state": "The customer has been billed twice and wants a refund today.",
  "questions": {
    "route": {
      "type": "choice",
      "instructions": "Which queue should own this ticket?",
      "criteria": {
        "billing": "Payments, refunds, invoices",
        "technical": "Product errors and usage problems",
        "sales": "Pricing, upgrades, new business"
      }
    },
    "escalate": {
      "type": "noul",
      "instructions": "Does this need a human right now?"
    },
    "urgency": {
      "type": "score",
      "instructions": "How urgent is this for the customer?",
      "criteria": ["routine", "soon", "urgent", "critical"]
    }
  }
}
CampoTipoNote
modelstringOpzionale; default jev-latest.
statestring, object o arrayObbligatorio. La forma serializzata è limitata a 8.000 caratteri.
questionsobjectMappa obbligatoria da 1–8 nomi di domanda a definizioni tipizzate. I nomi sono identificatori: lettere, cifre e _, massimo 64 caratteri.

Ogni domanda richiede un type e instructions (fino a 1.800 caratteri) che dicono al modello cosa decidere. criteria fornisce lo spazio delle risposte — obbligatorio per choice e score, opzionale per noul.

Tipi di domanda

Scegli la forma di risposta che la tua applicazione può utilizzare.

TipoCriteriaRisposta
noulDescrizioni opzionali delle etichette true / false.noul — la probabilità di sì, da 0 a 1.
choiceOggetto di 2–20 chiavi di opzione mappate a descrizioni.La choice selezionata, una mappa probabilities e confidence.
scoreArray ordinato di 2–10 livelli.Un score numerico (può essere frazionario) e confidence.

I criteria serializzati sono limitati a 2.000 caratteri per domanda. I fallimenti di validazione restituiscono 422 prima che vengano riservati token — le richieste errate non vengono mai addebitate.

JSON di risposta

Una risposta 200 è l’output del modello stesso: il modello risolto, una risposta per nome di domanda e l’uso. I valori qui sotto sono illustrativi — esegui la richiesta per un output reale.

Risposta 200 illustrativa
{
  "model": "jev-latest",
  "answers": {
    "route": {
      "type": "choice",
      "choice": "billing",
      "probabilities": { "billing": 0.93, "technical": 0.05, "sales": 0.02 },
      "confidence": 0.93
    },
    "escalate": {
      "type": "noul",
      "noul": 0.12
    },
    "urgency": {
      "type": "score",
      "score": 1.4,
      "confidence": 0.88
    }
  },
  "usage": { "input_tokens": 136, "output_tokens": 18 }
}
  • answers è indicizzato dai tuoi nomi di domanda — leggi i campi che hai chiesto.
  • Per choice, dirama sull’etichetta selezionata e ispeziona probabilities quando serve la distribuzione completa.
  • noul è P(sì) — il tuo codice decide la soglia di azione.
  • usage.input_tokens è ciò che questa chiamata ha effettivamente fatturato; i token di output sono gratuiti.

Fatturazione

L’API fattura solo i token di input — l’output è gratuito. Ogni chiamata riserva prima una stima, poi liquida sui usage.input_tokens effettivi riportati dal modello. Se Jev fallisce a monte, la riserva viene rimborsata automaticamente per intero.

  • Accedi una volta e ricevi 100.000 token di input gratis; i pacchetti a pagamento partono da $9,90 e non scadono mai.
  • Saldo insufficiente restituisce 402 prima di chiamare Jev.
  • X-Tokens-Remaining su ogni risposta 200 è il tuo saldo dopo la liquidazione.
  • Stimalo da solo: ceil(JSON.stringify({state, questions}).length / 4).

Modelli e limiti

jev-latest è il default e il modello attualmente servito — il campo model è opzionale. Le varianti Laya mostrate nel playground sono in arrivo e non ancora esposte tramite questo endpoint.

LimiteValore
Domande per richiesta8
Nome della domandaIdentificatore ≤ 64 caratteri
state serializzato8.000 caratteri
instructions per domanda1.800 caratteri
Opzioni choice / livelli score2–20 opzioni, 2–10 livelli
criteria serializzati2.000 caratteri per domanda
Limite di frequenza120 richieste / minuto per chiave

Queste cifre descrivono il validatore dell’API; il modello a monte può avere i propri limiti di contesto.

Errori e nuovi tentativi

Gli errori restituiscono un envelope JSON con un type leggibile dalla macchina e un message per l’uomo:

Risposta di errore
{
  "error": {
    "type": "invalid_request_error",
    "message": "At most 8 questions per request."
  }
}
StatoTipoCausaAddebitato?
401authentication_errorChiave mancante, non valida o revocata.No
402insufficient_creditsI token di input stimati superano il saldo.No
422invalid_request_errorIl corpo non ha superato la validazione — vedi message.No
429rate_limit_errorPiù di 120 richieste in questo minuto.No
502upstream_errorJev non è riuscito a completare la chiamata.No — rimborsato

Riprova 429 e 502 con backoff esponenziale — la finestra di frequenza è al minuto, brevi pause di solito bastano. Invia un Idempotency-Key quando riprovi così una richiesta ripetuta liquida sullo stesso record di fatturazione invece di addebitare due volte.

Server MCP per agenti

jevmodel.org gestisce anche un server MCP remoto su Streamable HTTP all’indirizzo https://jevmodel.org/mcp. Espone quattro strumenti — jev_decide (il contratto completo state-più-questions), jev_noul, jev_choice e jev_score — così agenti di codice come Claude Code, Cursor o Cline possono chiamare Jev senza scrivere HTTP.

Claude Code
claude mcp add --transport http jev https://jevmodel.org/mcp \
  --header "Authorization: Bearer $JEVMODEL_API_KEY"
  • Stessa chiave Authorization: Bearer sk-… e stesso saldo di token di questa API — tools/call fattura solo token di input.
  • initialize, ping e tools/list non richiedono autenticazione; solo tools/call usa la tua chiave.
  • GET /mcp restituisce una card JSON di discovery per agenti e umani.

I comandi di setup per Claude Code e Cursor, e la skill agente corrispondente (manuale di giudizio), sono sulla pagina strumenti per agenti.

Guida agli strumenti per agenti

Dal playground all’API

Costruisci prima lo scenario nel playground — l’anteprima della richiesta mostra l’esatto corpo JSON che la tua applicazione deve inviare, e Copy API example ti dà il cURL corrispondente. Quando le risposte vanno bene, crea una chiave nella dashboard e sostituisci la sessione del browser con l’autenticazione Bearer.

Per approfondire: Come usare Jev percorre una prima chiamata dall’inizio alla fine, e Esempi API Jev ha pattern di produzione per ogni tipo di domanda.

API key

Chiama Jev con la tua chiave.

Invia lo stato e domande tipizzate all’endpoint di Jev. Le richieste riuscite consumano solo token di input. Aggiungi un header Idempotency-Key quando riprovi.

+ Nuova chiave