Skip to main content
POST /v1/responses Tools are declared with a flat function schema (no nested function key). The model returns function_call items inside the output array.

Define a tool

Full loop

Streaming

Stream with stream=True. Tool arguments arrive as response.function_call.arguments.delta events; a response.function_call.done event signals the call is complete.

Forcing a tool

Parallel tool calls

Multiple function_call items can appear in a single output array. Produce one function_call_output per call_id.
Last modified on April 21, 2026