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

One free trial decision for new visitors — ask a choice question and get back the whole distribution.