Справка
Jev API Docs
Справочник по endpoint решений Jev на этом сайте. Jev — модель System One от TypeSafe AI; этот сайт — независимый API-сервис, который предоставляет к ней доступ. Отправьте одно состояние и карту вопросов и получите типизированный ответ на каждый.
Обновлено
Endpoint
Отправляйте POST на /api/v1/decisions этого хоста. Пути chat-completions и стриминга нет. GET /api/v1/models возвращает id модели. Совместимый POST /v1/systemone описан ниже.
POST https://jev-api.org/api/v1/decisions
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonАутентификация
Положите ключ панели в Authorization: Bearer. Отсутствующий или отклонённый ключ даёт 401. Песочница создаёт ключ аккаунта при запуске.
Быстрый старт
Установите JEV_API_KEY в ключ из вашей панели и отправьте запрос ниже.
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?"
}
}
}'Использование с AI-инструментами для кода
Скопируйте промпт с полным контрактом запроса и вставьте его в Cursor, Claude Code или ChatGPT вместе с вашей задачей. Тот же справочник находится в /llms.txt.
Тело запроса
model — jev-1.13 или jev-latest. state — строка, JSON-объект или массив текста, до 60 000 символов. questions — карта из 1–6 id в snake_case. id — только метка, под которой возвращается ответ, а не вопрос. Сам вопрос пишите в instructions текстом от 1 до 2 000 символов.
{
"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?"
}
}
}Типы вопросов
Noul
type noul требует только instructions. Поле noul — вероятность от 0 до 1, что утверждение истинно. Отдельного поля confidence нет. Если отправить criteria в вопросе noul, этот endpoint его игнорирует.
Choice
type choice требует instructions и criteria: объект из 2–8 id в snake_case с описаниями до 300 символов. Ответ включает choice, probabilities каждого варианта и confidence.
Score
type score требует instructions и criteria — упорядоченный массив из 2–10 уровней, от низшего. Ответ включает score, legend, probabilities и confidence.
Ответ
Успешное тело содержит model, answers по вашим id вопросов, usage с input_tokens и output_tokens, и credits_used. model сообщает jev-1.13, даже если вы отправили jev-latest. Ниже — пример ответа на запрос из быстрого старта, usage опущено.
{
"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
}Как читать вероятности и confidence
Noul — вероятность того, что утверждение в instructions истинно. Choice и Score возвращают вероятность каждого варианта или уровня, плюс confidence.
Второй вариант — сигнал передать человеку. Когда confidence низкий или два варианта близки, отдайте случай человеку или задайте ещё один конкретный вопрос. Не снижайте порог, пока не посмотрите эти близкие случаи.
Лимиты
| Параметр | Этот endpoint |
|---|---|
| Endpoint | POST /api/v1/decisions, Bearer-ключ |
| Модель | jev-1.13 (jev-latest — псевдоним) |
| Вопросов за вызов | 1–6 |
| Варианты Choice | 2–8 |
| Уровни Score | 2–10, от низшего |
| State | Строка, JSON-объект или массив, до 60 000 символов |
| Instructions | Текст, 1–2 000 символов |
| Оплата | 1 кредит за успешный вызов; неудачные бесплатны |
| Стриминг | Не поддерживается |
Отличия от API TypeSafe
TypeSafe AI обслуживает Jev на POST https://api.typesafe.ai/v1/systemone с ключом TypeSafe и берёт за входные токены. POST /v1/systemone этого сайта принимает то же тело без изменений; более простой POST /api/v1/decisions отличается следующим:
- Путь и ключ: POST /api/v1/decisions на jev-api.org с ключом из панели этого сайта. Ключи TypeSafe здесь не работают, а ключи этого сайта не работают на TypeSafe.
- Id модели: на /api/v1/decisions отправляйте jev-1.13 или jev-latest; версионный id вроде jev-1.13.0 вернёт 422. /v1/systemone принимает jev-latest, jev-preview, jev-1.13, jev-1.13.0 и typesafe/jev-1.13.
- Лимиты: /api/v1/decisions — 1–6 вопросов на вызов и 2–8 вариантов Choice. /v1/systemone принимает полные диапазоны TypeSafe — до 256 вопросов и 255 вариантов Choice.
- Поля: на /api/v1/decisions instructions должны быть текстом, и у каждого варианта Choice нужно описание. /v1/systemone также принимает instructions в виде объекта или массива и null-описания вариантов.
- Оплата: 1 кредит за успешный вызов, независимо от числа токенов.
Эндпоинт, совместимый с SDK TypeSafe
POST /v1/systemone этого хоста принимает тело запроса TypeSafe без изменений — model, state и questions — и возвращает форму ответа TypeSafe: model, answers, usage. Направьте TypeSafe-совместимый клиент на base URL https://jev-api.org или вызывайте https://jev-api.org/v1/systemone напрямую. GET /v1/models возвращает обслуживаемые модели без ключа.
POST https://jev-api.org/v1/systemone
GET https://jev-api.org/v1/modelsПринимаемые id моделей: jev-latest, jev-preview, jev-1.13, jev-1.13.0, typesafe/jev-1.13. Этот путь принимает более широкие диапазоны TypeSafe — 1–256 вопросов, 2–255 вариантов Choice, 2–10 уровней Score, instructions объектом или массивом — и лимиты 64k токенов на запрос и 32k на состояние плюс самый длинный вопрос. Тарификация та же: 1 кредит за успешный вызов.
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()Ошибки
- 401 — ключ отсутствует или отклонён.
- 402 — ключ верный, баланса не хватает. Сбой upstream не списывает кредит.
- 422 — тело не прошло проверку. Сообщение называет поле.
- 429 — сервис решений ограничен. Повторите позже.
- 502 — сервис не вернул ответы. Кредит не списывается.
Id модели
Этот API отдаёт jev-1.13. Отправляйте этот id, если порог зависит от одного распределения. На этом API jev-latest — псевдоним того же id.