Limits and rate limits
decision-machine-1 enforces size limits on each request body. It does not enforce a rate limit today. The API is public and costs $0.04 per million input tokens and $0 per output token. See Pricing.
No API key is required during the launch period. Send content-type: application/json and a body.
Field limits
Every capability reads text or texts. The other fields depend on the capability.
Send text or texts, never both. Six capabilities reject a request that carries both keys. yes-no is the exception: it accepts both and reads text.
A request that carries neither text nor texts also fails with the message body: provide text or texts, not both. The message names the wrong case. Read it as “provide exactly one of the two”.
What a breach returns
A limit breach returns 400 with the standard error envelope. The message names the field and the bound. These captures are real responses:
Validation reports up to three problems, joined with ; . Each one reads path: message. See Errors for every code.
No rate limit yet
The API applies no per-client quota, no burst limit and no daily cap during the launch period. This can change. Build the retry path now.
Every capability response carries the input size in headers:
The OpenAI-compatible routes omit these headers. They report the same count inside usage.
529 is the backpressure signal
Inference runs on a fixed pool of slots. When every slot stays busy, the API returns 529:
Treat 529 as “retry later”, never as “the request was wrong”. The body is unchanged and correct. Retry with exponential backoff and jitter. The call goes through once a slot frees.
Retry 529 and 502. Never retry 400 or 404: the body must change first.
A Retry-After header is not documented. Pick your own backoff schedule.
Stay inside the limits
- Split documents above 20,000 characters yourself. Send each part as one item of
texts. - Keep a batch at 32 items or fewer. Chunk a longer queue into groups of 32 and send them in sequence.
- Batch
statementsandquestionsinstead oftextswhere you can. They cost one inference call, while each item oftextscosts its own call. - Prefer the object form of
labelsandtypeswhen you need more than 64 entries. Descriptions also improve accuracy. - Log
x-input-tokenson every call. It records the input tokens billed for that call.
Next
- Errors lists every code, status and cause.
- Batching covers
texts, result order and the 32 limit. - Long text and chunking explains what happens above 2,000 characters.