Start here

Overview

decision-machine-1 turns text into seven typed decisions, over a plain JSON API and an OpenAI-compatible surface.

decision-machine-1 is a decisions API. You send text and a question about it. You get a typed answer back: a yes/no, a label, a rating, an answer span, a filled JSON Schema, a list of entities, or a value check.

It does not write prose. It does not chat. Every call returns structured JSON with probabilities, so your code can branch on a number instead of parsing a sentence.

Every call goes to one base URL.

https://api.milliseconds.ai

No API key is required during the launch period. The API is public. You pay $0.04 per million input tokens and $0 per output token. See Pricing.

Decisions, not generation. Each capability answers one question about one text. Most calls finish in 0.5 to 1.25 seconds.

The whole surface

EndpointQuestion it answersReturnsTypical latency
POST /v1/decision-machine-1/yes-noIs this statement true of the text?statement, answer, probability0.75 – 1.25 s
POST /v1/decision-machine-1/classifyWhich label applies?label, probability, confidence, scores1.18 s
POST /v1/decision-machine-1/rateWhere does this sit on a scale?score, level, confidence, scores1.02 s
POST /v1/decision-machine-1/answerWhat does the text say about this?question, answer span, probability, start, end0.56 s
POST /v1/decision-machine-1/extractFill this JSON Schema from the text.data0.72 s
POST /v1/decision-machine-1/entitiesWhere is every span of each type?entities with type, text, probability, offsets0.50 s
POST /v1/decision-machine-1/verifyDoes the text support this value?matches, probability, found0.48 s
POST /v1/chat/completionsOpenAI clients: extraction and function callingChat completion object0.43 – 1.16 s
GET /v1/modelsWhich models exist?A list with one model object

Every capability accepts text (up to 20,000 characters) or texts (up to 32 items). A batch returns { "results": [ ... ] } in input order.

The latencies are curl wall-clock times against production on 2026-09-16. They include TLS and internet transit.

One call

curl -X POST https://api.milliseconds.ai/v1/decision-machine-1/classify \
-H "Content-Type: application/json" \
-d '{
"text": "I was charged twice for my subscription this month and support has not replied.",
"labels": {
"billing": "payments, invoices, charges, refunds",
"shipping": "delivery, tracking, returns",
"account": "login, password, profile settings"
}
}'
{"label":"billing","probability":0.995,"confidence":0.972,"scores":{"billing":0.995,"shipping":0,"account":0.005}}

The label picks the branch. The confidence decides whether a person reviews it.

An OpenAI-compatible surface

Point any OpenAI client at https://api.milliseconds.ai/v1 with model decision-machine-1. Two modes work: response_format with a json_schema, and tools for function calling. The facade accepts any api_key string.

Plain chat returns 400 unsupported_request on purpose. The model decides, it does not chat.

When not to use it

  • You need generated text. Summaries, rewrites, replies and explanations need a large language model.
  • You need multi-step reasoning. The model makes one pass over the text. It does not plan or chain steps.
  • You need a conversation. There is no chat mode and no memory between calls.
  • Your task has no shape. Each capability needs your labels, statements, questions or schema. You define the decision.
  • You need open-ended discovery. entities finds the types you name. It does not invent new ones.

For the rest, a typed decision beats a prompt: no parsing, stable probabilities, and cost linear in characters.

Next