THE OPENJEV API DOCUMENTATION
Call OpenJEV
The next generation of intelligent software can come from anyone. We built OpenJEV to make sure anyone can build it.
Build intelligence into every workflow. Send context and questions to Jev, and get structured decisions your code can act on.
Text, objects, or arrays
Choice · Score · Noul
Route, rank, or flag
Make your first call.
No SDK required. Use any HTTP client.
- 1
Get a key
Sign in to your dashboard ↗ and create an API key.
- 2
Keep it on your server
Save it as
OPENJEV_API_KEYin your environment. - 3
Send state + questions
Copy an example below. Read each result from
answers.
https://api.openjev.sh/v1/systemoneAuthorizationBearer <your API key>
Content-Typeapplication/json
Use the key in server-side code. The playground lets you explore requests without putting a key in your frontend.
Start with a small decision.
Switch the task or language. The request and illustrative response stay together.
Send a customer message to the right team.
{
"model": "openjev",
"state": "My card was charged twice. Please help ASAP.",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments and refunds",
"technical": "Bugs and integrations",
"sales": "Pricing and new accounts"
}
}
}
}Try it in the playground {
"model": "openjev",
"answers": {
"team": {
"type": "choice",
"choice": "billing",
"probabilities": {
"billing": 0.94,
"technical": 0.04,
"sales": 0.02
},
"confidence": 0.85
}
}
}Read answers.team.choice to get the selected team.
Sample values, not a live API result. Run the request in the playground to see the actual output.
JSON is the request body. Choose cURL, JS / TS, or Python for a complete HTTP request.
One shared context.
Every question sees the same state. Send independent questions together in a single call.
| Field | Type | What to send |
|---|---|---|
stateRequired | String, object, array | The text and facts needed to answer your questions. Include the relevant records or policy here. |
questionsRequired | Object | A non-empty map of question IDs to question definitions. Your IDs map each result back to your code. |
modelOptional | String | openjev is the default model. |
Put the question in instructions. IDs such as team label the answer for your application. They do not replace an explicit question.
Choose the shape of the answer.
Mix all three types in one request. Keep each question focused on one judgment.
Choice
Pick one option from a set you define.
"choice": "billing"- Criteria
- Up to 255 named options
- Returns
- Choice, probabilities, confidence
Score
Evaluate something on an ordered scale.
"score": 1.6- Criteria
- Up to 10 ordered levels
- Returns
- Score, legend, probabilities, confidence
Noul
Measure a yes-or-no judgment.
"noul": 0.92- Criteria
- Optional true / false descriptions
- Returns
- A value from 0 to 1
Your code closes the loop.
Read a result by its question ID, then apply your application’s rules.
Know what each signal means.
- Choice & Score include probabilities and confidence from 0 to 1.
- Noul is near 1 for yes, near 0 for no, and near 0.5 for uncertainty. It has no separate confidence field.
- Confidence is a signal, not a guarantee of correctness. Validate thresholds on your own examples.
const { team } = data.answers;
// Tune this threshold on your data.
if (team.confidence < 0.8) {
queueForReview(ticket);
} else {
routeTicket(ticket, team.choice);
}Your application implements the routing and review functions.
Know what to do next.
Check the HTTP status before using the answers.
401Authentication
Check the Bearer header and that your API key is valid.
422Invalid request
Check the JSON body, include state and a non-empty questions map, and use model openjev.
429Rate limited
Respect Retry-After when present. Reduce concurrency and retry with backoff.
503Temporarily unavailable
Retry with backoff. Keep a fallback for requests that still fail.
Provider errors may return other statuses. Handle non-2xx responses and network failures in your integration.