What models support parallel_tool_calls, and when to use it?

The limited documentation available for parallel tool calls suggests:

“The model may choose to call multiple functions in a single turn. You can prevent this by setting parallel_tool_calls to false, which ensures exactly zero or one tool is called.”

However, some models, like o3 and 4o seem fail when called with parallel_tool_calls=True as an unsupported parameter. 4.1 seems to support it. Without it, it may or may not call tools in parallel. That leaves us having to special case 4.1 only.

Is this accurate? If so can you update the API documentation to make it explicitly clear whats supported and what is not for each model? This would be great for all of the available models and really reduce guess work.

1 Like

This is an important idea to pursue.

  • The API reference is WRONG

    parallel_tool_calls - boolean - Optional - Defaults to true

  • models like o4-mini do not actually fail, they just don’t have the parallel wrapper.

Making an explicit request with "parallel_tool_calls":true to o4-mini shows us:

HTTP status 400 error
message: Unsupported parameter: 'parallel_tool_calls' is not supported with this model.

The models pages with per-model description with supported features could have a field right next to “function calling” that states “parallel function calling”.