Sign-up and API keys are open. Paid top-ups open soon.What changed
Docs menu

Getting started

Dex documentation

What the decision API does, the three question types, how a call looks, and where to read next.

View as Markdown

thinQit Dex is a decision API hosted in the EU. You send a state (text or JSON) plus typed questions about it, and you get typed answers with calibrated probabilities. On GPU model versions, the same request to the same version returns the same answer every time. Requests are processed in the EU, and by default no request content is stored. You pay for input tokens only, and output is free.

Sign-up and API keys are open: create a free test key in the console at https://thinqit.ai/console/. Paid top-ups open soon. The SDKs, the CLI and the VS Code extension are coming soon to their registries; until then, install them from Downloads. You can also run a mock of the API from the published contract: see Try it today with a mock server.

The three question types

Type What it asks What you get back
pick Which one of these 1 to 255 labeled options fits? choice, a probability per option, confidence
rate (beta) Where does it sit on this scale of 2 to 10 ordered levels? rating, a probability per level, confidence
check Is this statement true? probability of yes, confidence

rate is in beta: on our test set it agrees with the reference on 63.7% of questions, below our bar of 68%. See Questions.

Every answer also has abstained. It is true when you set a min_confidence for the question and the answer's confidence falls below it. See Questions and Abstention.

How a call looks

You send one POST https://api.thinqit.ai/v1/decide with a state and your questions. Each question has an id you choose, here angry:

{
  "state": {
    "ticket": {
      "channel": "email",
      "subject": "Charged twice, still no answer",
      "body": "This is the third time I am writing. You charged my card twice for order 4471 and nobody replies. Fix it today or I cancel my subscription."
    }
  },
  "questions": {
    "angry": {
      "type": "check",
      "instructions": "Is the writer of {{ticket.body}} angry?",
      "min_confidence": 0.6
    }
  }
}

The response names the exact model version, the path that served it, the calibration version and what you paid. Illustrative values:

{
  "id": "req_01M5D0000000000000000000AB",
  "object": "decision",
  "created": 1792497700,
  "model": "dex-1.0.0",
  "served_by": "gpu",
  "calibration": "cal-20261015-1",
  "answers": {
    "angry": { "type": "check", "probability": 0.9421, "confidence": 0.8842, "abstained": false }
  },
  "usage": {
    "input_tokens": 70,
    "state_tokens": 52,
    "question_tokens": 18,
    "charge_micro_cents": 350,
    "unit_price_micro_cents": 5,
    "tier": "t1"
  }
}

{{ticket.body}} is a field reference. It points the question at one field of the state without sending that field twice.

Where to go next

Getting started:

  • Quickstart: get a key, try the mock, make a call in curl, Python or TypeScript, and act on the answer.

Concepts:

  • State: what you send, as a string or as JSON, and how it is billed.
  • Questions: pick, rate and check, criteria, and question ids.
  • Field references: point a question at one field with {{path}}.
  • Confidence: how confidence is computed and what it is not.
  • Abstention: let an unsure answer say so with min_confidence.
  • Determinism: the same answer every time, and where that guarantee applies.
  • Calibration: what the probabilities mean and how we check them.
  • Models and versions: the dex-1 alias, exact versions and their lifecycle.
  • Fallback and served_by: when a hosted fallback answers, and how to keep a request on the GPU.

Reference: