Quickstart
Every model runs at https://api.milliseconds.ai. This page makes one call to decision-machine-1, then one call to rakeaudio. Both calls use the same key.
Every request needs an API key. Sign up in the console, then copy the automatically created Playground test key from API keys.
Send it as Authorization: Bearer test_sk-... on every /v1 route. See Authentication. Test keys include 125 million free input tokens each month. Production keys use purchased credits at $0.04 per million input tokens and $0 per output token. See Pricing.
To try a live decision without copying a key, open the console playground. It uses your workspace’s test key automatically.
Make your first decision
Pick a capability
Start with Classify. It takes text and labels, and returns one label with a probability.
What each field means
Three headers come back on every capability response: x-input-chars (79 here), the number of input characters, x-input-tokens (20 here), the input tokens billed for this call, and x-inference-ms, the model processing time for this request.
Label descriptions improve accuracy. The model reads the label text, so "billing": "payments, invoices, charges or refunds" scores better than a bare billing. Read more in writing good statements and labels.
The same call from your code
Three clients speak decision-machine-1. They turn your label names into your result types. See SDKs.
TypeScript
Python
dm1
Without the SDK
Any HTTP client works. The body and the response are the ones above.
Ask several questions at once
Every capability accepts texts for a batch of inputs. yes-no also accepts statements, and answer accepts questions. Statements share one model call, so they cost almost nothing extra.
Results come back in input order. The limits are 32 texts, 32 statements and 32 questions per call. Batching covers the ordering rules and the fan-out.
Transcribe an audio file
rakeaudio takes the audio file itself as the request body. Send the file bytes, not JSON. Set Content-Type to the audio type.
A 19-second support call returned in 1.0 second. This is the real response, with the word lists cut short:
The call billed 15,840 input tokens (x-input-tokens): 19.0075 seconds at $0.12 per audio hour. Leave out diarize (it defaults to false) for a transcript without speakers, at $0.10 per audio hour. Transcribe describes every field.
When a call fails
Every endpoint returns errors in one envelope:
Two codes need a retry, not a code change. runner_error (502) means inference failed twice. overloaded (529) means every inference slot stayed busy. Retry both with backoff. Errors lists every code.