TypeSafe Jev-compatible structured-decision API served by an unmodified llama-server.
All /v1/* endpoints require the API key as a Bearer token:
Authorization: Bearer <your-api-key>
Missing or wrong key → 401. /health, this page, and the docs below are public.
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/v1/systemone | POST | yes | Evaluate a batch of typed questions (noul / choice / score) against a conversation or image, returning per-option probabilities |
/v1/models | GET | yes | Accepted model IDs |
/v1/limits | GET | yes | Request limits (questions, answers, body, context, concurrency) |
/health | GET | no | Readiness + backend/model info |
/health/live | GET | no | Liveness probe |
curl https://system1.mckeown.in/v1/systemone \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <your-api-key>' \
-d '{
"model": "jev-latest",
"state": [{"role": "user", "content": "I was charged twice. Please refund the duplicate."}],
"questions": {
"refund": {"type": "noul", "instructions": "Does the user request a refund?"},
"department": {"type": "choice", "instructions": "Which team?",
"criteria": {"billing": "Payments and refunds", "technical": "Software bugs"}},
"urgency": {"type": "score", "instructions": "How urgent?",
"criteria": ["Routine", "Urgent", "Emergency"]}
}
}'
One entry per question: noul questions return {"noul": p}; choice returns the picked label plus a full probabilities map and confidence; score returns a continuous score, a legend, and per-bucket probabilities. Use model: "jev-latest" for state; image content is accepted as {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}} parts.