Comparison
OpenAI Decisions API vs Function Calling
Function calling lets a model decide to invoke a tool and build its arguments. The decision pattern behind the OpenAI Decisions API — and this site's decisions-1 endpoint — just answers which of your finite options applies, with a probability for each. If the model's job is to pick a branch, one of these is a lot less plumbing.
Updated
The actual difference
With function calling you declare tools, send the conversation, receive a tool_calls payload, validate its arguments, execute the function, and feed the result back. It is a loop designed for doing things.
A decision call is one round trip: state in, answer out. No tool registry, no argument schema to validate, no second call to get a usable label. The response already contains the winner plus a probability for every option.
The function-calling way
Routing a ticket through function calling means wrapping the answer inside a tool definition and parsing tool_calls. It works — and it is the right tool when the model genuinely needs to produce arguments for an action.
Function calling
// Function calling: the model decides to call a tool and
// builds its arguments. You parse tool_calls and execute it.
{
"tools": [{
"type": "function",
"function": {
"name": "route_ticket",
"parameters": {
"type": "object",
"properties": {
"team": { "enum": ["payments", "frontend", "account"] }
}
}
}
}]
}The decision way
The same routing task as a choice question: the options are named in criteria, and the answer comes back with the winning label, per-option probabilities, and a confidence value — ready to threshold against.
Decision request
// Decision endpoint: pick among finite answers and get a
// probability per option — no tool plumbing, no arg parsing.
{
"model": "decisions-1",
"state": "The page renders blank in Safari.",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should own this ticket?",
"criteria": {
"payments": "Checkout or billing.",
"frontend": "Rendering or browser behavior.",
"account": "Login or permissions."
}
}
}
}When to use which
Use function calling when the model must produce structured arguments to an action — book this, query that, fill these fields. The output feeds code that executes.
Use a decision endpoint when the output is the action's input — which queue, which branch, pass or hold. You get the distribution, not just the pick, so borderline cases can route to a human instead of guessing.
FAQ
Isn't a tool with an enum parameter the same thing?
Close in spirit — but you still build and parse the tool_calls layer, and the model's pick carries no probabilities. A decision endpoint returns the distribution, which is what makes thresholding possible.
Can I still execute an action after a decision?
Yes — map the winning label to your own function locally. The decision endpoint does the choosing; your code does the doing. That keeps the model's surface minimal.
Does OpenAI's Decisions API replace function calling?
Different jobs. Function calling produces arguments for tools you execute; a decisions API picks among finite answers with probabilities. The 2026-09-29 announcement describes the latter.
Skip the tool plumbing
Two free trial decisions for new visitors — ask a choice question and get back the whole distribution.