jevmodel.org-Konto

Anmelden und 100.000 Eingabe-Tokens gratis erhalten

Rund 500 Jev-Anfragen im Playground oder aus Ihrem eigenen Code mit einem API-Key. Wenn Sie mehr brauchen, gibt es Pakete ab $9,90. Keine Kreditkarte nötig.

Mit der Anmeldung akzeptieren Sie unsere Nutzungsbedingungen. Ihre E-Mail nutzen wir nur für Ihr Konto.
Jev Model · Entwickler-Referenz

Jev API-Dokumentation

Rufe die gehostete Jev-Entscheidungs-API mit einem State und typisierten Fragen auf — und erhalte eine Auswahl, einen Score und Ja/Nein-Wahrscheinlichkeiten, auf die dein Code verzweigen kann. Diese Referenz deckt das Wire-Format, Response-Felder, Abrechnung, Fehlerbehandlung und den Remote-MCP-Server für Agents ab.

Basis-URL https://jevmodel.org Evaluierungs-Endpoint POST /v1/systemone · POST /mcp

Überblick

Jev evaluiert einen State — ein Support-Ticket, ein Chat-Log, einen Tool-Aufruf, beliebigen Text oder JSON — gegen typisierte Fragen und liefert strukturierte Antworten, auf die dein Code verzweigen kann. Es generiert keinen Text.

Ein Request kann bis zu 8 Fragen stellen; sie werden gemeinsam evaluiert und teilen die State-Inputkosten. Der Request Body hat dieselbe Form wie die TypeSafe-SystemOne-API — eine funktionierende Integration migrierst du durch Austausch von Basis-URL und Bearer-Key.

  • POST https://jevmodel.org/v1/systemone — der einzige Entscheidungs-Endpoint.
  • CORS ist offen (access-control-allow-origin: *), der Endpoint antwortet von jedem Origin. Halte deinen Key trotzdem auf dem Server.
  • Der Playground sendet dieselbe Request-Form über deine Browser-Session — was du dort siehst, ist, was du sendest.

Authentifizierung

Jeder API-Aufruf braucht einen jevmodel.org API-Key. Erstelle einen unter Dashboard → API keys; Keys beginnen mit sk- und werden nur einmal bei der Erstellung gezeigt. Speichere ihn als Umgebungsvariable, z. B. JEVMODEL_API_KEY.

Authorization-Header
Authorization: Bearer $JEVMODEL_API_KEY

Keys gehören zum Token-Guthaben deines Kontos und können im Dashboard widerrufen werden. Gib einen Key nie in Client-Code aus und committe ihn nicht in ein Repository — bei einem Leck widerrufe ihn und stelle einen neuen aus. Der Playground authentifiziert über deine angemeldete Browser-Session und braucht keinen Key.

HTTP-Endpoint

Sende einen JSON-Body mit Bearer-Authentifizierung an den Evaluierungs-Endpoint:

HTTP-Request
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 ist optional (bis zu 100 Zeichen). Retries mit demselben Key nutzen den ursprünglichen Abrechnungsdatensatz — eine Wiederholung wird nicht doppelt für denselben Input berechnet.

Komplettes cURL-Beispiel
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"]
      }
    }
  }'

Request Body

Ein JSON-Objekt mit einem State und einer Map von Fragen:

Request Body
{
  "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"]
    }
  }
}
FeldTypHinweise
modelstringOptional; Standard ist jev-latest.
statestring, object oder arrayPflicht. Serialisierte Form maximal 8.000 Zeichen.
questionsobjectPflicht-Map von 1–8 Fragennamen auf typisierte Definitionen. Namen sind Identifier: Buchstaben, Ziffern und _, max. 64 Zeichen.

Jede Frage braucht ein type und instructions (bis zu 1.800 Zeichen), die dem Modell sagen, was es entscheiden soll. criteria liefert den Antwortraum — Pflicht für Choice und Score, optional für Noul.

Fragetypen

Wähle die Antwortform, mit der deine Anwendung arbeiten kann.

TypCriteriaAntwort
noulOptionale true / false-Label-Beschreibungen.noul — die Wahrscheinlichkeit für Ja, 0 bis 1.
choiceObjekt mit 2–20 Options-Keys und Beschreibungen.Gewählte choice, eine probabilities-Map und confidence.
scoreGeordnetes Array von 2–10 Stufen.Numerischer score (kann gebrochen sein) und confidence.

Serialisierte criteria sind auf 2.000 Zeichen pro Frage begrenzt. Validierungsfehler liefern 422, bevor Tokens reserviert werden — fehlerhafte Requests werden nie berechnet.

Response-JSON

Eine 200-Antwort ist die Modellausgabe selbst: das aufgelöste Modell, eine Antwort pro Fragename und Usage. Die Werte unten sind illustrativ — echte Ausgaben erhältst du im Request.

Beispielhafte 200-Antwort
{
  "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 ist nach deinen Fragennamen gekeyed — du liest die Felder, die du gefragt hast.
  • Bei choice verzweigst du auf dem gewählten Label und prüfst probabilities für die volle Verteilung.
  • noul ist P(ja) — dein Code legt den Schwellenwert fest.
  • usage.input_tokens ist, was dieser Aufruf tatsächlich berechnet hat; Output-Tokens sind kostenlos.

Abrechnung

Die API rechnet nur Input-Tokens ab — Output ist kostenlos. Jeder Aufruf reserviert zunächst eine Schätzung und rechnet dann mit den tatsächlichen usage.input_tokens ab, die das Modell meldet. Scheitert Jev upstream, wird die Reservierung automatisch vollständig erstattet.

  • Einmal anmelden und 100.000 Input-Tokens gratis erhalten; bezahlte Packs ab $9,90, laufen nie ab.
  • Zu wenig Guthaben liefert 402, bevor Jev aufgerufen wird.
  • X-Tokens-Remaining auf jeder 200-Antwort ist dein Guthaben nach Verrechnung.
  • Selbst schätzen: ceil(JSON.stringify({state, questions}).length / 4).

Modelle und Limits

jev-latest ist der Standard und das aktuell ausgelieferte Modell — das model-Feld ist optional. Die im Playground gezeigten Laya-Varianten sind geplant und über diesen Endpoint noch nicht verfügbar.

LimitWert
Fragen pro Request8
FragenameIdentifier ≤ 64 Zeichen
Serialisierter state8.000 Zeichen
instructions pro Frage1.800 Zeichen
Choice-Optionen / Score-Stufen2–20 Optionen, 2–10 Stufen
Serialisierte criteria2.000 Zeichen pro Frage
Rate Limit120 Requests / Minute pro Key

Diese Werte beschreiben den API-Validator; das Upstream-Modell kann eigene Kontextlimits haben.

Fehler und Retries

Fehler liefern einen JSON-Umschlag mit maschinenlesbarem type und menschlicher message:

Fehlerantwort
{
  "error": {
    "type": "invalid_request_error",
    "message": "At most 8 questions per request."
  }
}
StatusTypUrsacheBerechnet?
401authentication_errorFehlender, ungültiger oder widerrufener Key.Nein
402insufficient_creditsGeschätzte Input-Tokens übersteigen das Guthaben.Nein
422invalid_request_errorBody besteht die Validierung nicht — siehe message.Nein
429rate_limit_errorMehr als 120 Requests in dieser Minute.Nein
502upstream_errorJev konnte den Aufruf nicht abschließen.Nein — erstattet

429 und 502 mit exponentiellem Backoff wiederholen — das Rate-Fenster ist pro Minute, kurze Pausen reichen meist. Sende beim Retry einen Idempotency-Key, damit ein wiederholter Request auf denselben Abrechnungsdatensatz bucht statt doppelt zu berechnen.

MCP-Server für Agents

jevmodel.org betreibt außerdem einen Remote-MCP-Server über Streamable HTTP unter https://jevmodel.org/mcp. Er stellt vier Tools bereit — jev_decide (der volle State-plus-Questions-Vertrag), jev_noul, jev_choice und jev_score — damit Coding-Agents wie Claude Code, Cursor oder Cline Jev ohne HTTP-Code aufrufen können.

Claude Code
claude mcp add --transport http jev https://jevmodel.org/mcp \
  --header "Authorization: Bearer $JEVMODEL_API_KEY"
  • Gleicher Authorization: Bearer sk-…-Key und dasselbe Token-Guthaben wie diese API — tools/call berechnet nur Input-Tokens.
  • initialize, ping und tools/list sind unauthentifiziert; nur tools/call nutzt deinen Key.
  • GET /mcp liefert eine JSON-Discovery-Karte für Agents und Menschen.

Setup-Befehle für Claude Code und Cursor sowie das passende Agent-Skill (Urteils-Playbook) findest du auf der Agent-Tools-Seite.

Agent-Tools-Anleitung

Vom Playground zur API

Baue das Szenario zuerst im Playground — die Request-Vorschau zeigt den exakten JSON-Body, den deine Anwendung senden soll, und Copy API example liefert das passende cURL. Wenn die Antworten passen, erstelle einen Key im Dashboard und tausche die Browser-Session gegen Bearer-Authentifizierung.

Weiterlesen: Wie man Jev nutzt führt einen ersten Aufruf komplett durch, und Jev API-Beispiele enthält Produktionsmuster für jeden Fragetyp.

API-Keys

Jev mit deinem Key aufrufen.

Sende Status und typisierte Fragen an den Jev-Endpunkt. Erfolgreiche Anfragen verbrauchen nur Eingabetokens. Beim Wiederholen einen Idempotency-Key-Header mitsenden.

+ Neuer Key