OpenAI-compatible API
OpenAI-compatible API
Point any OpenAI client at decision-machine-1 for structured extraction and function calling.
decision-machine-1 serves an OpenAI-compatible surface at https://api.milliseconds.ai/v1.
Keep your existing OpenAI client. Change the base URL and the model name.
Set base_url to https://api.milliseconds.ai/v1 and model to decision-machine-1.
No API key is required during the launch period. Most clients demand a key, so send any string.
The facade is a compatibility layer, not a chat model. It supports two modes: structured extraction and function calling. Other chat requests return 400.
The first call
This call extracts a typed object from one sentence.
The response is an ordinary chat completion. The JSON arrives as the assistant content string.
Which messages the model reads
The model reads the text of your user messages and nothing else.
System prompts do nothing here. A decision model takes no instructions, only text. The facade drops those messages before it runs the decision.
Put the text you want a decision about in a user message. Put the instruction in the schema or the tool description. Descriptive field names carry the meaning, so follow the rules for writing good statements and labels.
The two supported modes
response_format.json_schema runs extract. The assistant content is the JSON string, finish_reason is stop.
tools picks one tool and fills its arguments. finish_reason is tool_calls, content is null.
The server picks the mode in a fixed order:
- A
modelother thandecision-machine-1returns404 model_not_found. - No user message with text returns
400 invalid_request. tools, withtool_choiceabsent or other than"none", runs function calling.toolswins overresponse_format.response_format.typeofjson_schemaruns structured extraction.- Anything else returns
400 unsupported_request.
Plain chat returns 400 on purpose
decision-machine-1 generates no prose. A chat request without a schema or tools is a mistake, so the API says so rather than guessing.
The same 400 covers response_format: {"type":"text"}, response_format: {"type":"json_object"}, and tool_choice: "none" without a usable response_format.
Model discovery
GET /v1/models lists exactly one model. Client libraries that probe the model list work without change.
GET /v1/models/decision-machine-1 returns that one object. Any other id returns 404.
What the facade does not carry
The facade returns OpenAI shapes only. Probabilities, confidence, character offsets and batches have no place in a chat completion, so the facade drops them. The native capabilities return all four.
The facade accepts and ignores sampling fields such as temperature, top_p and max_tokens. The usage block reports prompt_tokens, the request’s input tokens. Streaming and differences lists every deviation.
Next
- Structured extraction — the full
json_schemamode, with the supported types. - Function calling — tool selection and argument filling.
- When to use the native API — what you gain by leaving the facade.