
eu/jev: Germany-hosted text classification API
Turn context into categories, probabilities and scores through an independent hosted API.

eu/jev is an independent decision API operated by Bevelites GmbH. It helps developers turn supplied context into structured answers for support triage, content classification and option evaluation.
A text classification API, explained simply
Imagine receiving a message saying a customer was charged twice. You define billing and technical-support categories, describe what each means, and ask eu/jev which team should handle it. Your application receives a selected option and probability information rather than needing to interpret a long answer.
The browser Playground demonstrates this interaction; the API is the main integration route. Connecting a prediction to your ticketing system or another action remains your application’s work.
Route a support message with named options
First obtain an admitted account and a dashboard API key. Access applications are reviewed as capacity opens; a form submission does not itself create an account or guarantee admission. Keep the key on your server, outside browser code and source control.
Prepare the message as state, give the question a name, and define 2–10 categories with useful descriptions. Send JSON to POST https://eu-jev.com/v1/systemone using Bearer authentication and Content-Type: application/json. The model may be jeff-latest, or a documented pinned release such as jeff-1.0.0.
The example below is written from the public request format, not an authenticated test. After a successful response, inspect answers.team.choice, probabilities and confidence. State can also be a JSON object or array. The docs do not publish a complete language-support list; test your intended language and domain.
The official documentation also provides JavaScript and Python HTTP examples.
curl https://eu-jev.com/v1/systemone \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jeff-latest",
"state": "An invoice shows an extra payment. Please help me resolve it.",
"questions": {
"team": {
"type": "choice",
"instructions": "Select the team that should handle this message.",
"criteria": {
"billing": "Invoices, payments and refunds",
"technical": "Errors, outages and account access"
}
}
}
}'
API request and error documentation
Read Choice, Noul and Score correctly
Choice returns the selected option, per-option probabilities and confidence. Its confidence is normalized against a uniform guess, so it differs from the chosen option’s probability. Noul returns a true/false probability between 0 and 1. Score uses an ordered list of 2–10 criteria and returns an expected position between 0 and N−1, plus probabilities, confidence and a legend; it is not a universal percentage scale.
Compare predictions with reviewed answers on representative and ambiguous examples before selecting automation thresholds. Responses also include the resolved model, input-token usage, request ID and, on success, exact meta.cost_eur.
Trial credit, token billing and access
Verified 5 October 2026, in EUR: admitted new accounts receive €5 in one-off promotional credit, with no monthly reset or automatic charging. The rate is €37 per billion input tokens, equivalent to €0.037 per million; output tokens are free.
Input includes state, instructions, criteria and preparation tokens. Shared state counts once, plus each question’s inputs; repeated or cached inputs use the same rate. The service checks cost before inference and charges only successful results. Signed-in Playground calls share the account balance. Insufficient credit returns HTTP 402 insufficient_credits before inference. Request extra usage through the official form; paid arrangements require a separate express agreement, rather than automatic subscription conversion.
Germany-hosted inference and account data
The origin, application database and model worker run at Hetzner in Germany. The documented inference path has no external model proxy or CDN. Prompts and answers are not persisted in application storage or logs and are not used for training, but worker RAM caches may survive across requests until replaced, cleared or restarted.
Account, credit, usage and security metadata are stored, without an automatic age-based deletion job for account/usage records. Optional Google login, email and the external request form may involve processing outside the EEA, including the US. German inference hosting therefore does not mean every service data flow is EU-only. Business personal-data use requires a DPA; use synthetic or nonpersonal text in the anonymous Playground. Sensitive or high-risk processing needs separate safeguards.
Sensitive or high-risk processing requires separate written conditions and safeguards; consequential decisions need appropriate human review.
Privacy and data handling · Business data processing agreement
Input limits, queues and migration
API keys and signed-in Playground activity share 60 requests per minute per account. Anonymous Playground usage permits 12 per minute and 100 per day per visitor. API limits include a 256 KiB body, 100,000-character string state, eight questions, 1,000 characters per instruction and 500 per criterion after serialization. Prepared input must also fit 32,768 context positions; branching and formatting count toward that allocation. The Playground text field has its own 12,000-character limit.
Requests run one at a time; keyed calls have priority, and a queued request can wait up to 20 seconds. Respect Retry-After on 429 or a full-queue 503; shorten unsuitable input on 422. latency_ms excludes network round trips and other stages, so it is not end-to-end latency.
Compatibility with TypeSafe covers the HTTP payload structure. This service uses its own model; Jev model IDs return 400. SDK interoperability and identical predictions are not guaranteed. Commercial integrations follow the service terms; the Winnow base model does not establish an open-source or self-hosted licence for the hosted service.
Questions developers ask
What does eu/jev classify?
It converts context into a choice, probability or ordered score. Support messages and content classification are documented examples; define the task and options yourself.
How do I call the classification API?
Use an admitted account’s server-side key, POST JSON state and named questions, then check the HTTP status before reading answers. The request example and docs describe the complete format.
How should I check probabilities before automating a decision?
Test representative cases against checked answers, inspect mistakes and retain human review for uncertain or consequential decisions. A confidence value is not measured task accuracy.
Does the trial credit renew every month?
No. Admitted accounts receive €5 once, not a monthly allowance. Successful calls use the published input-token rate; extra usage and any payment need a separate agreement.
Does German hosting cover every account data flow?
No. Inference is hosted in Germany, while optional Google login, email and the request form may involve processing outside the EEA. Business personal-data processing requires a DPA.





