Using the Responses API - migration guide from Chat Completions

Marcus Webb
Marcus WebbMar 1, 2026

With the new Responses API, I wanted to document my migration experience from Chat Completions.

Key differences

1. Input format is simplified — no more role/content message objects for simple queries 2. Built-in tool definitions replace function calling 3. Streaming uses a different event format 4. Web search and file search are first-class tools

# Old way (Chat Completions)
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}]
)

New way (Responses API)

response = client.responses.create( model="gpt-4o", input="Hello" )

The Responses API feels much more ergonomic. The main gotcha is that the streaming event names changed.

5.1k views26 replies72 likes

Log in to reply to this topic.