Référence
Jev API Docs
Référence de l’endpoint de décision Jev sur ce site. Jev est le modèle System One de TypeSafe AI ; ce site est un service d’API indépendant qui en héberge l’accès. Envoyez un état et une map de questions et recevez une réponse typée pour chacune.
Mis à jour
Endpoint
Envoyez POST vers /api/v1/decisions sur cet hôte. Il n'y a ni chemin chat-completions ni réponse en streaming. GET /api/v1/models liste l'id du modèle. L'endpoint compatible POST /v1/systemone est couvert plus bas.
POST https://jev-api.org/api/v1/decisions
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonAuthentification
Placez la clé du tableau de bord dans Authorization: Bearer. Une clé absente ou refusée renvoie 401. Le playground crée une clé du compte quand vous lancez une requête.
Démarrage rapide
Définissez JEV_API_KEY avec une clé de votre tableau de bord, puis envoyez la requête ci-dessous.
curl https://jev-api.org/api/v1/decisions \
-H "Authorization: Bearer $JEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": "Thanks for the refund. Still annoyed it took three emails.",
"questions": {
"sentiment": {
"type": "choice",
"instructions": "What is the overall sentiment of this message?",
"criteria": {
"positive": "Satisfied or thankful overall.",
"mixed": "Both satisfied and unhappy.",
"negative": "Unhappy overall."
}
},
"needs_follow_up": {
"type": "noul",
"instructions": "Should a person reply to this message?"
}
}
}'Utiliser avec des outils de codage IA
Copiez un prompt contenant le contrat de requête complet, puis collez-le dans Cursor, Claude Code ou ChatGPT avec votre tâche. La même référence se trouve dans /llms.txt.
Corps de la requête
model vaut jev-1.13 ou jev-latest. state est une chaîne, un objet JSON ou un tableau de texte, jusqu’à 60 000 caractères. questions est une map de 1 à 6 ids snake_case. L’id n’est que l’étiquette sous laquelle la réponse revient, pas une question. La vraie question va dans instructions, en texte de 1 à 2 000 caractères.
{
"model": "jev-1.13",
"state": "Thanks for the refund. Still annoyed it took three emails.",
"questions": {
"sentiment": {
"type": "choice",
"instructions": "What is the overall sentiment of this message?",
"criteria": {
"positive": "Satisfied or thankful overall.",
"mixed": "Both satisfied and unhappy.",
"negative": "Unhappy overall."
}
},
"needs_follow_up": {
"type": "noul",
"instructions": "Should a person reply to this message?"
}
}
}Types de question
Noul
type noul n’a besoin que d’instructions. Le champ noul est la probabilité de 0 à 1 que l’énoncé soit vrai. Il n’y a pas de champ confidence séparé. Si vous envoyez criteria sur une question noul, cet endpoint l’ignore.
Choice
type choice exige instructions et criteria : un objet de 2 à 8 ids snake_case associés à des descriptions de 300 caractères max. La réponse inclut choice, probabilities de chaque option et confidence.
Score
type score exige instructions et criteria, un tableau ordonné de 2 à 10 niveaux, le plus bas d’abord. La réponse inclut score, legend, probabilities et confidence.
Réponse
Un corps réussi a model, answers indexées par vos ids de question, usage avec input_tokens et output_tokens, et credits_used. model indique jev-1.13 même si vous avez envoyé jev-latest. Voici un exemple de réponse à la requête du démarrage rapide, usage omis.
{
"model": "jev-1.13",
"answers": {
"sentiment": {
"type": "choice",
"choice": "mixed",
"probabilities": { "mixed": 0.79, "negative": 0.2, "positive": 0.01 },
"confidence": 0.61
},
"needs_follow_up": { "type": "noul", "noul": 0.83 }
},
"credits_used": 1
}Lire les probabilités et confidence
Noul est la probabilité que l’énoncé dans instructions soit vrai. Choice et Score renvoient une probabilité par option ou niveau, plus confidence.
Le second est le signal pour passer à une personne. Quand confidence est bas ou que deux options sont proches, envoyez le cas à une personne ou posez une question plus précise. Ne baissez pas le seuil avant d’avoir regardé ces cas serrés.
Limites
| Élément | Cet endpoint |
|---|---|
| Endpoint | POST /api/v1/decisions, clé Bearer |
| Modèle | jev-1.13 (jev-latest est un alias) |
| Questions par appel | 1 à 6 |
| Options de Choice | 2 à 8 |
| Niveaux de Score | 2 à 10, le plus bas d’abord |
| State | Chaîne, objet JSON ou tableau, jusqu’à 60 000 caractères |
| Instructions | Texte, de 1 à 2 000 caractères |
| Facturation | 1 crédit par appel réussi ; les échoués sont gratuits |
| Streaming | Non pris en charge |
Différences avec l’API de TypeSafe
TypeSafe AI sert Jev sur POST https://api.typesafe.ai/v1/systemone avec une clé TypeSafe et facture par token d'entrée. Le POST /v1/systemone de ce site accepte le même corps tel quel ; le plus simple POST /api/v1/decisions diffère comme suit :
- Chemin et clé : POST /api/v1/decisions sur jev-api.org, avec une clé du tableau de bord de ce site. Les clés TypeSafe ne marchent pas ici, et celles de ce site ne marchent pas sur TypeSafe.
- Id du modèle : sur /api/v1/decisions envoyez jev-1.13 ou jev-latest ; un id versionné comme jev-1.13.0 renvoie 422. /v1/systemone accepte jev-latest, jev-preview, jev-1.13, jev-1.13.0 et typesafe/jev-1.13.
- Limites : /api/v1/decisions permet 1 à 6 questions par appel et 2 à 8 options de Choice. /v1/systemone accepte les plages complètes de TypeSafe — jusqu'à 256 questions et 255 options de Choice.
- Champs : sur /api/v1/decisions instructions doit être du texte et chaque option de Choice a besoin d'une description. /v1/systemone accepte aussi des instructions en objet ou tableau et des descriptions d'option null.
- Facturation : 1 crédit par appel réussi, quel que soit le nombre de tokens.
Endpoint compatible avec le SDK TypeSafe
POST /v1/systemone sur cet hôte accepte le corps de requête TypeSafe tel quel — model, state et questions — et renvoie la forme de réponse TypeSafe : model, answers, usage. Pointez un client compatible TypeSafe vers la base URL https://jev-api.org, ou appelez directement https://jev-api.org/v1/systemone. GET /v1/models liste les modèles servis sans clé.
POST https://jev-api.org/v1/systemone
GET https://jev-api.org/v1/modelsIds de modèle acceptés : jev-latest, jev-preview, jev-1.13, jev-1.13.0, typesafe/jev-1.13. Ce chemin accepte les plages TypeSafe plus larges — 1 à 256 questions, 2 à 255 options de Choice, 2 à 10 niveaux de Score, instructions en objet ou tableau — et les limites de 64k tokens par requête et 32k pour l'état plus la question la plus longue. La facturation est identique : 1 crédit par appel réussi.
Python
from typesafe_sdk import Noul, TypeSafeClient
with TypeSafeClient(api_key="YOUR_JEV_API_KEY", base_url="https://jev-api.org") as client:
response = client.system_one(
state="The invoice total does not match the quote.",
questions={"is_billing": Noul(instructions="Is this about billing?")},
)
print(response.answers["is_billing"])JavaScript
const res = await fetch('https://jev-api.org/v1/systemone', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.JEV_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'jev-latest',
state: 'The invoice total does not match the quote.',
questions: { is_billing: { type: 'noul', instructions: 'Is this about billing?' } },
}),
})
const { answers } = await res.json()Erreurs
- 401 — clé absente ou refusée.
- 402 — la clé est valide et le solde ne couvre pas l’appel. Un échec amont n’utilise pas de crédit.
- 422 — le corps a échoué à la validation. Le message nomme le champ.
- 429 — le service de décision est limité. Réessayez plus tard.
- 502 — le service n’a pas renvoyé de réponses. Aucun crédit n’est utilisé.
Id du modèle
Cette API sert jev-1.13. Envoyez cet id si un seuil dépend d’une distribution. Sur cette API, jev-latest est un alias du même id.
Tous les ids et alias de modèle·Modèle Laya et cette API Jev