OpenAI API breaking changes & specification history.
Responses, models, embeddings, and media APIs.
18 recorded releases · Last captured 18 Oct 2026.
Which OpenAI API endpoints have captured breaking changes?
18 recorded releases; last specification capture . This dated snapshot contains 67 sampled findings from 10 recent releases, including 14 breaking findings. Up to ten findings are retained per release; these counts are not totals for the complete API history.
Snapshot retrieved . A capture date is not a provider deployment date. Missing or unmatched repository usage is not proof of safety.
| Classification | Sampled findings |
|---|---|
| Breaking | 14 |
| Non-breaking | 39 |
| Needs review | 12 |
| Deprecation | 2 |
| Pending classification | 0 |
| Operation | Field and rule | Capture |
|---|---|---|
GET /agents/sessions/{session_id} | spend_controlresponse.removed | |
POST /agents/sessions | /responses/201/content/text~1event-stream/schema/oneOf/14/properties/session/properties/spend_controllevel.error | |
GET /agents/sessions/{session_id}/events | /responses/200/content/text~1event-stream/schema/oneOf/15/properties/session/properties/spend_controllevel.error | |
GET /agents/sessions/{session_id} | /responses/200/content/application~1json/schema/properties/spend_controllevel.error | |
POST /agents/sessions | spend_controlresponse.removed | |
POST /agents/sessions/{session_id} | spend_controlresponse.removed | |
GET /agents/sessions | data/items/spend_controlresponse.removed | |
POST /agents/sessions | /responses/201/content/text~1event-stream/schema/oneOf/12/properties/session/properties/spend_controllevel.error | |
POST /responses | Operation-level changerequest.content_removed | |
POST /responses/compact | output/items/oneOf[subschema #10: Web search tool call]/action/oneOf[subschema #3: Find action]/urlresponse.now_optional_or_nullable | |
POST /live/sessions/{session_id}/accept | /requestBody/content/application~1json/schema/properties/session/properties/triggers/itemslevel.error | |
POST /live/sessions/{session_id}/accept | /requestBody/content/application~1json/schema/properties/session/properties/triggerslevel.error | |
POST /live/sessions | /requestBody/content/application~1json/schema/properties/session/properties/triggers/itemslevel.error | |
POST /live/sessions | /requestBody/content/application~1json/schema/properties/session/properties/triggerslevel.error |
Where does this evidence come from?
- Publisher specification
- Official specification source
- Configured SDK matching
- openai
- API authentication
- bearer
- Publisher version
- 2.3.0
How to check affected code in GitHub · Read a captured OpenAI change report
Snapshot captured 3 Nov 2026. Breaking describes contract evidence; repository impact is a separate analysis.
OpenAI captured release evidence
Dated snapshot: . Latest 10 captured releases, with up to ten findings per release. Contract findings describe specification changes; repository impact is a separate analysis.
OpenAI API specification changes · Revision 1ce9368d
0 recorded findings · no changes · Previous revision 39a28223
No classified endpoint findings recorded for this release.
OpenAI API specification changes · Revision 39a28223 · POST /agents/sessions
POST /agents/sessions11 recorded findings · classified · Previous revision a62a4100
Needs review: POST /agents/sessions
removed `#/components/schemas/ParityDiffShared_362e316e9bcd17062ef21b97f7d89d7b2c01b45bed7a211d40169c2d9e068ae0` from the `agent/service_tier` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Non-breaking: POST /agents
added `#/components/schemas/ParityDiffShared_9957c8b5c471bdaf846af7c5e746ef45e0de19b0bbf6e7eb0ab9572fd4ac7fcf` to the `service_tier` request property `anyOf` list
Field: anyOf
Rule: request.added
Non-breaking: POST /moderations
added `#/components/schemas/ParityDiffShared_b89de492c42eaee257613aabed8692757d9999dff0f2f06c7d2314935ccde241, subschema #1, subschema #2` to the `input` request property `oneOf` list
Field: oneOf
Rule: request.added
Non-breaking: POST /agents/sessions
added `#/components/schemas/ParityDiffShared_9957c8b5c471bdaf846af7c5e746ef45e0de19b0bbf6e7eb0ab9572fd4ac7fcf` to the `agent/service_tier` request property `anyOf` list
Field: anyOf
Rule: request.added
Needs review: POST /agents/sessions/{session_id}
removed `#/components/schemas/ParityDiffShared_362e316e9bcd17062ef21b97f7d89d7b2c01b45bed7a211d40169c2d9e068ae0` from the `agent/service_tier` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Non-breaking:
a breaking change was detected but the version is still `2.3.0`
Rule: level.info
Needs review: POST /moderations
removed `#/components/schemas/ParityDiffShared_6307edc4244621d2e57d65f38e8fc98e651f44033b5faa3d7c79dd20362ded0b, subschema #1, subschema #2` from the `input` request property `oneOf` list
Field: oneOf
Rule: request.removed_unknown_strictness
Needs review: POST /agents/{agent_id}
removed `#/components/schemas/ParityDiffShared_362e316e9bcd17062ef21b97f7d89d7b2c01b45bed7a211d40169c2d9e068ae0` from the `service_tier` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Non-breaking: POST /agents/sessions/{session_id}
added `#/components/schemas/ParityDiffShared_9957c8b5c471bdaf846af7c5e746ef45e0de19b0bbf6e7eb0ab9572fd4ac7fcf` to the `agent/service_tier` request property `anyOf` list
Field: anyOf
Rule: request.added
Needs review: POST /agents
removed `#/components/schemas/ParityDiffShared_362e316e9bcd17062ef21b97f7d89d7b2c01b45bed7a211d40169c2d9e068ae0` from the `service_tier` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Showing the first ten findings. Open the release for the remaining changes.
OpenAI API specification changes · Revision a62a4100 · GET /agents/sessions/{session_id}
GET /agents/sessions/{session_id}26 recorded findings · partial · Previous revision 3b10dfe7
Breaking: GET /agents/sessions/{session_id}
removed the optional property `spend_control` from the response with the `200` status
Field: spend_control
Rule: response.removed
Breaking: POST /agents/sessions
/responses/201/content/text~1event-stream/schema/oneOf/14/properties/session/properties/spend_control: false -> undefined
Field: /responses/201/content/text~1event-stream/schema/oneOf/14/properties/session/properties/spend_control
Rule: level.error
Breaking: GET /agents/sessions/{session_id}/events
/responses/200/content/text~1event-stream/schema/oneOf/15/properties/session/properties/spend_control: false -> undefined
Field: /responses/200/content/text~1event-stream/schema/oneOf/15/properties/session/properties/spend_control
Rule: level.error
Non-breaking:
a breaking change was detected but the version is still `2.3.0`
Rule: level.info
Breaking: GET /agents/sessions/{session_id}
/responses/200/content/application~1json/schema/properties/spend_control: false -> undefined
Field: /responses/200/content/application~1json/schema/properties/spend_control
Rule: level.error
Breaking: POST /agents/sessions
removed the optional property `spend_control` from the response with the `201` status (media type: application/json)
Field: spend_control
Rule: response.removed
Breaking: POST /agents/sessions/{session_id}
removed the optional property `spend_control` from the response with the `200` status
Field: spend_control
Rule: response.removed
Breaking: GET /agents/sessions
removed the optional property `data/items/spend_control` from the response with the `200` status
Field: data/items/spend_control
Rule: response.removed
Breaking: POST /agents/sessions
/responses/201/content/text~1event-stream/schema/oneOf/12/properties/session/properties/spend_control: false -> undefined
Field: /responses/201/content/text~1event-stream/schema/oneOf/12/properties/session/properties/spend_control
Rule: level.error
Non-breaking: GET /agents/sessions/{session_id}/events
removed `subschema #7, subschema #14, subschema #15, subschema #16, subschema #17` from the response body `oneOf` list for the response status `200`
Rule: level.info
Showing the first ten findings. Open the release for the remaining changes.
OpenAI API specification changes · Revision 3b10dfe7 · POST /audio/voices
POST /audio/voices6 recorded findings · classified · Previous revision d6625e47
Non-breaking: POST /audio/voices
added `subschema #2: Prompt` to the request body `oneOf` list
Rule: level.info
Non-breaking: POST /audio/voices
added `prompt` mapping keys to the request discriminator
Rule: level.info
Non-breaking: POST /audio/voices
added the new `prompt` enum value to the `type` response property for the response status `200`
Rule: response.added
Needs review: POST /audio/speech
Schema acceptance comparison is unavailable; compatibility requires review.
Rule: coverage.incomplete
Non-breaking: POST /audio/voices
added the optional property `prompt` to the response with the `200` status
Field: prompt
Rule: response.added
Non-breaking: POST /audio/voices
added the media type `application/json` to the request body
Rule: level.info
OpenAI API specification changes · Revision d6625e47 · GET /responses/{response_id}?beta=true
GET /responses/{response_id}?beta=true3 recorded findings · classified · Previous revision 6a85f714
Non-breaking: GET /responses/{response_id}?beta=true
added the media type `text/event-stream` for the response with the status `200`
Rule: level.info
Non-breaking: GET /responses/{response_id}
added the media type `text/event-stream` for the response with the status `200`
Rule: level.info
Non-breaking: POST /completions
added the media type `text/event-stream` for the response with the status `200`
Rule: level.info
OpenAI API specification changes · Revision 6a85f714 · POST /organization/external_storage
POST /organization/external_storage4 recorded findings · classified · Previous revision 61c03019
Non-breaking: POST /organization/external_storage
added the new `degraded` enum value to the `status` response property for the response status `200`
Rule: response.added
Non-breaking: GET /organization/external_storage
added the new `degraded` enum value to the `data/items/status` response property for the response status `200`
Rule: response.added
Non-breaking: POST /organization/external_storage/{external_storage_id}/validate
added the new `degraded` enum value to the `status` response property for the response status `200`
Rule: response.added
Non-breaking: GET /organization/external_storage/{external_storage_id}
added the new `degraded` enum value to the `status` response property for the response status `200`
Rule: response.added
OpenAI API specification changes · Revision 61c03019 · POST /responses/input_tokens?beta=true
POST /responses/input_tokens?beta=true51 recorded findings · classified · Previous revision 6192daf3
Needs review: POST /responses/input_tokens?beta=true
removed `#/components/schemas/ParityDiffShared_de6a105c35ee0f1ee8aeb2cb0198952309c9eb47875171d6ab663ee688eb74ca` from the `input` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Breaking: POST /responses
removed `#/components/schemas/ParityDiffShared_0e8810ae43823807eccab990e34df237ac1873b84c80352dc52a45f7034c281c` from the request body `allOf` list
Rule: request.content_removed
Non-breaking: GET /responses/{response_id}?beta=true
added `#/components/schemas/ParityDiffShared_f3c9b32d07c7c87b0f4105d25003790d2e9a47ad9d88cbe9e8217a79c5e88ba2` to the response body `allOf` list for the response status `200`
Rule: level.info
Non-breaking: POST /responses/input_tokens?beta=true
added `#/components/schemas/ParityDiffShared_e2462d64ba127fba70021d861fd3fea0dfba35fc73f442fb8cee6f114b130d66` to the `input` request property `anyOf` list
Field: anyOf
Rule: request.added
Non-breaking: POST /responses/input_tokens
added `#/components/schemas/ParityDiffShared_6c8ca79733a77c8b2c7185db3692d1802be842d9bd587ca63ee116a8968f3174` to the `input` request property `anyOf` list
Field: anyOf
Rule: request.added
Needs review: POST /conversations
removed `#/components/schemas/ParityDiffShared_5e571c6ba85288e7a7ac4de3b15ee6c1bbfaf948c0a5a1a616355ee24fb85474` from the `items` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Non-breaking: POST /conversations/{conversation_id}/items
request property `items/items/oneOf[subschema #2]/oneOf[subschema #6: Web search tool call]/action/oneOf[subschema #3: Find action]/url` list-of-types was widened by adding types `null` to media type `application/json`
Field: items/items/oneOf[subschema #2]/oneOf[subschema #6: Web search tool call]/action/oneOf[subschema #3: Find action]/url
Rule: level.info
Non-breaking: POST /responses/compact?beta=true
added `#/components/schemas/ParityDiffShared_e2462d64ba127fba70021d861fd3fea0dfba35fc73f442fb8cee6f114b130d66` to the `input` request property `anyOf` list
Field: anyOf
Rule: request.added
Needs review: POST /responses/{response_id}/cancel
removed `#/components/schemas/ParityDiffShared_2d624ae74d34d1922d57369d6dcb4dfde3bed2c1d4755716e4ea669dc6cd557e` from the response body `allOf` list for the response status `200`
Rule: level.warning
Breaking: POST /responses/compact
the response property `output/items/oneOf[subschema #10: Web search tool call]/action/oneOf[subschema #3: Find action]/url` became optional for the status `200`
Field: output/items/oneOf[subschema #10: Web search tool call]/action/oneOf[subschema #3: Find action]/url
Rule: response.now_optional_or_nullable
Showing the first ten findings. Open the release for the remaining changes.
OpenAI API specification changes · Revision 6192daf3 · POST /live/sessions/{session_id}/accept
POST /live/sessions/{session_id}/accept8 recorded findings · classified · Previous revision ca9d5267
Breaking: POST /live/sessions/{session_id}/accept
/requestBody/content/application~1json/schema/properties/session/properties/triggers/items: undefined -> false
Field: /requestBody/content/application~1json/schema/properties/session/properties/triggers/items
Rule: level.error
Non-breaking: POST /live/sessions/{session_id}/accept
added `subschema #3` to the `session/delegation/anyOf[subschema #1]/` request property `oneOf` list
Field: oneOf
Rule: request.added
Breaking: POST /live/sessions/{session_id}/accept
/requestBody/content/application~1json/schema/properties/session/properties/triggers: undefined -> 2
Field: /requestBody/content/application~1json/schema/properties/session/properties/triggers
Rule: level.error
Breaking: POST /live/sessions
/requestBody/content/application~1json/schema/properties/session/properties/triggers/items: undefined -> false
Field: /requestBody/content/application~1json/schema/properties/session/properties/triggers/items
Rule: level.error
Non-breaking: POST /live/sessions
added the new optional request property `session/triggers`
Field: session/triggers
Rule: level.info
Breaking: POST /live/sessions
/requestBody/content/application~1json/schema/properties/session/properties/triggers: undefined -> 2
Field: /requestBody/content/application~1json/schema/properties/session/properties/triggers
Rule: level.error
Non-breaking: POST /live/sessions
added `subschema #3` to the `session/delegation/anyOf[subschema #1]/` request property `oneOf` list
Field: oneOf
Rule: request.added
Non-breaking: POST /live/sessions/{session_id}/accept
added the new optional request property `session/triggers`
Field: session/triggers
Rule: level.info
OpenAI API specification changes · Revision ca9d5267 · POST /threads/{thread_id}/runs
POST /threads/{thread_id}/runs7 recorded findings · classified · Previous revision c6cc35e4
Non-breaking: POST /threads/{thread_id}/runs
added `#/components/schemas/ParityDiffShared_8944f63c3647d972aba8ac91271e117f9b4772c35c6c9a5e55c87d806febe8e5` to the `model` request property `anyOf` list
Field: anyOf
Rule: request.added
Non-breaking: POST /assistants
added `#/components/schemas/ParityDiffShared_8944f63c3647d972aba8ac91271e117f9b4772c35c6c9a5e55c87d806febe8e5` to the `model` request property `anyOf` list
Field: anyOf
Rule: request.added
Needs review: POST /assistants/{assistant_id}
removed `#/components/schemas/ParityDiffShared_0ea95e4379f0601cde1a4b9fc78806b23ef5ef072f8a472807341caa2ecbe941` from the `model` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Non-breaking:
a breaking change was detected but the version is still `2.3.0`
Rule: level.info
Needs review: POST /assistants
removed `#/components/schemas/ParityDiffShared_0ea95e4379f0601cde1a4b9fc78806b23ef5ef072f8a472807341caa2ecbe941` from the `model` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Needs review: POST /threads/{thread_id}/runs
removed `#/components/schemas/ParityDiffShared_0ea95e4379f0601cde1a4b9fc78806b23ef5ef072f8a472807341caa2ecbe941` from the `model` request property `anyOf` list
Field: anyOf
Rule: request.removed_unknown_strictness
Non-breaking: POST /assistants/{assistant_id}
added `#/components/schemas/ParityDiffShared_8944f63c3647d972aba8ac91271e117f9b4772c35c6c9a5e55c87d806febe8e5` to the `model` request property `anyOf` list
Field: anyOf
Rule: request.added
OpenAI API specification changes · Revision c6cc35e4 · POST /images/variations
POST /images/variations9 recorded findings · partial · Previous revision dc0fb621
Non-breaking: POST /images/variations
added the optional property `safety_identifier` to the response with the `200` status
Field: safety_identifier
Rule: response.added
Non-breaking: POST /images/generations
added the optional property `anyOf[subschema #2]/safety_identifier` to the response with the `200` status (media type: text/event-stream)
Field: anyOf[subschema #2]/safety_identifier
Rule: response.added
Non-breaking: POST /images/edits
added the new optional request property `safety_identifier` (media type: application/json)
Field: safety_identifier
Rule: level.info
Non-breaking: POST /images/edits
added the optional property `safety_identifier` to the response with the `200` status (media type: application/json)
Field: safety_identifier
Rule: response.added
Non-breaking: POST /images/edits
added the optional property `anyOf[subschema #2]/safety_identifier` to the response with the `200` status (media type: text/event-stream)
Field: anyOf[subschema #2]/safety_identifier
Rule: response.added
Deprecation: POST /images/generations
request property `user` deprecated
Field: user
Rule: deprecation
Non-breaking: POST /images/generations
added the new optional request property `safety_identifier`
Field: safety_identifier
Rule: level.info
Deprecation: POST /images/edits
request property `user` deprecated (media type: multipart/form-data)
Field: user
Rule: deprecation
Non-breaking: POST /images/generations
added the optional property `safety_identifier` to the response with the `200` status (media type: application/json)
Field: safety_identifier
Rule: response.added