Getting started
Drex API
Send state and typed questions. Get a calibrated probability for every answer in one call.
Drex is a decision model. You send state (text or JSON) and a set of named, typed questions about that state. Drex answers every question in one HTTP call and returns a probability distribution for each answer, so you can act on the answer and on how sure the model is.
The API is one endpoint, POST /v1/systemone at https://console.nace.ai, authenticated with a Bearer key. Call it over HTTP, from the Python or TypeScript SDK, or with the CLI.
One request, three answers
This request asks three questions about one support ticket. The response is illustrative, not a measured Drex 2.0 output. Actual probabilities, usage and timings vary.
{
"model": "drex-latest",
"state": "I was charged twice for my March invoice. Please refund one of the charges.",
"questions": {
"category": {
"type": "choice",
"instructions": "What is this support ticket about?",
"criteria": {
"billing": "Payments, invoices, refunds, or charges",
"technical": "Bugs, errors, or outages",
"account": "Login, profile, or permissions",
"other": null
}
},
"sentiment": {
"type": "score",
"instructions": "How upset is the customer?",
"criteria": ["Calm", "Mildly annoyed", "Frustrated", "Angry"]
},
"wants_refund": {
"type": "noul",
"instructions": "Is the customer asking for a refund?"
}
}
}{
"model": "drex-v2.0",
"answers": {
"category": {
"type": "choice",
"choice": "billing",
"confidence": 0.986,
"probabilities": {
"billing": 0.9895,
"technical": 0.005,
"account": 0.0006,
"other": 0.0049
}
},
"sentiment": {
"type": "score",
"score": 1.5306,
"legend": ["Calm", "Mildly annoyed", "Frustrated", "Angry"],
"probabilities": { "0": 0.1572, "1": 0.3516, "2": 0.2946, "3": 0.1966 },
"confidence": 0.7183
},
"wants_refund": {
"type": "noul",
"noul": 0.9868,
"confidence": 0.9868
}
},
"usage": { "input_tokens": 106, "output_tokens": 212 },
"evaluation_time_ms": 142.6,
"request_id": "req_3f9c2b7e1a4d4c0e9b8a7f6e5d4c3b2a"
}Each answer carries its type, so you can read answers.wants_refund.noul without checking what kind of question you asked. Billing counts input tokens only. See Pricing.
Three question types
noulasks a yes or no question. The answer isnoul, the probability of yes, from 0 to 1.choicepicks one label from a set you define. The answer is the chosen label, a probability per label, and a confidence.scoreplaces the state on an ordered scale you define. The answer is an expected score, a probability per level, the legend, and a confidence.
Questions covers each type in detail, and Reading answers covers what to do with the numbers.
Coming from TypeSafe
Drex is wire-compatible with TypeSafe's Jev. The TypeSafe SDK works against Drex after you change three environment variables, and the Nace SDKs follow its interface, so switching to them is mostly a rename. A few requests that TypeSafe accepted return a 422 from Drex on purpose. Migrate from TypeSafe lists them.