hostjev

Docs

One endpoint, three typed primitives, inference in the EU.

Quickstart

  1. Create an API key in the console.
  2. Set TYPESAFE_BASE_URL=https://api.hostjev.com in your environment.
  3. Send a request.
Your first decisionbash
curl https://api.hostjev.com/v1/systemone \
  -H "Authorization: Bearer hj_live_..." \
  -H "Content-Type: application/json" \
  -d @request.json

Primitives

PrimitiveWhat it asksReturns
ChoicePick one of up to 255 named options.choice, probabilities, confidence
ScoreExpected value over 2–10 ordered levels.score, probabilities, confidence
NoulCalibrated probability that a statement holds.noul

Request

POST/v1/systemonejson
{
  "state": {
    "ticket": {
      "subject": "Duplicate charge",
      "messages": ["I was billed twice for September. Please refund one."]
    }
  },
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this",
      "criteria": {
        "billing": "Charges, refunds, invoices",
        "technical": "Bugs, outages, integrations",
        "other": "Nothing fits"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "How frustrated the customer appears",
      "criteria": ["Calm", "Frustrated but civil", "Very angry"]
    },
    "refund_requested": {
      "type": "noul",
      "instructions": "The customer explicitly asks for a refund"
    }
  }
}

state may be a string, a JSON object or an array of strings. questions is a map of question id to question.

Response

200 OK · Illustrativejson
{
  "model": "decision-35b-2026-09",
  "mode": "packed",
  "usage": { "input_tokens": 187 },
  "answers": {
    "department": {
      "choice": "billing",
      "probabilities": { "billing": 0.91, "technical": 0.03, "other": 0.06 },
      "confidence": 0.91
    },
    "frustration": {
      "score": 1.32,
      "probabilities": [0.12, 0.44, 0.44],
      "confidence": 0.68
    },
    "refund_requested": {
      "noul": 0.97
    }
  }
}

model is always the versioned id that answered, never an alias. usage.input_tokens is the billed token count for the request.

Packed vs separate

The default is mode=packed. Every question shares one prefilled state, so a request with ten questions prefills your state once. It is the fastest mode; both modes bill the same tokens.

With mode=separate each question is answered in isolation. Use it when an answer must not shift with its neighbours. Expect 6–9% of answers to differ between the two modes.

Endpoints

EndpointReturns
POST /v1/systemoneDecisions.
GET /v1/modelsModel ids and aliases.
GET /v1/limitsService limits.

Limits

LimitValue
Packed request64k tokens: state and all questions
Separate request32k tokens: state and the longest question
Choice options255
Score levels2–10
Inputtext only

Writing good questions

  • Write explicit criteria for every option, not just a label.
  • Always include an other or none option.
  • Keep counting, date arithmetic and comparisons in your own code.
  • Filter state before sending: accuracy drops as irrelevant material grows.
  • State is not treated as hostile. User-controlled text can steer answers, so decide what you put in it.
  • Avoid Noul phrasings where true means "no".

Compliance

Inference runs on GPUs in EU regions. Request logging is zero-retention by default: we keep counts, latency and token totals for billing, never your state. The DPA is available on request and names every sub-processor. RunPod Secure Cloud hosts the v1 GPU workers; the company is US-headquartered and the data centres we use are in the EU. A strict-EU provider is under evaluation.