# Changelog ## [0.99.0](https://github.com/openai/openai-ruby/compare/v0.98.0...v0.99.0) (2026-10-02) ### Features * **api:** add custom voices and agent session webhook events ([#800](https://github.com/openai/openai-ruby/issues/800)) ([baaec48](https://github.com/openai/openai-ruby/commit/baaec487ca85117d6ee149cabdfe0cb8837d883c)) ## [0.98.0](https://github.com/openai/openai-ruby/compare/v0.97.0...v0.98.0) (2026-10-01) ### Features * **agents:** [1/n] parse typed output into Ruby models ([#796](https://github.com/openai/openai-ruby/issues/796)) ([49b8b70](https://github.com/openai/openai-ruby/commit/49b8b70763db318134f0eedd82bd91a7bd269943)) * **agents:** prepare hosted files and download result artifacts ([#798](https://github.com/openai/openai-ruby/issues/798)) ([9853389](https://github.com/openai/openai-ruby/commit/9853389e6c5a428c836d8ac2e4af991519e9630d)) * **api:** Add session traces and translation secrets ([#789](https://github.com/openai/openai-ruby/issues/789)) ([79e3e0c](https://github.com/openai/openai-ruby/commit/79e3e0c550e3630253bd79423a04fb108cbaa642)) * bind typed application actions to beta agent tools ([#795](https://github.com/openai/openai-ruby/issues/795)) ([c8cab4a](https://github.com/openai/openai-ruby/commit/c8cab4aa699f8563946991f6b949f4ae73b212d7)) * collect final output from beta Agents streams ([#793](https://github.com/openai/openai-ruby/issues/793)) ([35aaa3a](https://github.com/openai/openai-ruby/commit/35aaa3a881a13583bc28e25240bc86e2312ae647)) ### Bug Fixes * **api:** allow original image detail in Chat Completions ([#794](https://github.com/openai/openai-ruby/issues/794)) ([8bb025d](https://github.com/openai/openai-ruby/commit/8bb025dac3f0336309a6e12764d7520959fda0fd)) * **api:** correct the eval run cancellation endpoint ([#791](https://github.com/openai/openai-ruby/issues/791)) ([6a99f63](https://github.com/openai/openai-ruby/commit/6a99f632f0c3a9009b90b671380a8840a4c68cd1)) * enforce decoded WebSocket budget on inflater tails ([#792](https://github.com/openai/openai-ruby/issues/792)) ([2acfaf8](https://github.com/openai/openai-ruby/commit/2acfaf87c702b4ddc61ff7506f857c98ef8aa27d)) * retire canceled Responses and Live websocket writes ([#787](https://github.com/openai/openai-ruby/issues/787)) ([de62191](https://github.com/openai/openai-ruby/commit/de621915ed28f5dcc8434a61e83a976a103f2fa6)) ### Chores * **api:** retain WebRTC Live session transport types ([#790](https://github.com/openai/openai-ruby/issues/790)) ([1f15936](https://github.com/openai/openai-ruby/commit/1f159369caa98861eb45ba6c614635b9cf39a16f)) ## [0.97.0](https://github.com/openai/openai-ruby/compare/v0.96.0...v0.97.0) (2026-09-29) ### Features * **api:** add computer use to beta agents ([#782](https://github.com/openai/openai-ruby/issues/782)) ([c765120](https://github.com/openai/openai-ruby/commit/c765120933dfab5c9a4cfb1e5eec83faa9b35ee1)) ## [0.96.0](https://github.com/openai/openai-ruby/compare/v0.95.0...v0.96.0) (2026-09-29) ### Features * **api:** add Agents credential and session options ([#766](https://github.com/openai/openai-ruby/issues/766)) ([27acf38](https://github.com/openai/openai-ruby/commit/27acf382abf7e94c051d35ca3d48870064ff9d27)) * **api:** add Cyber access programs to Responses ([#757](https://github.com/openai/openai-ruby/issues/757)) ([f484e4e](https://github.com/openai/openai-ruby/commit/f484e4ee112023c2aadc71f9af549e3adf130bc1)) * **api:** add GPT-6.1 Sol model identifier ([#781](https://github.com/openai/openai-ruby/issues/781)) ([a97c14f](https://github.com/openai/openai-ruby/commit/a97c14f89620aaccda51d593b00e7c7a16507eb6)) * **live:** add optional transcript grouping over typed events ([#769](https://github.com/openai/openai-ruby/issues/769)) ([d6f2548](https://github.com/openai/openai-ruby/commit/d6f254810754f6310ead16928069a929c8a1a675)) * **live:** add sideband attachment and stored fork WebSockets ([#771](https://github.com/openai/openai-ruby/issues/771)) ([7c6cf76](https://github.com/openai/openai-ruby/commit/7c6cf76e5c381707a1c2c6b4c8a8f6e347ee2ddb)) * **live:** support caller-started primary WebSockets ([#770](https://github.com/openai/openai-ruby/issues/770)) ([dc3566d](https://github.com/openai/openai-ruby/commit/dc3566ddd9bfff7dd47a0214d8596dc95207284d)) * **realtime:** add bounded finish for Translation WebSocket consumers ([#778](https://github.com/openai/openai-ruby/issues/778)) ([a92b422](https://github.com/openai/openai-ruby/commit/a92b422402da28c0f96b9fbd4cd635ee693211c9)) * **realtime:** add typed Translation WebSocket connection ([#772](https://github.com/openai/openai-ruby/issues/772)) ([b3706d8](https://github.com/openai/openai-ruby/commit/b3706d84fbb68e700bb726559fba0da0393de567)) * **responses:** add opt-in WebSocket incremental output ([#768](https://github.com/openai/openai-ruby/issues/768)) ([e190303](https://github.com/openai/openai-ruby/commit/e1903035d709a6b8aa40c0049ea8305c63eccc61)) * **responses:** allow bounded WebSocket messages before allocation ([#775](https://github.com/openai/openai-ruby/issues/775)) ([bef7b8b](https://github.com/openai/openai-ruby/commit/bef7b8bc66d5feb42e8342fc4b3ef708fde129c5)) * **responses:** bound compressed WebSocket wire and decoded sizes ([#776](https://github.com/openai/openai-ruby/issues/776)) ([0cc6b15](https://github.com/openai/openai-ruby/commit/0cc6b15a6049b43145ea806b129e1708c8836800)) ### Bug Fixes * **websocket:** include default ports in proxy tunnels ([#780](https://github.com/openai/openai-ruby/issues/780)) ([c496e6b](https://github.com/openai/openai-ruby/commit/c496e6b301834ed5aea18ba09c514411eabf5776)) ### Chores * **api:** clarify approximate web search location defaults ([#755](https://github.com/openai/openai-ruby/issues/755)) ([f83af03](https://github.com/openai/openai-ruby/commit/f83af03a667a7045dde39d2a9ca328432e3d109b)) * **api:** clarify documented API error responses ([#765](https://github.com/openai/openai-ruby/issues/765)) ([6f786c6](https://github.com/openai/openai-ruby/commit/6f786c6a752a0a2773ecf7c1b0b4490a94104c15)) * **api:** clarify Realtime modality array definitions ([#756](https://github.com/openai/openai-ruby/issues/756)) ([9e18acf](https://github.com/openai/openai-ruby/commit/9e18acfc93ba6fbedaae37bb89956b1a4cc24b49)) * **api:** correct fine-tuning bounds and Realtime response reference ([#752](https://github.com/openai/openai-ruby/issues/752)) ([4c1cd58](https://github.com/openai/openai-ruby/commit/4c1cd583ee2b79b0355fcc30f3b340c68dcfc337)) * **api:** document batch error responses ([#760](https://github.com/openai/openai-ruby/issues/760)) ([38fec96](https://github.com/openai/openai-ruby/commit/38fec96d1c3bb77616e741e3c0d5d11b1f385b46)) * **api:** document files and uploads error responses ([#759](https://github.com/openai/openai-ruby/issues/759)) ([6cdd7b1](https://github.com/openai/openai-ruby/commit/6cdd7b1785989cdaed5e81fb956cac2ccadd2361)) * **api:** document fine-tuning and model errors ([#764](https://github.com/openai/openai-ruby/issues/764)) ([4b3b043](https://github.com/openai/openai-ruby/commit/4b3b043176413f6c70309290bf8f4129a8961c16)) * **api:** document Responses not-found errors ([#758](https://github.com/openai/openai-ruby/issues/758)) ([1d556e2](https://github.com/openai/openai-ruby/commit/1d556e20aef0e30bd6990dda1b7d9059b1d0817e)) * **api:** document stored chat completion errors ([#763](https://github.com/openai/openai-ruby/issues/763)) ([ddd1a68](https://github.com/openai/openai-ruby/commit/ddd1a68179ad1ec90af55f39f71310a59f92ddcf)) * **deps-dev:** bump sorbet-runtime from 0.6.13499 to 0.6.13506 in the development-dependencies group ([#773](https://github.com/openai/openai-ruby/issues/773)) ([be9c528](https://github.com/openai/openai-ruby/commit/be9c5289d5d7eea7c71e78be640c192f81c6544d)) * **deps:** bump ruby/setup-ruby from 1.324.0 to 1.326.0 ([#749](https://github.com/openai/openai-ruby/issues/749)) ([5aae05c](https://github.com/openai/openai-ruby/commit/5aae05c4b42f9d509bdf084282a7e33ef8758adc)) * **deps:** bump ruby/setup-ruby from 1.326.0 to 1.327.0 ([#762](https://github.com/openai/openai-ruby/issues/762)) ([3921459](https://github.com/openai/openai-ruby/commit/39214594edf3c07ed2ce71c603946462735fa6ad)) * **deps:** bump the codeql group with 2 updates ([#761](https://github.com/openai/openai-ruby/issues/761)) ([0185fa1](https://github.com/openai/openai-ruby/commit/0185fa1c637f1dbc9d3b3fa85c4c46a199702188)) ### Documentation * clarify collaborator-only pull request policy ([#750](https://github.com/openai/openai-ruby/issues/750)) ([c704778](https://github.com/openai/openai-ruby/commit/c7047782ff2ae38a859a08ef199e67a79c16b9fe)) ## [0.95.0](https://github.com/openai/openai-ruby/compare/v0.94.0...v0.95.0) (2026-09-23) ### Features * **api:** Add GCP external storage support ([#746](https://github.com/openai/openai-ruby/issues/746)) ([194a9dc](https://github.com/openai/openai-ruby/commit/194a9dcd2e23f0a561a3ed25f284171557881201)) * **api:** add GPT-Rosalind research model ([#744](https://github.com/openai/openai-ruby/issues/744)) ([eb275f3](https://github.com/openai/openai-ruby/commit/eb275f334dfcec58bdca4bb739613efb68cf593f)) ### Chores * **api:** document exact Chat Completions seed bounds ([#747](https://github.com/openai/openai-ruby/issues/747)) ([6948496](https://github.com/openai/openai-ruby/commit/6948496b0750cb8a7f44a85bfa749f4a9ba5529f)) ## [0.94.0](https://github.com/openai/openai-ruby/compare/v0.93.0...v0.94.0) (2026-09-22) ### Features * **api:** add GPT-6 Sol and Luna model identifiers ([#743](https://github.com/openai/openai-ruby/issues/743)) ([906ef5f](https://github.com/openai/openai-ruby/commit/906ef5fa5317188096d690079e7308931fbee187)) ### Reverts * defer API error response documentation ([#741](https://github.com/openai/openai-ruby/issues/741)) ([687aef9](https://github.com/openai/openai-ruby/commit/687aef9e2e7b4cdea1634ea139c4240e0fdf370d)) ### Chores * **api:** document API error response contracts ([#728](https://github.com/openai/openai-ruby/issues/728)) ([475318f](https://github.com/openai/openai-ruby/commit/475318f0815207cbe1beee8f4d6839dd92870dba)) * **deps-dev:** update development dependencies compatibly ([#738](https://github.com/openai/openai-ruby/issues/738)) ([3e790c2](https://github.com/openai/openai-ruby/commit/3e790c2d260ed6f98845cd44cc7c77b19e72547b)) * **deps:** bump the codeql group with 2 updates ([#735](https://github.com/openai/openai-ruby/issues/735)) ([c41a312](https://github.com/openai/openai-ruby/commit/c41a3121d0500f0db3deb613896b9302dd3202f4)) ## [0.93.0](https://github.com/openai/openai-ruby/compare/v0.92.0...v0.93.0) (2026-09-22) ### Features * **api:** add external storage configuration management ([#724](https://github.com/openai/openai-ruby/issues/724)) ([8d1179a](https://github.com/openai/openai-ruby/commit/8d1179aab1cebd3b394d5c91cc48ba447be1993a)) * **api:** add safety case retrieval ([#725](https://github.com/openai/openai-ruby/issues/725)) ([fb153b4](https://github.com/openai/openai-ruby/commit/fb153b452adc316fae50584b55eafe7d16b68047)) * **api:** add safety warning and deactivation webhook events ([#723](https://github.com/openai/openai-ruby/issues/723)) ([60886ae](https://github.com/openai/openai-ruby/commit/60886ae1a0481110426541d5e3292bb844c54b4d)) * **api:** add session environment reset events ([#727](https://github.com/openai/openai-ruby/issues/727)) ([3343547](https://github.com/openai/openai-ruby/commit/33435479c2d98603b93c810183d314bc55cd1ee7)) * **api:** add SIP media security to incoming call events ([#722](https://github.com/openai/openai-ruby/issues/722)) ([fba1557](https://github.com/openai/openai-ruby/commit/fba155790dabef0d5adc185b19d22fd6c67d0fdf)) * **api:** support environment variable vault credentials ([#721](https://github.com/openai/openai-ruby/issues/721)) ([06d3e17](https://github.com/openai/openai-ruby/commit/06d3e178112b5a64c8afd8420c538587ea305070)) ### Bug Fixes * **api:** correct model types and network policy docs ([#718](https://github.com/openai/openai-ruby/issues/718)) ([a25e46d](https://github.com/openai/openai-ruby/commit/a25e46d55c4d00cca4426b43d3ac2a0663c12248)) * **api:** preserve legacy model choices ([#737](https://github.com/openai/openai-ruby/issues/737)) ([c6414c5](https://github.com/openai/openai-ruby/commit/c6414c5d28b4fdee30ba600f31cb9b02b04dd6c2)) ### Chores * **api:** document response management resources ([#726](https://github.com/openai/openai-ruby/issues/726)) ([7f521df](https://github.com/openai/openai-ruby/commit/7f521dff687c2ff66ab870c954ecec59820b7acd)) * **deps:** bump ruby/setup-ruby from 1.323.0 to 1.324.0 ([#719](https://github.com/openai/openai-ruby/issues/719)) ([654eba5](https://github.com/openai/openai-ruby/commit/654eba5d1761501d73f317d2ed99c8d035ac9e23)) ## [0.92.0](https://github.com/openai/openai-ruby/compare/v0.91.0...v0.92.0) (2026-09-18) ### Features * **api:** add webhook endpoint management ([#715](https://github.com/openai/openai-ruby/issues/715)) ([200081b](https://github.com/openai/openai-ruby/commit/200081baaa078144426ba3678661fd63a9eaafb0)) ### Chores * **api:** deprecate MCP connector_id ([#717](https://github.com/openai/openai-ruby/issues/717)) ([d64821b](https://github.com/openai/openai-ruby/commit/d64821b69a34e8382a6c9fd67764c2081f403d38)) ## [0.91.0](https://github.com/openai/openai-ruby/compare/v0.90.0...v0.91.0) (2026-09-18) ### Features * **api:** add agent session model settings ([#708](https://github.com/openai/openai-ruby/issues/708)) ([244a98e](https://github.com/openai/openai-ruby/commit/244a98e6e2eba0aa30f094116249e84433d8794d)) * **api:** add audio-mini model choices ([#710](https://github.com/openai/openai-ruby/issues/710)) ([3cdfe3f](https://github.com/openai/openai-ruby/commit/3cdfe3f275eb0c3678803b1037b64271ace69135)) * **api:** add compaction progress events ([#706](https://github.com/openai/openai-ruby/issues/706)) ([47e2dc7](https://github.com/openai/openai-ruby/commit/47e2dc7e8cd22c1d949cfaeae32531d7dd23f9b5)) * **api:** add managed Responses WebSocket sessions ([#711](https://github.com/openai/openai-ruby/issues/711)) ([a619653](https://github.com/openai/openai-ruby/commit/a61965302b90800fbdb2b888a0a666695cfbf825)) * **api:** add prompt-cache prewarming ([#712](https://github.com/openai/openai-ruby/issues/712)) ([61b5692](https://github.com/openai/openai-ruby/commit/61b56920641a4b241ded57b289b587b5698db55a)) ### Chores * **api:** clarify incoming SIP call ID usage ([#709](https://github.com/openai/openai-ruby/issues/709)) ([cedfada](https://github.com/openai/openai-ruby/commit/cedfada1f4bbdd4e106c84b6564c03271d5bf133)) * **deps-dev:** bump sorbet-runtime from 0.6.13455 to 0.6.13486 in the development-dependencies group ([#698](https://github.com/openai/openai-ruby/issues/698)) ([ef1dc85](https://github.com/openai/openai-ruby/commit/ef1dc859af816214dbd244a2da431e64193ac6e1)) * **deps:** bump ruby/setup-ruby from 1.321.0 to 1.322.0 ([#700](https://github.com/openai/openai-ruby/issues/700)) ([5bdc477](https://github.com/openai/openai-ruby/commit/5bdc477abc7e9e040debca40dd14e530b1c80ff1)) * **deps:** bump ruby/setup-ruby from 1.322.0 to 1.323.0 ([#707](https://github.com/openai/openai-ruby/issues/707)) ([460148c](https://github.com/openai/openai-ruby/commit/460148cd775fc588d1b20ccd6a4ef35f9985ad10)) ## [0.90.0](https://github.com/openai/openai-ruby/compare/v0.89.0...v0.90.0) (2026-09-10) ### Features * **api:** add Agents API ([#695](https://github.com/openai/openai-ruby/issues/695)) ([24324ed](https://github.com/openai/openai-ruby/commit/24324ed510a198d2f955668a231a63c46cf491c1)) ## [0.89.0](https://github.com/openai/openai-ruby/compare/v0.88.0...v0.89.0) (2026-09-10) ### Features * **api:** Add Live API ([3fde020](https://github.com/openai/openai-ruby/commit/3fde0201bc4f75af36a87acb3d71c8136c0df9c0)) ### Chores * **deps:** bump the codeql group with 2 updates ([#692](https://github.com/openai/openai-ruby/issues/692)) ([7f19b93](https://github.com/openai/openai-ruby/commit/7f19b932549bd7d4376e6ca91c7c75f9b856ae83)) ## [0.88.0](https://github.com/openai/openai-ruby/compare/v0.87.0...v0.88.0) (2026-09-09) ### Features * **api:** Add service account key expiration support ([#689](https://github.com/openai/openai-ruby/issues/689)) ([b9adc2a](https://github.com/openai/openai-ruby/commit/b9adc2ac754715e737c5fb9f457d17fd036d40d2)) ## [0.87.0](https://github.com/openai/openai-ruby/compare/v0.86.0...v0.87.0) (2026-09-08) ### Features * add FFmpeg local recording and playback helpers ([#685](https://github.com/openai/openai-ruby/issues/685)) ([4d05097](https://github.com/openai/openai-ruby/commit/4d05097f10408452aaf0efa48c499bada62846bb)) * add opt-in Realtime reconnect and send queue ([#681](https://github.com/openai/openai-ruby/issues/681)) ([21b8a70](https://github.com/openai/openai-ruby/commit/21b8a70d48e2623e32aa01f95503adcf3fa2ba75)) * **api:** add GPT Image 2.5 models and image options ([#688](https://github.com/openai/openai-ruby/issues/688)) ([02f4724](https://github.com/openai/openai-ruby/commit/02f4724eb69eebe8c46b8d51010bee364e1197ad)) ## [0.86.0](https://github.com/openai/openai-ruby/compare/v0.85.0...v0.86.0) (2026-09-08) ### Features * add Responses WebSocket mode ([#562](https://github.com/openai/openai-ruby/issues/562)) ([7c910a7](https://github.com/openai/openai-ruby/commit/7c910a78ae4418dc59e766edc2467c254b814a89)) * **api:** add cache diagnostics and fix optional RBS keys ([#604](https://github.com/openai/openai-ruby/issues/604)) ([4e4f7cd](https://github.com/openai/openai-ruby/commit/4e4f7cdda5b5e1c568badded52324af06c77378b)) * **api:** add service-account API key expiration fields ([#625](https://github.com/openai/openai-ruby/issues/625)) ([8d3f213](https://github.com/openai/openai-ruby/commit/8d3f213da707b11ddbd913a801925b00b3e2bcc9)) * **api:** correct function argument completion event fields (openapi-545) ([#622](https://github.com/openai/openai-ruby/issues/622)) ([06e2c91](https://github.com/openai/openai-ruby/commit/06e2c91dc349ba36d12ece05bf0b0cbf1ba0e220)) * **api:** recognize incomplete web search call status ([#590](https://github.com/openai/openai-ruby/issues/590)) ([1560da0](https://github.com/openai/openai-ruby/commit/1560da01073061cc0a0dadc853f7dbc6e688a4d4)) * **responses:** parse structured outputs on retrieval ([#532](https://github.com/openai/openai-ruby/issues/532)) ([41eb726](https://github.com/openai/openai-ruby/commit/41eb726b66fcb56f149553a9d681d8f1837b9b97)) ### Bug Fixes * accept documented RequestOptions extra query values ([#660](https://github.com/openai/openai-ruby/issues/660)) ([e168aa4](https://github.com/openai/openai-ruby/commit/e168aa47ee9ff81150a901c4eba1f236dea0dcf6)) * accept string Responses structured-output tags ([#617](https://github.com/openai/openai-ruby/issues/617)) ([4322e07](https://github.com/openai/openai-ruby/commit/4322e076e57b769d619175006307763e3c630cfb)) * **api:** expose metadata on binary responses ([#608](https://github.com/openai/openai-ruby/issues/608)) ([59e0643](https://github.com/openai/openai-ruby/commit/59e0643dbb37e95b4746b24b38c1489dd2867e33)) * avoid retrying ambiguous non-idempotent requests ([#650](https://github.com/openai/openai-ruby/issues/650)) ([4734cba](https://github.com/openai/openai-ruby/commit/4734cba47984a53e241e224acb7f465372b34598)) * avoid unused Responses stream snapshot copies ([#677](https://github.com/openai/openai-ruby/issues/677)) ([2996996](https://github.com/openai/openai-ruby/commit/2996996d8c68e96f5c8fb65da869a321988c5dc8)) * close proxy after WebSocket handshake failure ([#675](https://github.com/openai/openai-ruby/issues/675)) ([aeb4cf2](https://github.com/openai/openai-ruby/commit/aeb4cf2120d6eb7f204206dd5364951ad0495103)), closes [#669](https://github.com/openai/openai-ruby/issues/669) * coerce Integer strings as decimal ([#667](https://github.com/openai/openai-ruby/issues/667)) ([82f8c62](https://github.com/openai/openai-ruby/commit/82f8c62f0a68236757d57cfe3fd4a501f41270f5)) * correct Responses stream RBS contract ([#654](https://github.com/openai/openai-ruby/issues/654)) ([0d32ba4](https://github.com/openai/openai-ruby/commit/0d32ba4c555c3ea2763dade0db6618e86de84f96)) * correct Responses text enumerator Sorbet type ([#637](https://github.com/openai/openai-ruby/issues/637)) ([49ccb69](https://github.com/openai/openai-ruby/commit/49ccb69cbe4fd0a738bbc03840b7bb117bb183f6)) * declare built-in workload identity providers ([#659](https://github.com/openai/openai-ruby/issues/659)) ([cfbbb98](https://github.com/openai/openai-ruby/commit/cfbbb98f2a87340442c9b8ccd267cd54dbd31fbc)) * declare Chat stream finish exception types ([#657](https://github.com/openai/openai-ruby/issues/657)) ([87fc522](https://github.com/openai/openai-ruby/commit/87fc522b00f51b1020f64bdcaa4e56573f43ab6a)) * declare webhook signature error types ([#642](https://github.com/openai/openai-ruby/issues/642)) ([5211472](https://github.com/openai/openai-ruby/commit/52114726f0bd8780f013e95cade266e3f95677c6)) * declare workload identity error types ([#658](https://github.com/openai/openai-ruby/issues/658)) ([e6afdeb](https://github.com/openai/openai-ruby/commit/e6afdeb10815f3b3cd5a3224abd5d55a3f2b1377)) * deserialize diarized transcriptions correctly ([#652](https://github.com/openai/openai-ruby/issues/652)) ([5be26ce](https://github.com/openai/openai-ruby/commit/5be26ce71fa5855e668068075215c454ec7eeab8)) * handle non-object OAuth error bodies ([#674](https://github.com/openai/openai-ruby/issues/674)) ([13aa3d6](https://github.com/openai/openai-ruby/commit/13aa3d65ee84d242407d8ad912b0f26e4c945fe8)) * handle quoted response charsets ([#613](https://github.com/openai/openai-ruby/issues/613)) ([91d0e86](https://github.com/openai/openai-ruby/commit/91d0e86ed995f54361b329d7641af9f20163f27d)), closes [#610](https://github.com/openai/openai-ruby/issues/610) * honor custom idempotency headers for retries ([#673](https://github.com/openai/openai-ruby/issues/673)) ([5bd703a](https://github.com/openai/openai-ruby/commit/5bd703acb8b270d0ae37ea1a846dfada5f88b9fc)), closes [#671](https://github.com/openai/openai-ruby/issues/671) * honor raw StringIO request cursors ([#621](https://github.com/openai/openai-ruby/issues/621)) ([8e6abfd](https://github.com/openai/openai-ruby/commit/8e6abfd57a33ae7c7360f496f8baf15e1cf74db4)) * isolate base URL queries between requests ([#619](https://github.com/openai/openai-ruby/issues/619)) ([347e659](https://github.com/openai/openai-ruby/commit/347e659404bd7a13de57604e325c4432c875ee60)) * isolate structured output field metadata ([#655](https://github.com/openai/openai-ruby/issues/655)) ([7f3cec8](https://github.com/openai/openai-ruby/commit/7f3cec8663175c9ac1be12368bcf1c3717ca2466)) * keep Realtime metadata out of nested payloads ([#653](https://github.com/openai/openai-ruby/issues/653)) ([d1fa0d3](https://github.com/openai/openai-ruby/commit/d1fa0d3026a47cd16c4c2dcd8d68e8d1ecb854db)) * match response charset parameters case-insensitively ([#629](https://github.com/openai/openai-ruby/issues/629)) ([821d9b3](https://github.com/openai/openai-ruby/commit/821d9b3f018040a3a946f714e120f009541c9743)) * match the multipart request content type case-insensitively ([#666](https://github.com/openai/openai-ruby/issues/666)) ([55ae013](https://github.com/openai/openai-ruby/commit/55ae0137740f05f30173e3dc73d546a500b29d2a)) * normalize Bedrock environment bearer tokens ([#601](https://github.com/openai/openai-ruby/issues/601)) ([131e977](https://github.com/openai/openai-ruby/commit/131e97745f0cca1b167a533b852141ceed480c96)) * normalize workload identity error headers ([#640](https://github.com/openai/openai-ruby/issues/640)) ([1cf3762](https://github.com/openai/openai-ruby/commit/1cf37629ab61b2cc9259dff52c143b08ebe6b70a)) * parse initial streamed tool arguments ([#593](https://github.com/openai/openai-ruby/issues/593)) ([f4e2ec9](https://github.com/openai/openai-ruby/commit/f4e2ec9069d0781e376447f9f840082f00e07b81)) * parse SSE field lines that carry no value ([#631](https://github.com/openai/openai-ruby/issues/631)) ([9109f3f](https://github.com/openai/openai-ruby/commit/9109f3f79f6db401e400ca8e4cac8586a9332760)) * parse SSE retry metadata as decimal ([#624](https://github.com/openai/openai-ruby/issues/624)) ([9135d15](https://github.com/openai/openai-ruby/commit/9135d15c272b9e6102f41dc5d0fa64ac1a5fc2ec)) * parse strict tools in later chat choices ([#633](https://github.com/openai/openai-ruby/issues/633)) ([b68ce90](https://github.com/openai/openai-ruby/commit/b68ce906106cdaa165cbb6ebdd5ec34b2cc7ba2b)) * populate nested API error metadata ([#639](https://github.com/openai/openai-ruby/issues/639)) ([8dba07c](https://github.com/openai/openai-ruby/commit/8dba07cda53195755ffbf15634c516e51701ba5a)) * preserve bare CR SSE line boundaries ([#676](https://github.com/openai/openai-ruby/issues/676)) ([98c5a53](https://github.com/openai/openai-ruby/commit/98c5a5333f5d82f25ec12e7b5a9f65ea78716a12)), closes [#670](https://github.com/openai/openai-ruby/issues/670) * preserve chat stream moderation results ([#616](https://github.com/openai/openai-ruby/issues/616)) ([c2c729c](https://github.com/openai/openai-ruby/commit/c2c729ce407a526a91d5f1c0607ee190956e414d)) * preserve complete interleaved tool arguments ([#638](https://github.com/openai/openai-ruby/issues/638)) ([1f32200](https://github.com/openai/openai-ruby/commit/1f322009ccc529d03048fc1d4bee96401c58ee35)) * preserve documented file inputs on readback ([#662](https://github.com/openai/openai-ruby/issues/662)) ([0169713](https://github.com/openai/openai-ruby/commit/016971345676ade41c57fcee11b60f3adcefe652)) * preserve file semantics for pathless multipart IO ([#665](https://github.com/openai/openai-ruby/issues/665)) ([0fefbf6](https://github.com/openai/openai-ruby/commit/0fefbf68a804bdd080dfef9defe0ce45e18eaa6b)) * preserve hash-form type metadata ([#651](https://github.com/openai/openai-ruby/issues/651)) ([8de6a0f](https://github.com/openai/openai-ruby/commit/8de6a0fc26ba8649d6621689ce5c342799c0a786)) * preserve text logprobs in response streams ([#595](https://github.com/openai/openai-ruby/issues/595)) ([e8e2f39](https://github.com/openai/openai-ruby/commit/e8e2f392f6bd20d8b9ca84d8141b73be0e6b33d9)) * preserve unknown discriminated union values ([#645](https://github.com/openai/openai-ruby/issues/645)) ([1384aa0](https://github.com/openai/openai-ruby/commit/1384aa017af5fa98a515753e1d4a9ba0bac82d63)) * preserve UTF-8 SSE stream boundaries ([#623](https://github.com/openai/openai-ruby/issues/623)) ([6b9ee87](https://github.com/openai/openai-ruby/commit/6b9ee8729c3ac429cc93716e8b51bce603de3405)) * rank tied union variants by declaration order ([#628](https://github.com/openai/openai-ruby/issues/628)) ([5ae6f43](https://github.com/openai/openai-ruby/commit/5ae6f43f4260a1a68984afc649bdc44e68526324)) * redact malformed streamed JSON errors ([#643](https://github.com/openai/openai-ruby/issues/643)) ([5ab02f6](https://github.com/openai/openai-ruby/commit/5ab02f65fdcecdd007a48e7bde8679ce240c1a1c)) * respect StringIO cursor in FilePart serialization ([#592](https://github.com/openai/openai-ruby/issues/592)) ([4115a1e](https://github.com/openai/openai-ruby/commit/4115a1e03a3111cbc80be20eb902df81567b3c76)) * **responses:** expose stream resumption parameters ([#646](https://github.com/openai/openai-ruby/issues/646)) ([d93852f](https://github.com/openai/openai-ruby/commit/d93852f16db7307e3b0da1396b4d06ad4f74cfc2)) * restore conflict-free exported RBIs for Tapioca ([#679](https://github.com/openai/openai-ruby/issues/679)) ([c80a253](https://github.com/openai/openai-ruby/commit/c80a25396afbf143e68c4b11a8552ebbbb6bfc3b)) * retry only proven unsent requests ([#663](https://github.com/openai/openai-ruby/issues/663)) ([a63eda8](https://github.com/openai/openai-ruby/commit/a63eda8203aa023ef3a6917c18a2be80cb66e406)) * stream container file uploads as multipart ([#648](https://github.com/openai/openai-ruby/issues/648)) ([b3c523b](https://github.com/openai/openai-ruby/commit/b3c523b2566a6b760d0a1a952682bf6ca9a866d0)) * strip upload filenames without platform path rules ([#627](https://github.com/openai/openai-ruby/issues/627)) ([5f00613](https://github.com/openai/openai-ruby/commit/5f006135268ae38b81024f8c28de939c53598c90)) * suppress Responses WebSocket exception causes ([#644](https://github.com/openai/openai-ruby/issues/644)) ([1b16a83](https://github.com/openai/openai-ruby/commit/1b16a832d74df6742b256545a24915424deaa7dd)) * type chat completion streams for Sorbet ([#634](https://github.com/openai/openai-ruby/issues/634)) ([cca6a70](https://github.com/openai/openai-ruby/commit/cca6a7035e680fd85ea40bd728937e9c957bd81a)) * upload pathless IO streams instead of raising ([#630](https://github.com/openai/openai-ruby/issues/630)) ([950552f](https://github.com/openai/openai-ruby/commit/950552f470951ddf01bd1f55a1569b012b6b4fd0)) ### Chores * **api:** document throttling and model overload responses — SDK-235 ([#632](https://github.com/openai/openai-ruby/issues/632)) ([2b0483d](https://github.com/openai/openai-ruby/commit/2b0483d394289aa18b792bd7a5440977d8b7a7a1)) * **api:** Refresh SDK metadata ([#612](https://github.com/openai/openai-ruby/issues/612)) ([e93a4b5](https://github.com/openai/openai-ruby/commit/e93a4b54f9b64609b96c553ac7864d94dacc6cf1)) * **deps-dev:** bump the development-dependencies group with 7 updates ([#668](https://github.com/openai/openai-ruby/issues/668)) ([d9a2271](https://github.com/openai/openai-ruby/commit/d9a2271531acea12bc3b46293bb90159d3975d59)) * migrate to forked steady ([#605](https://github.com/openai/openai-ruby/issues/605)) ([5542f01](https://github.com/openai/openai-ruby/commit/5542f01a8395bc9349eae479396ba5158692385f)) ### Documentation * clarify dormant compatibility-check boundary ([#647](https://github.com/openai/openai-ruby/issues/647)) ([d6fa81c](https://github.com/openai/openai-ruby/commit/d6fa81ca012db991be4438f6f1b605a0ce12aa8e)) * clarify Realtime transcription event boundary ([#649](https://github.com/openai/openai-ruby/issues/649)) ([94a1d77](https://github.com/openai/openai-ruby/commit/94a1d77a23c990308d6262f3ce668af6206361f4)) ## [0.85.0](https://github.com/openai/openai-ruby/compare/v0.84.0...v0.85.0) (2026-09-03) ### Features * **api:** add gpt-6-astra and related features ([#596](https://github.com/openai/openai-ruby/issues/596)) ([a08d882](https://github.com/openai/openai-ruby/commit/a08d882c2575e0743a18eb5a4eae7ef3f94b0314)) ### Bug Fixes * **ci:** restore Castiron statuses for fork PRs ([#572](https://github.com/openai/openai-ruby/issues/572)) ([b78af5a](https://github.com/openai/openai-ruby/commit/b78af5acf775627c8eddf42da41bef7ea7325235)) * correct StringIO request content length ([#583](https://github.com/openai/openai-ruby/issues/583)) ([5baeac8](https://github.com/openai/openai-ruby/commit/5baeac8131511141491fc41abdb2e4e4c596f3de)) * emit done events for terminal chat tool calls ([#573](https://github.com/openai/openai-ruby/issues/573)) ([891936c](https://github.com/openai/openai-ruby/commit/891936ce58db613a61d270792f40da400ea44b97)) * handle nullable structured-output literals ([#568](https://github.com/openai/openai-ruby/issues/568)) ([c4fee85](https://github.com/openai/openai-ruby/commit/c4fee85338aa283d6cec80538e4524a406fa8b7d)) * isolate chat stream logprob chunks ([#585](https://github.com/openai/openai-ruby/issues/585)) ([0daedb2](https://github.com/openai/openai-ruby/commit/0daedb2878373da899dac8b029fdb0523a26c6ef)) * preserve initial chat stream system fingerprint ([#580](https://github.com/openai/openai-ruby/issues/580)) ([a31c1ce](https://github.com/openai/openai-ruby/commit/a31c1cef9ee8e1fc5ed7a9b29f23171260a101e4)) * preserve late chat completion service tier ([#567](https://github.com/openai/openai-ruby/issues/567)) ([52a0c64](https://github.com/openai/openai-ruby/commit/52a0c64fbb04535d4c1250986a5116298048764e)) * preserve nested array schema definitions ([#581](https://github.com/openai/openai-ruby/issues/581)) ([bbfbe29](https://github.com/openai/openai-ruby/commit/bbfbe29f53018b4a3a1c61edab355ad901bb0239)) * preserve recursive structured output refs ([#584](https://github.com/openai/openai-ruby/issues/584)) ([b23fc75](https://github.com/openai/openai-ruby/commit/b23fc752952314de279a32175d98b7ca7fd33f8c)) * preserve retained Responses stream events ([#577](https://github.com/openai/openai-ruby/issues/577)) ([149e685](https://github.com/openai/openai-ruby/commit/149e685c64f72052d19d9389ba07d40a14c4c070)) * preserve string-tagged structured output models ([#582](https://github.com/openai/openai-ruby/issues/582)) ([983eaf9](https://github.com/openai/openai-ruby/commit/983eaf9c240f6888d2872abddd555fa3cdd5af95)) * raise finish errors for initial chat stream chunks ([#579](https://github.com/openai/openai-ruby/issues/579)) ([c923659](https://github.com/openai/openai-ruby/commit/c923659aeddd2ed5e928830babd2f75ea6cbae3d)) * short-circuit Bedrock profile credentials ([#588](https://github.com/openai/openai-ruby/issues/588)) ([1c7ed46](https://github.com/openai/openai-ruby/commit/1c7ed46782288a882aed9ccedcf69ecc53fd9c6d)) ### Documentation * clarify commit prefix user impact ([#575](https://github.com/openai/openai-ruby/issues/575)) ([73752ad](https://github.com/openai/openai-ruby/commit/73752ad281e7d3fde9c4b63bd1efa17b151ff5a6)) * establish canonical security model ([#565](https://github.com/openai/openai-ruby/issues/565)) ([2ded215](https://github.com/openai/openai-ruby/commit/2ded21565f969d026c93027d1d7264a8081d6242)) ## [0.84.0](https://github.com/openai/openai-ruby/compare/v0.83.0...v0.84.0) (2026-09-02) ### Features * **api:** update usage APIs and documentation ([#566](https://github.com/openai/openai-ruby/issues/566)) ([caac1f0](https://github.com/openai/openai-ruby/commit/caac1f0d0932dff46e25f5879f5a1410425275e9)) ### Bug Fixes * accept custom request hash in RBS ([#554](https://github.com/openai/openai-ruby/issues/554)) ([8d32aa1](https://github.com/openai/openai-ruby/commit/8d32aa1764ecff22d2cb3114fa1a4b6f7faa309b)) * avoid dispatching nil checks during coercion ([#552](https://github.com/openai/openai-ruby/issues/552)) ([c8d6d32](https://github.com/openai/openai-ruby/commit/c8d6d32e178563e38585d3ad928136e3c6f10ac1)) * avoid duplicate late-choice stream logprobs ([#564](https://github.com/openai/openai-ruby/issues/564)) ([2359a02](https://github.com/openai/openai-ruby/commit/2359a02dd22fbf599250aaa97e755863562abf53)) * delimit JSONL request records ([#553](https://github.com/openai/openai-ruby/issues/553)) ([dea0408](https://github.com/openai/openai-ruby/commit/dea04081076da3fde34f4a9b15f445dd92556b0f)) * enforce workload identity request deadlines ([#547](https://github.com/openai/openai-ruby/issues/547)) ([da421b5](https://github.com/openai/openai-ruby/commit/da421b507c24c35f62ff8679dd5c468ce8a0dab9)) * handle custom chat completion tool calls ([#556](https://github.com/openai/openai-ruby/issues/556)) ([dd49e31](https://github.com/openai/openai-ruby/commit/dd49e31134cf8dd1442f1b3fb428bab4dbc663d1)) * load YAML for BaseModel serialization ([#555](https://github.com/openai/openai-ruby/issues/555)) ([5420931](https://github.com/openai/openai-ruby/commit/54209313bca8a7159ad8ee4768678ac61b871d69)) * make error cause contract read-only ([#557](https://github.com/openai/openai-ruby/issues/557)) ([f3169ca](https://github.com/openai/openai-ruby/commit/f3169caae9a6115c3725c8d4da33e9ffb65085c5)) * preserve formatter path boundaries ([#559](https://github.com/openai/openai-ruby/issues/559)) ([f8b128c](https://github.com/openai/openai-ruby/commit/f8b128cf0db3198a297caec7e7ca8dfa991f16e8)) * respect StringIO cursor in multipart uploads ([#558](https://github.com/openai/openai-ruby/issues/558)) ([e8ea7c7](https://github.com/openai/openai-ruby/commit/e8ea7c73e7a233abaf7c919ce10117729918df5e)) * resume Responses streams from server-side cursors ([#548](https://github.com/openai/openai-ruby/issues/548)) ([3b88261](https://github.com/openai/openai-ruby/commit/3b88261e7cd9a8736028c1867c0c23d21aba54b5)) * support flattened responses typed function tools ([#550](https://github.com/openai/openai-ruby/issues/550)) ([ab16d33](https://github.com/openai/openai-ruby/commit/ab16d33e18c862608125cf12fac07e72702b8752)) * support structured chat output with typed function tools ([#546](https://github.com/openai/openai-ruby/issues/546)) ([087d1e2](https://github.com/openai/openai-ruby/commit/087d1e2041099342ed59be211259b81dce14392c)) ### Chores * **deps-dev:** bump the development-dependencies group with 3 updates ([#560](https://github.com/openai/openai-ruby/issues/560)) ([f728e07](https://github.com/openai/openai-ruby/commit/f728e072a0d65e2d66b2e647d36843b76fd92606)) ## [0.83.0](https://github.com/openai/openai-ruby/compare/v0.82.0...v0.83.0) (2026-08-27) ### Features * **api:** add compute_units to Responses and Chat Completions usage ([#543](https://github.com/openai/openai-ruby/issues/543)) ([b128f89](https://github.com/openai/openai-ruby/commit/b128f89672416a083addeb0e2bbc337f8ddb7f9f)) * expose opt-in raw response bodies on response metadata ([#544](https://github.com/openai/openai-ruby/issues/544)) ([1529e96](https://github.com/openai/openai-ruby/commit/1529e96781c217828915ed3f69faa61bf6605129)) ### Bug Fixes * **realtime:** clean up interrupted WebRTC call allocations ([#534](https://github.com/openai/openai-ruby/issues/534)) ([2057039](https://github.com/openai/openai-ruby/commit/205703935bafe5e78b90b5424cc43d3b7b978772)) ### Chores * **deps:** bump the codeql group with 2 updates ([#541](https://github.com/openai/openai-ruby/issues/541)) ([b15451c](https://github.com/openai/openai-ruby/commit/b15451c0df8ba890f136c86dc7f5299876bb9b5d)) ## [0.82.0](https://github.com/openai/openai-ruby/compare/v0.81.0...v0.82.0) (2026-08-27) ### Features * add optional Sorbet structured-output models ([#537](https://github.com/openai/openai-ruby/issues/537)) ([53ccf39](https://github.com/openai/openai-ruby/commit/53ccf39b464d8b2052456fa78aaea4dcdee8158c)) * **api:** make function call output call IDs optional ([#539](https://github.com/openai/openai-ruby/issues/539)) ([81d385b](https://github.com/openai/openai-ruby/commit/81d385be58ece0c5db798ed79d01c0fd4c458f60)) ### Bug Fixes * **streaming:** preserve unknown Responses stream events ([#538](https://github.com/openai/openai-ruby/issues/538)) ([1d728f7](https://github.com/openai/openai-ruby/commit/1d728f74649c039ad29ca55986f9f5f48436d9f0)) ## [0.81.0](https://github.com/openai/openai-ruby/compare/v0.80.0...v0.81.0) (2026-08-26) ### Features * Add client.with_options support ([#438](https://github.com/openai/openai-ruby/issues/438)) ([72b0927](https://github.com/openai/openai-ruby/commit/72b0927f77f5393ed7c2afa07e31043f8f6717b4)) * add Realtime transcription over WebSockets ([#445](https://github.com/openai/openai-ruby/issues/445)) ([e9f45c4](https://github.com/openai/openai-ruby/commit/e9f45c4a766705833c54ff8c58949ce5c5256618)) * add Realtime WebSocket core ([#443](https://github.com/openai/openai-ruby/issues/443)) ([aba0f05](https://github.com/openai/openai-ruby/commit/aba0f05c9c603a286cd3c29a36aedb2bbd51c270)) * **api:** add file and vector store polling helpers ([#421](https://github.com/openai/openai-ruby/issues/421)) ([2cad0f7](https://github.com/openai/openai-ruby/commit/2cad0f773d954c719afdfd0cc42316fe79e5fc65)) * **api:** Add obfuscation field to ChatCompletionChunk ([#484](https://github.com/openai/openai-ruby/issues/484)) ([5065a37](https://github.com/openai/openai-ruby/commit/5065a37880e50d5c77cc2e64e610e60df8d102b6)) * **api:** add project residency and cost quantity units ([#522](https://github.com/openai/openai-ruby/issues/522)) ([b0abe2b](https://github.com/openai/openai-ruby/commit/b0abe2bd1e30eda6acb4d5e4603001b830074be2)) * **api:** support backend-mediated Realtime WebRTC calls ([#531](https://github.com/openai/openai-ruby/issues/531)) ([6ec6c7a](https://github.com/openai/openai-ruby/commit/6ec6c7a696081ca007cf5a325430a674870b00bc)) * **auth:** add caller-attested X.509 transport capability ([#523](https://github.com/openai/openai-ruby/issues/523)) ([712f3c8](https://github.com/openai/openai-ruby/commit/712f3c84453006583dae5850008ea18101d01756)) * **auth:** simplify and harden X.509 workload identity ([#535](https://github.com/openai/openai-ruby/issues/535)) ([5b32861](https://github.com/openai/openai-ruby/commit/5b32861466af5d08679cfb2329e53b17f77a4af7)) * **realtime:** add sideband WebSocket call control ([#530](https://github.com/openai/openai-ruby/issues/530)) ([2fea73b](https://github.com/openai/openai-ruby/commit/2fea73b26b15c571d60d8f6c789a03547a025e1a)) * update streaming models and regional endpoint selection ([#442](https://github.com/openai/openai-ruby/issues/442)) ([f2e94ab](https://github.com/openai/openai-ruby/commit/f2e94abf63d13fd651df1eea42a43859675bd87d)) ### Bug Fixes * align nullable collection matchers ([#497](https://github.com/openai/openai-ruby/issues/497)) ([ee922b3](https://github.com/openai/openai-ruby/commit/ee922b36ec6e646b8e25988866feb26bcd3845b1)), closes [#376](https://github.com/openai/openai-ruby/issues/376) * **api:** integrate Realtime WebRTC calls with sideband control ([#533](https://github.com/openai/openai-ruby/issues/533)) ([fd220ef](https://github.com/openai/openai-ruby/commit/fd220ef63d5f5d21c1975ec686a529df5d3d3ef3)) * attach partial completion to streaming length errors ([#432](https://github.com/openai/openai-ruby/issues/432)) ([2dd3eab](https://github.com/openai/openai-ruby/commit/2dd3eab167eb44800eafddd687f073c14c5f6227)) * **auth:** harden X.509 refresh and diagnostic boundaries ([#529](https://github.com/openai/openai-ruby/issues/529)) ([dd0a37c](https://github.com/openai/openai-ruby/commit/dd0a37cb1783adc7282603d8d2c9a8f11319b205)) * **ci:** require fail-closed CodeQL checks for Ruby and GitHub Actions ([#480](https://github.com/openai/openai-ruby/issues/480)) ([8d716b6](https://github.com/openai/openai-ruby/commit/8d716b657973ac759e2fe8e56e3158698b7f6451)) * **ci:** update Bedrock lockfile during releases ([#509](https://github.com/openai/openai-ruby/issues/509)) ([ccabba8](https://github.com/openai/openai-ruby/commit/ccabba8890c877e5206424a3fce34b9d3d460037)) * fix Page#next_page to raise when unavailable ([#487](https://github.com/openai/openai-ruby/issues/487)) ([4d7bb33](https://github.com/openai/openai-ruby/commit/4d7bb338c7aebdd95581de9bc92084a6019cac83)) * ignore response stream keepalive events ([#422](https://github.com/openai/openai-ruby/issues/422)) ([0182edd](https://github.com/openai/openai-ruby/commit/0182edd4ef84ec17d3f03757c04418cec2e228b9)), closes [#287](https://github.com/openai/openai-ruby/issues/287) * improve API status error diagnostics ([#472](https://github.com/openai/openai-ruby/issues/472)) ([eab2b2a](https://github.com/openai/openai-ruby/commit/eab2b2a0a42af10d1b83fd75bb3ef2c04ad4a137)) * isolate union coercion state ([#446](https://github.com/openai/openai-ruby/issues/446)) ([5a7752a](https://github.com/openai/openai-ruby/commit/5a7752a14dcb932a85d760aff7d0665c8f6a615d)) * keep authenticated requests on the configured origin ([#470](https://github.com/openai/openai-ruby/issues/470)) ([3978736](https://github.com/openai/openai-ruby/commit/3978736b0e5b7fb9bae3d1a851d917ddf9589080)) * keep CodeQL action updates atomic ([#473](https://github.com/openai/openai-ruby/issues/473)) ([1dc83e5](https://github.com/openai/openai-ruby/commit/1dc83e58e4a00c128db7f5249de15cbe3e65988a)) * normalize filenames inferred from file handles ([#468](https://github.com/openai/openai-ruby/issues/468)) ([d8cba3f](https://github.com/openai/openai-ruby/commit/d8cba3f770414323f313b0eddb2be1e74ee308eb)) * omit URL fragments from diagnostic logs ([#466](https://github.com/openai/openai-ruby/issues/466)) ([7bfb7c4](https://github.com/openai/openai-ruby/commit/7bfb7c48b14eb065e598e1a5d3c37b59a83e912e)) * preserve derived pagination cursors ([#489](https://github.com/openai/openai-ruby/issues/489)) ([e6346e3](https://github.com/openai/openai-ruby/commit/e6346e39f40112c700ade380ee87b930c000efb7)) * preserve generic request authentication precedence ([#476](https://github.com/openai/openai-ruby/issues/476)) ([14695dc](https://github.com/openai/openai-ruby/commit/14695dc24b9929aa22b19b458b9a02e9bf5332f6)) * preserve nullable nil values ([#450](https://github.com/openai/openai-ruby/issues/450)) ([79cc156](https://github.com/openai/openai-ruby/commit/79cc15696bdb4255396a165b9a687e177c26f26c)) * preserve request boundaries across redirects ([#471](https://github.com/openai/openai-ruby/issues/471)) ([48be3b5](https://github.com/openai/openai-ruby/commit/48be3b5084eff7fe88db3022c154bb2fe8c929c5)) * redact credentials from client inspect ([#488](https://github.com/openai/openai-ruby/issues/488)) ([b78194a](https://github.com/openai/openai-ruby/commit/b78194ab19e3a3de8ea594778dd17c5635e9c767)) * remove runtime base64 dependency ([#454](https://github.com/openai/openai-ruby/issues/454)) ([d4415dd](https://github.com/openai/openai-ruby/commit/d4415dd4b2b1ab8f252e8b42bf732c17f0435012)) * require authority when validating request origins ([#483](https://github.com/openai/openai-ruby/issues/483)) ([35acd86](https://github.com/openai/openai-ruby/commit/35acd86f5f0d402bfe29167efd89bd49fc65c926)) * retain collection conversion errors ([#495](https://github.com/openai/openai-ruby/issues/495)) ([851f534](https://github.com/openai/openai-ruby/commit/851f53438f5afc7f32e3ccbe866fd03bbade576a)) * **streaming:** keep indexed snapshots compact ([#490](https://github.com/openai/openai-ruby/issues/490)) ([0491bb7](https://github.com/openai/openai-ruby/commit/0491bb7ae7dd465c48aa1b84496b2e6d7e3597ea)) * Validate multipart file content types ([#467](https://github.com/openai/openai-ruby/issues/467)) ([313f3a3](https://github.com/openai/openai-ruby/commit/313f3a3aca66cc4b3095f1b3e1b88980c49535a4)) ### Chores * **api:** Clarify image background and realtime audio-delta docs ([#499](https://github.com/openai/openai-ruby/issues/499)) ([d873fcf](https://github.com/openai/openai-ruby/commit/d873fcf645347ab771b5f92ec8598fb3f83a0c7f)) * **api:** enforce signature formatting and canonicalize generated Ruby ([#451](https://github.com/openai/openai-ruby/issues/451)) ([38440f2](https://github.com/openai/openai-ruby/commit/38440f215f9c89a1f3290377f1e708b1ca9b0c34)) * **api:** refresh image model docs and generated lint policy ([#486](https://github.com/openai/openai-ruby/issues/486)) ([589d384](https://github.com/openai/openai-ruby/commit/589d38401fd3f88f4381e52a47914d65730660f9)) * **api:** refresh SDK generation metadata ([#512](https://github.com/openai/openai-ruby/issues/512)) ([3ddbc77](https://github.com/openai/openai-ruby/commit/3ddbc77f24da7d57b840ea9819a0fe0e7709b789)) * **ci:** upgrade actions/checkout to v7.0.1 ([#475](https://github.com/openai/openai-ruby/issues/475)) ([4fecd5b](https://github.com/openai/openai-ruby/commit/4fecd5b996f21b5ba52e6ca0be99a8d1782c08dd)) * **deps-dev:** bump sorbet-runtime from 0.6.13421 to 0.6.13425 ([#493](https://github.com/openai/openai-ruby/issues/493)) ([a099412](https://github.com/openai/openai-ruby/commit/a0994122d2e19d3f1deae03b2b5f7ae5d2bf22cd)) * **deps-dev:** bump syntax_tree-rbs from `f94bc30` to `2478329` ([#462](https://github.com/openai/openai-ruby/issues/462)) ([3a95231](https://github.com/openai/openai-ruby/commit/3a95231b3e75d11253acd0c82e07891cf8aaf510)) * **deps-dev:** bump the development-dependencies group with 2 updates ([#520](https://github.com/openai/openai-ruby/issues/520)) ([c3fe427](https://github.com/openai/openai-ruby/commit/c3fe427c6e9d9fad78acd23118b897ab0d6c5611)) * **deps-dev:** safely update development dependencies ([#478](https://github.com/openai/openai-ruby/issues/478)) ([69d62eb](https://github.com/openai/openai-ruby/commit/69d62eb8cc3a9c2111870ec65c885e1fb1dc574c)) * **deps-dev:** upgrade Steep with compatible RBS diagnostics ([#474](https://github.com/openai/openai-ruby/issues/474)) ([85686e9](https://github.com/openai/openai-ruby/commit/85686e99e70973545124bedc7f7e38089593cfbb)) * **deps:** bump actions/github-script from 7.1.0 to 9.0.0 ([#485](https://github.com/openai/openai-ruby/issues/485)) ([f55d45d](https://github.com/openai/openai-ruby/commit/f55d45de5717ee655425a101d7b1d7fe1259c22c)) * **deps:** bump rubygems/release-gem from 1.2.0 to 1.4.1 ([#460](https://github.com/openai/openai-ruby/issues/460)) ([9faee6a](https://github.com/openai/openai-ruby/commit/9faee6ac56e15e339cfc3070983a2eb6e335639f)) * **deps:** bump the codeql group with 2 updates ([#521](https://github.com/openai/openai-ruby/issues/521)) ([bc5f12c](https://github.com/openai/openai-ruby/commit/bc5f12c8790b5e69692115df5e5e8a7461935b63)) * **deps:** configure Ruby and GitHub Actions Dependabot ([#439](https://github.com/openai/openai-ruby/issues/439)) ([4f57b71](https://github.com/openai/openai-ruby/commit/4f57b71ccad5cd177f017eda7fc4e7cbdabd46cd)) * enforce outer local variable shadowing ([#433](https://github.com/openai/openai-ruby/issues/433)) ([d644765](https://github.com/openai/openai-ruby/commit/d644765d158bf33ce367f8cc43b330836d12d1e8)) * enforce redundant enable directives ([#436](https://github.com/openai/openai-ruby/issues/436)) ([aeb8cde](https://github.com/openai/openai-ruby/commit/aeb8cde4074e2006108d271f78748846a254ee42)) * enforce top-level return arguments ([#435](https://github.com/openai/openai-ruby/issues/435)) ([8a022a6](https://github.com/openai/openai-ruby/commit/8a022a6eda507c32b6a9c75bb3ed8b0f6e0af5d8)) * isolate documentation dependencies ([#482](https://github.com/openai/openai-ruby/issues/482)) ([3130e59](https://github.com/openai/openai-ruby/commit/3130e59f537af05b9c2ce3be7a44c1cd7751f3ef)) * preserve flexibly spaced RBS aliases ([#515](https://github.com/openai/openai-ruby/issues/515)) ([45e3193](https://github.com/openai/openai-ruby/commit/45e3193eb462d4edf6defef054b6c79b05795756)) * prevent intermittent RBS formatting failures ([#528](https://github.com/openai/openai-ruby/issues/528)) ([8057a05](https://github.com/openai/openai-ruby/commit/8057a053dca400ab0796f8da6ae814a57689e396)) * remove Tapioca development dependency ([#452](https://github.com/openai/openai-ruby/issues/452)) ([0965227](https://github.com/openai/openai-ruby/commit/09652279b7b398e68d330383c138461e1b7ea3bf)) * restore generated webhook signature comments ([#502](https://github.com/openai/openai-ruby/issues/502)) ([a64c3bd](https://github.com/openai/openai-ruby/commit/a64c3bd8c73a74b9f2fc619770de2142e301969d)) * set a 4,000-line custom-code budget ([#510](https://github.com/openai/openai-ruby/issues/510)) ([0706a29](https://github.com/openai/openai-ruby/commit/0706a29b26a35709df90aed86c9a9c663a7b130e)) * **skills:** prioritize customer-impacting Ruby SDK defects ([#519](https://github.com/openai/openai-ruby/issues/519)) ([d638c57](https://github.com/openai/openai-ruby/commit/d638c57853bcd2d1afb44fdf5fc1f79e891c138e)) * synchronize generated response signatures and tests ([#444](https://github.com/openai/openai-ruby/issues/444)) ([4effc6a](https://github.com/openai/openai-ruby/commit/4effc6a9286d6579504f0e11513f766c97d70067)) ### Documentation * add Realtime voice turn example ([#449](https://github.com/openai/openai-ruby/issues/449)) ([b18e4c7](https://github.com/openai/openai-ruby/commit/b18e4c7c293ce60a9b4fbe67b4ba36ec1821a007)) * add recurring repository improvement skill ([#491](https://github.com/openai/openai-ruby/issues/491)) ([8977731](https://github.com/openai/openai-ruby/commit/8977731a59da0bddf7098a5c62e1916c40bc4a7c)) * **realtime:** add standard WebSocket workflows ([#500](https://github.com/openai/openai-ruby/issues/500)) ([e0dbef7](https://github.com/openai/openai-ruby/commit/e0dbef709a2419385f44d6187d12831981b9dda3)) * **security:** standardize Ruby vulnerability reporting ([#440](https://github.com/openai/openai-ruby/issues/440)) ([2c16022](https://github.com/openai/openai-ruby/commit/2c1602281e049b55f7ae983f73af050b5d48ba6a)) * strengthen Ruby SDK security guidance ([#437](https://github.com/openai/openai-ruby/issues/437)) ([68b5c92](https://github.com/openai/openai-ruby/commit/68b5c92e1b75da424fa521d1b612cf094f1830fe)) ### Refactors * isolate Chat Completions structured-output parsing ([#501](https://github.com/openai/openai-ruby/issues/501)) ([e0e6e42](https://github.com/openai/openai-ruby/commit/e0e6e42b7c0e39fe01f414ef844a99ab399bca19)) * isolate file polling status loops ([#496](https://github.com/openai/openai-ruby/issues/496)) ([7ab65d8](https://github.com/openai/openai-ruby/commit/7ab65d8b6583aff4163dd527b4919368cacaf028)) * isolate Responses structured-output parsing ([#498](https://github.com/openai/openai-ruby/issues/498)) ([2c4abe5](https://github.com/openai/openai-ruby/commit/2c4abe5e321053be32916d0df823a20f621a8d4c)) ## [0.80.0](https://github.com/openai/openai-ruby/compare/v0.79.0...v0.80.0) (2026-08-17) ### Features * add Amazon Bedrock Runtime support ([#424](https://github.com/openai/openai-ruby/issues/424)) ([cf48c01](https://github.com/openai/openai-ruby/commit/cf48c0157183797b5c4c66635ad4bfcb14fe2b3a)) * **api:** Ultrafast tier, structured MCP and websocket errors, separate websocket events ([#414](https://github.com/openai/openai-ruby/issues/414)) ([c1f3525](https://github.com/openai/openai-ruby/commit/c1f35252bc042445ba419e413b744a2f55c514ce)) ### Bug Fixes * validate RuboCop directives without a Git checkout ([#425](https://github.com/openai/openai-ruby/issues/425)) ([a3cae51](https://github.com/openai/openai-ruby/commit/a3cae518dc18d1cc222558ed86332cc97f1316cc)) ### Chores * enforce heredoc method call position ([#431](https://github.com/openai/openai-ruby/issues/431)) ([70cebe3](https://github.com/openai/openai-ruby/commit/70cebe3c460a659c5d181b66f92d620d2f6654f5)) * remove SDK namespace line-length exemption ([#419](https://github.com/openai/openai-ruby/issues/419)) ([a089ee1](https://github.com/openai/openai-ruby/commit/a089ee1788b9399fa0570896dc422ae375b6baf3)) ## [0.79.0](https://github.com/openai/openai-ruby/compare/v0.78.0...v0.79.0) (2026-08-14) ### Features * add HTTP response observability ([#365](https://github.com/openai/openai-ruby/issues/365)) ([48d36b7](https://github.com/openai/openai-ruby/commit/48d36b70883a446a8062dca50fbc2d419fbe1fb9)) * add Tapioca typing for structured outputs ([#364](https://github.com/openai/openai-ruby/issues/364)) ([738e2b4](https://github.com/openai/openai-ruby/commit/738e2b4de4f991e594f9d319c4d17f0955cd8edd)) * **api:** Add new model identifiers and remove audit log source ([e0a4bc5](https://github.com/openai/openai-ruby/commit/e0a4bc56d5280c45a12e44adc49b6c34e182b33f)) * **api:** add WebSocket stream IDs ([#387](https://github.com/openai/openai-ruby/issues/387)) ([5880287](https://github.com/openai/openai-ruby/commit/588028770b493f2ad55b1b9acfe6ad3164c1cddc)) * **api:** add workload identity access token issued event ([#372](https://github.com/openai/openai-ruby/issues/372)) ([9199779](https://github.com/openai/openai-ruby/commit/919977919667da8b0764a7134d646e9cac24e709)) * **api:** deprecate Sora video APIs ([#386](https://github.com/openai/openai-ruby/issues/386)) ([0664456](https://github.com/openai/openai-ruby/commit/0664456735e3eccc8dd15041a45528f59df3787d)) * **client:** add default headers ([#369](https://github.com/openai/openai-ruby/issues/369)) ([d516874](https://github.com/openai/openai-ruby/commit/d516874ebca3ac142ecbc9d829367ab97ae685f2)) * expose request IDs ([#352](https://github.com/openai/openai-ruby/issues/352)) ([c15fb7b](https://github.com/openai/openai-ruby/commit/c15fb7b5d3f15de8ffc1404dba870752175415af)) * support Azure OpenAI v1 ([#355](https://github.com/openai/openai-ruby/issues/355)) ([c1d223e](https://github.com/openai/openai-ruby/commit/c1d223e2253450cee2631f875b968baa7cbcdc2e)) ### Bug Fixes * **api:** Add new model identifiers and remove audit log source ([#360](https://github.com/openai/openai-ruby/issues/360)) ([e0a4bc5](https://github.com/openai/openai-ruby/commit/e0a4bc56d5280c45a12e44adc49b6c34e182b33f)) * **api:** allow nil timeout in client signatures ([#363](https://github.com/openai/openai-ruby/issues/363)) ([e52ca61](https://github.com/openai/openai-ruby/commit/e52ca61a116f7a49e98f903c28337232608264d7)) * **api:** document file upload metadata defaults ([#361](https://github.com/openai/openai-ruby/issues/361)) ([b4bc1ea](https://github.com/openai/openai-ruby/commit/b4bc1eaf8dd8edcc10700b3d29669816176839a3)) * coerce nested BaseModel fields ([#295](https://github.com/openai/openai-ruby/issues/295)) ([e5152a9](https://github.com/openai/openai-ruby/commit/e5152a92962251ce76ceb3d89ec0b6b37fa4efdb)) * enable streaming when retrieving responses ([#413](https://github.com/openai/openai-ruby/issues/413)) ([fd85182](https://github.com/openai/openai-ruby/commit/fd8518235b16089b03733040f22e51f3fb043ed4)) * encode multipart array and nested fields ([#348](https://github.com/openai/openai-ruby/issues/348)) ([1c71a1e](https://github.com/openai/openai-ruby/commit/1c71a1eccdee36a1e8dc8ab974ad1437396bd6e6)) * honor workload identity environment defaults ([#398](https://github.com/openai/openai-ruby/issues/398)) ([f4afea1](https://github.com/openai/openai-ruby/commit/f4afea1057ebfa5447fbbef0d89f62943473efdc)) * keep required path parameters out of resource query strings ([#402](https://github.com/openai/openai-ruby/issues/402)) ([6768a7c](https://github.com/openai/openai-ruby/commit/6768a7c29664fc9edce4f4da261920da8bb1959d)) * loading after ActiveSupport 6 subclass extensions ([#346](https://github.com/openai/openai-ruby/issues/346)) ([20fbb09](https://github.com/openai/openai-ruby/commit/20fbb0942991888e618e5b5a86531e58fff65626)) * make SDK debug body logging fail closed ([#411](https://github.com/openai/openai-ruby/issues/411)) ([c4f7284](https://github.com/openai/openai-ruby/commit/c4f72846e6f2bddc280f0723f880130ad27d2b71)) * package every README-linked guide and example ([#382](https://github.com/openai/openai-ruby/issues/382)) ([ddecd0f](https://github.com/openai/openai-ruby/commit/ddecd0f75fc2a9e33e5fb6caf3f7531f7868fb90)) * preserve binary multipart stream reads ([#354](https://github.com/openai/openai-ruby/issues/354)) ([b3a1ba7](https://github.com/openai/openai-ruby/commit/b3a1ba7f3dc561ac28d2768e619e46da75177c3c)) * preserve existing BaseModel instances during coercion ([#400](https://github.com/openai/openai-ruby/issues/400)) ([fbd8560](https://github.com/openai/openai-ruby/commit/fbd8560ff986774acb4c3af849eba048232a8da3)) * preserve prefixed idempotency headers on redirects ([#404](https://github.com/openai/openai-ruby/issues/404)) ([c380e13](https://github.com/openai/openai-ruby/commit/c380e13d1f866d591add5b32cc7e414de0ac85f2)) * preserve stream identity with HTTP logging ([#384](https://github.com/openai/openai-ruby/issues/384)) ([640a1fe](https://github.com/openai/openai-ruby/commit/640a1fed33e57194cf4241001d171b75bc3b7638)) * prevent symbol-keyed headers from bypassing security filters ([#383](https://github.com/openai/openai-ruby/issues/383)) ([b8165af](https://github.com/openai/openai-ruby/commit/b8165afa3065ee01e1440bc7e5339a9c5a7d7123)) * redact sensitive query and form logging ([#389](https://github.com/openai/openai-ruby/issues/389)) ([7aa54e4](https://github.com/openai/openai-ruby/commit/7aa54e43aba381c33639a8f697348d0620ced5d0)) * reject invalid webhook signing secrets ([#403](https://github.com/openai/openai-ruby/issues/403)) ([ad12458](https://github.com/openai/openai-ruby/commit/ad1245832fd18c7830becc2375c9fa7deadca88f)) * remove unsound structured-output Tapioca compiler ([#405](https://github.com/openai/openai-ruby/issues/405)) ([826769a](https://github.com/openai/openai-ruby/commit/826769a5169eb659042fbfcb9259ad61f04d20a5)) * restore RuboCop coverage for RBI files ([#388](https://github.com/openai/openai-ruby/issues/388)) ([d2d4b5d](https://github.com/openai/openai-ruby/commit/d2d4b5d1308e21703724b2f2561da2d328be5c46)) * return values from interruptible enumerator ([#350](https://github.com/openai/openai-ruby/issues/350)) ([327dad7](https://github.com/openai/openai-ruby/commit/327dad76d434b8ea56401efb1312e9b499cc8e71)) * strip credential headers on cross-origin redirects ([#391](https://github.com/openai/openai-ruby/issues/391)) ([f50f08c](https://github.com/openai/openai-ruby/commit/f50f08c15f373e956c0013d519c6d69c2484e562)) * tighten JSON, JSONL, and SSE content type matching ([#277](https://github.com/openai/openai-ruby/issues/277)) ([66359a0](https://github.com/openai/openai-ruby/commit/66359a09076711315bed0c8aceea8db89bc4bd42)) * use API field names in structured output schemas ([#390](https://github.com/openai/openai-ruby/issues/390)) ([d1e3cf3](https://github.com/openai/openai-ruby/commit/d1e3cf3cd2793d18e98394cd5e66da766c686557)) * validate and bound retry delays ([#392](https://github.com/openai/openai-ruby/issues/392)) ([fff94e7](https://github.com/openai/openai-ruby/commit/fff94e789a9d750913306fe3c52973bd3e730916)) * **webhooks:** support Rack and case-insensitive HTTP headers ([#401](https://github.com/openai/openai-ruby/issues/401)) ([37de980](https://github.com/openai/openai-ruby/commit/37de98099af70d8e97f50f8dc02ce5166c081d38)) ### Reverts * nested BaseModel coercion ([#295](https://github.com/openai/openai-ruby/issues/295)) ([#375](https://github.com/openai/openai-ruby/issues/375)) ([65fa76e](https://github.com/openai/openai-ruby/commit/65fa76e57881804908bc4d1753ee7d60cff1f875)) ### Chores * Cover Ruby files at the SDK root ([#362](https://github.com/openai/openai-ruby/issues/362)) ([d11f25b](https://github.com/openai/openai-ruby/commit/d11f25b28044e618849cd430c63946a306ede32c)) * enforce boolean symbol lint ([#395](https://github.com/openai/openai-ruby/issues/395)) ([fafdf2e](https://github.com/openai/openai-ruby/commit/fafdf2e86e2736b79212189dee07aa83ba912945)) * enforce deprecated constant lint ([#379](https://github.com/openai/openai-ruby/issues/379)) ([0def912](https://github.com/openai/openai-ruby/commit/0def9124cadee946879f2f66a5018ee986972509)) * enforce duplicate match pattern lint ([#380](https://github.com/openai/openai-ruby/issues/380)) ([7a8f2fb](https://github.com/openai/openai-ruby/commit/7a8f2fb4ac9d1176bb5e8eac88cccc9766e3fd6c)) * enforce empty else lint ([#396](https://github.com/openai/openai-ruby/issues/396)) ([1e073c1](https://github.com/openai/openai-ruby/commit/1e073c14a657e93ea0394fba29f9a059b3bf9b09)) * enforce line length lint ([#406](https://github.com/openai/openai-ruby/issues/406)) ([4592061](https://github.com/openai/openai-ruby/commit/459206126267209930640d25eae0fada7177bff0)) * enforce line length on base models ([#416](https://github.com/openai/openai-ruby/issues/416)) ([aef1e33](https://github.com/openai/openai-ruby/commit/aef1e333cae9c72379b3230a35d0274917999f82)) * enforce line length on requires ([#415](https://github.com/openai/openai-ruby/issues/415)) ([c24e045](https://github.com/openai/openai-ruby/commit/c24e045bc1a194a0935a36ed48a17841f5309718)) * enforce missing RuboCop enable directives ([#368](https://github.com/openai/openai-ruby/issues/368)) ([50046bf](https://github.com/openai/openai-ruby/commit/50046bf02497984d46377b9e9f1f6cc1370ee776)) * enforce missing super lint ([#393](https://github.com/openai/openai-ruby/issues/393)) ([2a42bd0](https://github.com/openai/openai-ruby/commit/2a42bd0531f0c16e2d61d55b2dee80e541111812)) * enforce nonempty pattern branches ([#409](https://github.com/openai/openai-ruby/issues/409)) ([9d22d5c](https://github.com/openai/openai-ruby/commit/9d22d5c63a9f68f1839de6f6b20f92d767eec80b)) * enforce redundant directive lint ([#366](https://github.com/openai/openai-ruby/issues/366)) ([8448a4c](https://github.com/openai/openai-ruby/commit/8448a4cb1551fb47a28205556e0bce320eb82c99)) * enforce redundant exception lint ([#397](https://github.com/openai/openai-ruby/issues/397)) ([cbda8bc](https://github.com/openai/openai-ruby/commit/cbda8bc0e6e3b2b8d0b96dfe3021d4557b713400)) * enforce symbol conversion lint ([#381](https://github.com/openai/openai-ruby/issues/381)) ([0531498](https://github.com/openai/openai-ruby/commit/0531498c5498804408381dcef3ddec1228196ecd)) * enforce useless assignment lint ([#394](https://github.com/openai/openai-ruby/issues/394)) ([9688836](https://github.com/openai/openai-ruby/commit/96888367ae757d119c90f2d9a81f4000d21745c2)) * guard RuboCop suppression directives ([#408](https://github.com/openai/openai-ruby/issues/408)) ([5b6e0dc](https://github.com/openai/openai-ruby/commit/5b6e0dcc325f0f5a6a0fc6df8d9aea4999c90cf5)) * lint Ruby files repository-wide ([#377](https://github.com/openai/openai-ruby/issues/377)) ([8ca8426](https://github.com/openai/openai-ruby/commit/8ca842693f441f19b18fda7190de4d68b2f7f9d9)) * remove Stainless attribution and infrastructure ([#371](https://github.com/openai/openai-ruby/issues/371)) ([33d2c86](https://github.com/openai/openai-ruby/commit/33d2c864e1f3c2a683f1b826838b2bfd2e380a26)) * require MFA for gem releases ([#378](https://github.com/openai/openai-ruby/issues/378)) ([71798ec](https://github.com/openai/openai-ruby/commit/71798ecb840a3feb8574efae3dd94af577717d64)) ### Documentation * **api:** describe response stream event unions ([#412](https://github.com/openai/openai-ruby/issues/412)) ([87d18ef](https://github.com/openai/openai-ruby/commit/87d18efc19445d0080344f6ebd5bc95dc8aed5cb)) * clarify file upload metadata ([#358](https://github.com/openai/openai-ruby/issues/358)) ([698ac65](https://github.com/openai/openai-ruby/commit/698ac65d948f07edf30255c621abaac6437f0bcf)), closes [#243](https://github.com/openai/openai-ruby/issues/243) * document fiber scheduler concurrency ([#357](https://github.com/openai/openai-ruby/issues/357)) ([25a7bbc](https://github.com/openai/openai-ruby/commit/25a7bbcdc93c3331dc199e4cfe1da6037ef43bb2)) ## [0.78.0](https://github.com/openai/openai-ruby/compare/v0.77.1...v0.78.0) (2026-08-07) ### Features * support custom HTTP transports ([174aca9](https://github.com/openai/openai-ruby/commit/174aca90eba958f34c903e05f749051f8d8686f9)) * support custom HTTP transports ([#342](https://github.com/openai/openai-ruby/issues/342)) ([174aca9](https://github.com/openai/openai-ruby/commit/174aca90eba958f34c903e05f749051f8d8686f9)) ### Bug Fixes * harden custom HTTP transports ([#345](https://github.com/openai/openai-ruby/issues/345)) ([2b12ac8](https://github.com/openai/openai-ruby/commit/2b12ac85771b32bdc5947b613fef0e605e061d9a)) ### Chores * **deps-dev:** bump json from 2.21.1 to 2.21.2 ([#344](https://github.com/openai/openai-ruby/issues/344)) ([5043e3b](https://github.com/openai/openai-ruby/commit/5043e3b3415ccabca872db74c5673640502a513a)) ## [0.77.1](https://github.com/openai/openai-ruby/compare/v0.77.0...v0.77.1) (2026-08-04) ### Bug Fixes * correct README grammar ([#337](https://github.com/openai/openai-ruby/issues/337)) ([a1cf585](https://github.com/openai/openai-ruby/commit/a1cf585164298c3b8037297fde985037762ae071)) ## [0.77.0](https://github.com/openai/openai-ruby/compare/v0.76.0...v0.77.0) (2026-08-03) ### Features * **api:** promote Ruby SDK changes ([#326](https://github.com/openai/openai-ruby/issues/326)) ([d46c2e3](https://github.com/openai/openai-ruby/commit/d46c2e336f3c839cdd491c36d2b823ad47b49c88)) ## 0.76.0 (2026-07-31) Full Changelog: [v0.75.0...v0.76.0](https://github.com/openai/openai-ruby/compare/v0.75.0...v0.76.0) ### Features * require Ruby 3.3 or newer ([#322](https://github.com/openai/openai-ruby/issues/322)) ([f40aef1](https://github.com/openai/openai-ruby/commit/f40aef1892a4ebafaf4c254522dbf12f3c04ba78)) ### Bug Fixes * preserve generic Linux ffi lock entry ([#323](https://github.com/openai/openai-ruby/issues/323)) ([491eacb](https://github.com/openai/openai-ruby/commit/491eacbe59aa77586731a7929f487a4dcd6f7113)) ## 0.75.0 (2026-07-31) Full Changelog: [v0.74.0...v0.75.0](https://github.com/openai/openai-ruby/compare/v0.74.0...v0.75.0) ### Features * **api:** content provenance checks ([62229f3](https://github.com/openai/openai-ruby/commit/62229f3057975721ebe6d904c05da905b57e7255)) ## 0.74.0 (2026-07-30) Full Changelog: [v0.73.0...v0.74.0](https://github.com/openai/openai-ruby/compare/v0.73.0...v0.74.0) ### Features * **api:** fast tier ([4165ec8](https://github.com/openai/openai-ruby/commit/4165ec8e6bc100f932e3787d6c5412e89496c0e9)) ## 0.73.0 (2026-07-28) Full Changelog: [v0.72.0...v0.73.0](https://github.com/openai/openai-ruby/compare/v0.72.0...v0.73.0) ### Features * **api:** transcription model updates ([e1a95ab](https://github.com/openai/openai-ruby/commit/e1a95ab63070edb96000a334d5231994d7ca1f65)) ## 0.72.0 (2026-07-23) Full Changelog: [v0.71.0...v0.72.0](https://github.com/openai/openai-ruby/compare/v0.71.0...v0.72.0) ### Features * **api:** accept `None` for prompt_cache_key/safety_identifier ([dcff6be](https://github.com/openai/openai-ruby/commit/dcff6bee4daca61b24dd03096f4772c3d276c93d)) * **api:** add support for `spend_limit` admin apis ([06dff48](https://github.com/openai/openai-ruby/commit/06dff483232e08e59be550cf4432d319a36ede11)) * **stlc:** configurable CI runner and private-production-repo support in workflow templates ([da769b4](https://github.com/openai/openai-ruby/commit/da769b419c0d1d51af2ad471ac63fdf18705be5b)) ## 0.71.0 (2026-07-17) Full Changelog: [v0.70.0...v0.71.0](https://github.com/openai/openai-ruby/compare/v0.70.0...v0.71.0) ### Features * **api:** /organization/projects/{project_id}/service_accounts/{service_account_id}/api_keys" endpoint ([fc60012](https://github.com/openai/openai-ruby/commit/fc6001297f385326c0b9d9c9cbf7f7bd66620c11)) * **api:** manual updates ([4e499e5](https://github.com/openai/openai-ruby/commit/4e499e5e0ecee6306bde22b2b77cad619395a6cb)) * **api:** manual updates ([2be1795](https://github.com/openai/openai-ruby/commit/2be179523d2d2838982ce8d6831c49fd324ccf35)) ## 0.70.0 (2026-07-14) Full Changelog: [v0.69.0...v0.70.0](https://github.com/openai/openai-ruby/compare/v0.69.0...v0.70.0) ### Features * **api:** add owner_project_access to APIKeyListParams ([2741c65](https://github.com/openai/openai-ruby/commit/2741c6534029f6bb2fb26e3390bbffd30b7febc7)) ### Chores * **deps-dev:** bump activesupport from 8.1.1 to 8.1.2.1 ([#301](https://github.com/openai/openai-ruby/issues/301)) ([78727df](https://github.com/openai/openai-ruby/commit/78727dfdce3b6b890dbaabc2e55d17f72e4448ba)) * **deps-dev:** bump addressable from 2.8.7 to 2.9.0 ([#298](https://github.com/openai/openai-ruby/issues/298)) ([6737a88](https://github.com/openai/openai-ruby/commit/6737a8875d5322bf63cc7721fee9cb69742c58b6)) * **deps-dev:** bump yard from 0.9.37 to 0.9.44 ([#297](https://github.com/openai/openai-ruby/issues/297)) ([857dd68](https://github.com/openai/openai-ruby/commit/857dd6896271218715fc2187bbc918fabb4dba61)) * fix CodeQL parsing of Sorbet fallback ([#303](https://github.com/openai/openai-ruby/issues/303)) ([7d0dcaf](https://github.com/openai/openai-ruby/commit/7d0dcaf72eafaa7184e2945a8f051ecb8395c158)) * Harden GitHub Actions permissions ([#292](https://github.com/openai/openai-ruby/issues/292)) ([0a478dc](https://github.com/openai/openai-ruby/commit/0a478dca89668d9d1de58d710822810922189871)) ## 0.69.0 (2026-07-09) Full Changelog: [v0.68.0...v0.69.0](https://github.com/openai/openai-ruby/compare/v0.68.0...v0.69.0) ### Features * **api:** manual updates ([a5825fe](https://github.com/openai/openai-ruby/commit/a5825fe26c63e1669a0bae38321b0d8825700d87)) ### Bug Fixes * multipart filename quoting ([#279](https://github.com/openai/openai-ruby/issues/279)) ([0c2c79a](https://github.com/openai/openai-ruby/commit/0c2c79a03df51e56b8f34bbf905c5798536d9ed8)) ### Chores * **internal:** bound formatter parallelism to CPU count ([3f18a30](https://github.com/openai/openai-ruby/commit/3f18a305b3c854e190b332862e7faa991910fa02)) ### Documentation * fix wording in Sorbet example ([#290](https://github.com/openai/openai-ruby/issues/290)) ([2f34487](https://github.com/openai/openai-ruby/commit/2f34487e709761320107e142e6bfbbd0dfc82ba0)) ## 0.68.0 (2026-06-17) Full Changelog: [v0.67.0...v0.68.0](https://github.com/openai/openai-ruby/compare/v0.67.0...v0.68.0) ### Features * **api:** update OpenAPI spec or Stainless config ([e127868](https://github.com/openai/openai-ruby/commit/e1278686c33b1981c7f4db0eb3c27f2cf2b155ac)) ## 0.67.0 (2026-06-16) Full Changelog: [v0.66.1...v0.67.0](https://github.com/openai/openai-ruby/compare/v0.66.1...v0.67.0) ### Features * **api:** admin spend_alerts ([7bc8139](https://github.com/openai/openai-ruby/commit/7bc8139c6e7d4c9624b96d81aca14db2c8fd5a8b)) * **api:** manual updates ([d7a432a](https://github.com/openai/openai-ruby/commit/d7a432a466a3e833b874240ddd8847e3e92d53c3)) * **api:** update OpenAPI spec or Stainless config ([5f3ae65](https://github.com/openai/openai-ruby/commit/5f3ae65830ce5a2af1ac9eedd91c35f5a3159b6d)) ### Bug Fixes * **client:** send content-type header for requests with an omitted optional body ([156b511](https://github.com/openai/openai-ruby/commit/156b511934314f694c7a2cede3dcc53c268547db)) ## 0.66.1 (2026-06-04) Full Changelog: [v0.66.0...v0.66.1](https://github.com/openai/openai-ruby/compare/v0.66.0...v0.66.1) ## 0.66.0 (2026-06-03) Full Changelog: [v0.65.0...v0.66.0](https://github.com/openai/openai-ruby/compare/v0.65.0...v0.66.0) ### Features * **api:** responses.moderation and chat_completions.moderation ([39eeb8b](https://github.com/openai/openai-ruby/commit/39eeb8b3152476aff78c54f196f2e360f58d3408)) ## 0.65.0 (2026-06-01) Full Changelog: [v0.64.0...v0.65.0](https://github.com/openai/openai-ruby/compare/v0.64.0...v0.65.0) ### Features * **api:** workload identity in audit logs, additional_tools item in responses, fix ActionSearch.query to be optional. ([5d44823](https://github.com/openai/openai-ruby/commit/5d4482389d152decbc9e8b90ad2ed8e1d1243d43)) ## 0.64.0 (2026-05-21) Full Changelog: [v0.63.0...v0.64.0](https://github.com/openai/openai-ruby/compare/v0.63.0...v0.64.0) ### Features * **api:** api update ([88261ad](https://github.com/openai/openai-ruby/commit/88261adcad8082d440272cb71ff666e6efc3e5de)) * **api:** manual updates ([5849206](https://github.com/openai/openai-ruby/commit/58492060e9f6d4dbe1a4c51a38436f356cb3815e)) * **api:** update OpenAPI spec or Stainless config ([4a0328a](https://github.com/openai/openai-ruby/commit/4a0328ac6b7b7bb641c89df65abf46392b9d68bf)) ### Bug Fixes * **client:** elide content type header on requests without body ([e73f132](https://github.com/openai/openai-ruby/commit/e73f132c81c4e87edd9e968e30807236d496ea53)) ### Chores * **api:** docs updates ([3861ed8](https://github.com/openai/openai-ruby/commit/3861ed8091dda9bef2b5e870fc5d0b38e0b0fcb8)) ## 0.63.0 (2026-05-13) Full Changelog: [v0.62.0...v0.63.0](https://github.com/openai/openai-ruby/compare/v0.62.0...v0.63.0) ### Features * **api:** add service_tier parameter to responses compact method ([b0ed0cb](https://github.com/openai/openai-ruby/commit/b0ed0cbce8afbf6a2d099dbfed4c4d734ac10d0d)) ## 0.62.0 (2026-05-07) Full Changelog: [v0.61.0...v0.62.0](https://github.com/openai/openai-ruby/compare/v0.61.0...v0.62.0) ### Features * **api:** add quantity field to organization usage costs results ([2085700](https://github.com/openai/openai-ruby/commit/2085700725c2325e880a715ce3b13b4efce7b5d4)) * **api:** add web_search_call.results includable option ([b486412](https://github.com/openai/openai-ruby/commit/b4864127789424527497aa6097d93ea06e9aa4f7)) * **api:** launch realtime translate + update image 2 ([0e642fb](https://github.com/openai/openai-ruby/commit/0e642fbf02845ff94b8eda0fca7e8348adc3ac37)) * **api:** manual updates ([4baf155](https://github.com/openai/openai-ruby/commit/4baf155ef74ffdf533dfba330e15f7accf1e5351)) * **api:** manual updates ([20c8209](https://github.com/openai/openai-ruby/commit/20c82091b6c24668e90ed895dfc7e88b0aafd977)) * **api:** realtime 2 ([1718781](https://github.com/openai/openai-ruby/commit/17187817c580b642d61ea754aa63782a16af94bc)) ### Bug Fixes * **api:** fix imagegen `size` enum regression ([51548cd](https://github.com/openai/openai-ruby/commit/51548cd04ab8f3a16e980bd2318ddb42ee75ce6c)) ## 0.61.0 (2026-05-01) Full Changelog: [v0.60.0...v0.61.0](https://github.com/openai/openai-ruby/compare/v0.60.0...v0.61.0) ### Features * **api:** add org user/project/group fields, remove enums, update role types ([867521b](https://github.com/openai/openai-ruby/commit/867521b925b4bfb44ee66acf7b7fc43907d6a050)) * **api:** add support for Admin API Keys per endpoint ([0074885](https://github.com/openai/openai-ruby/commit/0074885734380280c790b6fcfdf8aad0639de854)) * **api:** admin API updates ([dadc042](https://github.com/openai/openai-ruby/commit/dadc0422becbe1b9df587928068d24ba5c69ec8e)) * **api:** manual updates ([5f9b9a5](https://github.com/openai/openai-ruby/commit/5f9b9a59377d79c7f4de7bc1514cfd934f93989f)) * **api:** manual updates ([4ebefdc](https://github.com/openai/openai-ruby/commit/4ebefdc5e923124475a2bc2b5fd9364704067301)) ### Bug Fixes * **api:** preserve selected auth scheme ([2479660](https://github.com/openai/openai-ruby/commit/2479660121cb6ecdb449c1a1e661a77bc93d60b1)) * **api:** support admin api key auth ([095bf67](https://github.com/openai/openai-ruby/commit/095bf67e2d13483adb7d370761663c0babf862ee)) * **types:** correct timestamp fields to Float in Response model ([943333d](https://github.com/openai/openai-ruby/commit/943333da4e7931af036c59a7795a53641ae04ec7)) * **types:** correct timestamp types to Integer in Response model ([d98683c](https://github.com/openai/openai-ruby/commit/d98683cedd697c3f919ec2e3afc9c7d0b69d7ab6)) ## 0.60.0 (2026-04-28) Full Changelog: [v0.59.0...v0.60.0](https://github.com/openai/openai-ruby/compare/v0.59.0...v0.60.0) ### Features * **api:** add prompt_cache_retention parameter to responses compact method ([a27cd24](https://github.com/openai/openai-ruby/commit/a27cd24ad266e52a3b3f3067158839ea570f15e1)) * support setting headers via env ([334512e](https://github.com/openai/openai-ruby/commit/334512e35ea5f4701b1617b4268718df5fa75b12)) ### Bug Fixes * avoid gzip buffering during streaming ([ec1b1fa](https://github.com/openai/openai-ruby/commit/ec1b1fa435e2bc7f5a70b481081fc933d02ac253)) * **types:** correct PromptCacheRetention IN_MEMORY enum value in chat/responses ([e81e954](https://github.com/openai/openai-ruby/commit/e81e9543ca20634c1e756822a6285cdc0c46d06f)) ### Chores * **ci:** remove release-doctor workflow ([0f371f5](https://github.com/openai/openai-ruby/commit/0f371f59552efd273d800570757ce61cd91b9709)) * **internal:** more robust bootstrap script ([7bcbf5a](https://github.com/openai/openai-ruby/commit/7bcbf5aa493bb7c7f310a000735ad3ec3ae0b291)) * **tests:** bump steady to v0.22.1 ([14594c1](https://github.com/openai/openai-ruby/commit/14594c1b3b84bf5bafc14a8c8779ea8b4507e7dc)) ### Documentation * **api:** add rate limit details to files.create documentation ([c7c9967](https://github.com/openai/openai-ruby/commit/c7c99675cd0d570d44db91a66ce8f50855a57c5d)) * **api:** update rate limit documentation for files.create ([09e4d86](https://github.com/openai/openai-ruby/commit/09e4d86b590d0d9db32207fa9fd568bbd8025a6d)) ## 0.59.0 (2026-04-14) Full Changelog: [v0.58.0...v0.59.0](https://github.com/openai/openai-ruby/compare/v0.58.0...v0.59.0) ### Features * **api:** Add detail to InputFileContent ([b747a16](https://github.com/openai/openai-ruby/commit/b747a16153e76eafadd54fd21a58db3f71d5e597)) * **api:** add OAuthErrorCode type ([643311e](https://github.com/openai/openai-ruby/commit/643311e02e36e0cbd58f7ae954735e690d788db2)) ### Documentation * improve examples ([5aa2eba](https://github.com/openai/openai-ruby/commit/5aa2ebae024c57a4e577f52088dd5f86713da8f5)) ## 0.58.0 (2026-04-08) Full Changelog: [v0.57.0...v0.58.0](https://github.com/openai/openai-ruby/compare/v0.57.0...v0.58.0) ### Features * **api:** add phase field to conversations message model ([a5dc6f8](https://github.com/openai/openai-ruby/commit/a5dc6f85304b7271da53b91e581cc7c124e5a3b0)) * **api:** add WEB_SEARCH_CALL_RESULTS to ResponseIncludable enum ([a556507](https://github.com/openai/openai-ruby/commit/a55650709792c28327253e054a849ed293167fc9)) * **client:** add support for short-lived tokens ([#1311](https://github.com/openai/openai-ruby/issues/1311)) ([a86d3bc](https://github.com/openai/openai-ruby/commit/a86d3bccd6cfe6b003d7383a525b7285ddd4b4b5)) ### Bug Fixes * align path encoding with RFC 3986 section 3.3 ([8058a6d](https://github.com/openai/openai-ruby/commit/8058a6d56f8ad87bf6cd840760eff58f1b9fd973)) * **api:** remove web_search_call.results from ResponseIncludable enum ([2861387](https://github.com/openai/openai-ruby/commit/2861387a6f43db7d7e7cc703022b0093b27723b9)) * **internal:** correct multipart form field name encoding ([683d14b](https://github.com/openai/openai-ruby/commit/683d14b37f2b57d5273fbb5ed1e5c6d2aea20f4d)) * multipart encoding for file arrays ([755b444](https://github.com/openai/openai-ruby/commit/755b4448c4065a2bc2993f718e1ced82b99b6ebf)) * variable name typo ([6b333a4](https://github.com/openai/openai-ruby/commit/6b333a4c4a76ad8cc91f6696ca8352c633381cfc)) ### Chores * **ci:** support opting out of skipping builds on metadata-only commits ([1b6ddfa](https://github.com/openai/openai-ruby/commit/1b6ddfa633228b299115e84918be246ec60e95d8)) * **tests:** bump steady to v0.20.1 ([952ea68](https://github.com/openai/openai-ruby/commit/952ea68c40059c7dbaacc1f2238e04d7191b31d9)) * **tests:** bump steady to v0.20.2 ([615427b](https://github.com/openai/openai-ruby/commit/615427b02e022b32824303b303a1cf1a5d528a58)) ### Documentation * **api:** update file parameter descriptions in vector_stores ([260e754](https://github.com/openai/openai-ruby/commit/260e754f501203b1a4e7c17a2ace1642b5194d52)) ## 0.57.0 (2026-03-25) Full Changelog: [v0.56.0...v0.57.0](https://github.com/openai/openai-ruby/compare/v0.56.0...v0.57.0) ### Features * **api:** add keys field to computer action types ([bd5c423](https://github.com/openai/openai-ruby/commit/bd5c423eb2e37e59147795d0ba9bdd2507085dae)) ### Bug Fixes * **api:** align SDK response types with expanded item schemas ([9aaf1f2](https://github.com/openai/openai-ruby/commit/9aaf1f2fe5fb5cffb06c40635266664a6640c83d)) * **types:** make type field required in ResponseInputMessageItem ([246318f](https://github.com/openai/openai-ruby/commit/246318fdc87b5659bbf89a6957b577b19f504e15)) ### Chores * **ci:** skip lint on metadata-only changes ([0281bf9](https://github.com/openai/openai-ruby/commit/0281bf926d03591102af929dfced76a5e8e0e325)) * **internal:** update gitignore ([1708a02](https://github.com/openai/openai-ruby/commit/1708a0204c41628e67fe1610ba6519de5fc03a35)) * **tests:** bump steady to v0.19.4 ([8cb70d7](https://github.com/openai/openai-ruby/commit/8cb70d74617b096ff0e83effe17c4a8bbe79b7fc)) * **tests:** bump steady to v0.19.5 ([b662b68](https://github.com/openai/openai-ruby/commit/b662b6821751a57f4f633a7d137f4f549e6adbdc)) * **tests:** bump steady to v0.19.6 ([6f82a97](https://github.com/openai/openai-ruby/commit/6f82a97e2349cf2bab5cc038cd65ee89a2e79d5c)) * **tests:** bump steady to v0.19.7 ([73c4eb8](https://github.com/openai/openai-ruby/commit/73c4eb8c5c673b6208a76acc95d0dc49f32d550e)) ### Refactors * **tests:** switch from prism to steady ([9907cd8](https://github.com/openai/openai-ruby/commit/9907cd82b3dcee2823c821ed89c80aab2bed0d40)) ## 0.56.0 (2026-03-17) Full Changelog: [v0.55.0...v0.56.0](https://github.com/openai/openai-ruby/compare/v0.55.0...v0.56.0) ### Features * **api:** 5.4 nano and mini model slugs ([ce7f09d](https://github.com/openai/openai-ruby/commit/ce7f09dcafdb1a8259ce14d0e7c012b872469a32)) * **api:** add /v1/videos endpoint support to batch create params ([7a661eb](https://github.com/openai/openai-ruby/commit/7a661eb405c72bb2696e0acd327ecd56d7ed6c54)) * **api:** add defer_loading field to namespace_tool function ([2f3b9b7](https://github.com/openai/openai-ruby/commit/2f3b9b7a2fa7b63ed20d362a993d98d8cec72fc1)) * **api:** add in/nin operators to ComparisonFilter ([70c8bf5](https://github.com/openai/openai-ruby/commit/70c8bf55c4d0e2054e23972479edb09c0d8f3d8e)) ### Chores * **internal:** tweak CI branches ([1a5054f](https://github.com/openai/openai-ruby/commit/1a5054f561a63a4b19c0d2a035e1c45dcfbc21fc)) ## 0.55.0 (2026-03-13) Full Changelog: [v0.54.0...v0.55.0](https://github.com/openai/openai-ruby/compare/v0.54.0...v0.55.0) ### Features * **api:** custom voices ([a9f7891](https://github.com/openai/openai-ruby/commit/a9f78916b97e3a59f35dbcac05c725474e6634af)) ## 0.54.0 (2026-03-13) Full Changelog: [v0.53.0...v0.54.0](https://github.com/openai/openai-ruby/compare/v0.53.0...v0.54.0) ### Features * **api:** api update ([235124c](https://github.com/openai/openai-ruby/commit/235124c18886d02e2373c8075354cd19cf928a1d)) * **api:** manual updates ([d1ee93f](https://github.com/openai/openai-ruby/commit/d1ee93fd53b18ba7a6c38d75ecac9ab6b6eade9f)) * **api:** manual updates ([8f13ded](https://github.com/openai/openai-ruby/commit/8f13ded017186651bbfaf679e429d7436183f8c0)) * **api:** sora api improvements: character api, video extensions/edits, higher resolution exports. ([58a8c4d](https://github.com/openai/openai-ruby/commit/58a8c4d13897c6be6735e5255e4e7308c9a7cc44)) * **client:** add webhook support ([3a2425f](https://github.com/openai/openai-ruby/commit/3a2425ff3ac8cfb883e38e56c1c76585ce6a8ab5)) ### Chores * **internal:** codegen related update ([2100fc4](https://github.com/openai/openai-ruby/commit/2100fc4105da779d09e15723c9ad22eb7a6ad307)) ## 0.53.0 (2026-03-05) Full Changelog: [v0.52.0...v0.53.0](https://github.com/openai/openai-ruby/compare/v0.52.0...v0.53.0) ### Features * **api:** The GA ComputerTool now uses the CompuerTool class. The 'computer_use_preview' tool is moved to ComputerUsePreview ([154455d](https://github.com/openai/openai-ruby/commit/154455d7ac02a6fc8a940acdb6d615c59cbce4a7)) ## 0.52.0 (2026-03-05) Full Changelog: [v0.51.0...v0.52.0](https://github.com/openai/openai-ruby/compare/v0.51.0...v0.52.0) ### Features * **api:** gpt-5.4, tool search tool, and new computer tool ([8cdcde5](https://github.com/openai/openai-ruby/commit/8cdcde5c4641eca5aaaf096588be4fe9e617a929)) * **api:** remove phase from EasyInputMessage/ResponseOutputMessage, prompt_cache_key from compact ([f603ff1](https://github.com/openai/openai-ruby/commit/f603ff148798d0d47ee2caa7281dce30547cdbd6)) ### Bug Fixes * **api:** internal schema fixes ([261ed6a](https://github.com/openai/openai-ruby/commit/261ed6ab5feb33996169e812e419e0cd4c8d7174)) * **api:** manual updates ([4f10197](https://github.com/openai/openai-ruby/commit/4f10197e93eccd7e49537716879419db09a6c477)) * **api:** readd phase ([a78d02b](https://github.com/openai/openai-ruby/commit/a78d02b807f9282b7ba6b311c9205b9998735814)) * properly mock time in ruby ci tests ([b554a8b](https://github.com/openai/openai-ruby/commit/b554a8bec4642f7cd9a0f9f2837e43f665ed5415)) ### Chores * **internal:** codegen related update ([3f6d5be](https://github.com/openai/openai-ruby/commit/3f6d5be78f67be5680eb711f0f044cf6fc2d2c5e)) * **internal:** codegen related update ([356b20b](https://github.com/openai/openai-ruby/commit/356b20ba42eea108ed7f46ff867ef894745e9ee2)) * **internal:** reduce warnings ([c13a8a3](https://github.com/openai/openai-ruby/commit/c13a8a31ecda80a45880432915855a3be9f55f70)) ## 0.51.0 (2026-02-24) Full Changelog: [v0.50.0...v0.51.0](https://github.com/openai/openai-ruby/compare/v0.50.0...v0.51.0) ### Features * **api:** add phase ([656f591](https://github.com/openai/openai-ruby/commit/656f5917f52cfbe388f9d706ab372b958301985e)) ### Bug Fixes * **api:** fix phase enum ([c055d7b](https://github.com/openai/openai-ruby/commit/c055d7b2fe06a49ad64db6dc880e30f41d42e22d)) * **api:** phase docs ([766b70c](https://github.com/openai/openai-ruby/commit/766b70cc83834acf57f1d2c31ea5026ff0d70b7f)) ## 0.50.0 (2026-02-24) Full Changelog: [v0.49.1...v0.50.0](https://github.com/openai/openai-ruby/compare/v0.49.1...v0.50.0) ### Features * **api:** add gpt-realtime-1.5 and gpt-audio-1.5 models to realtime session ([23a0d24](https://github.com/openai/openai-ruby/commit/23a0d24790e85e300735cdc7481ec907b85dff01)) ## 0.49.1 (2026-02-23) Full Changelog: [v0.49.0...v0.49.1](https://github.com/openai/openai-ruby/compare/v0.49.0...v0.49.1) ### Bug Fixes * **api:** manual updates ([6d59acd](https://github.com/openai/openai-ruby/commit/6d59acd6875dad00aa7abefc9b8629e68d4068ff)) ### Chores * update mock server docs ([4ab9773](https://github.com/openai/openai-ruby/commit/4ab97731fd3d59dde01eae01ad6b09b962475724)) ### Documentation * **api:** add batch size limit to vector_stores file_batch_create_params ([f8f915b](https://github.com/openai/openai-ruby/commit/f8f915b791433e804256e27e76d48f61fefd0aa3)) * **api:** add length limit to safety_identifier in chat/responses ([f76fd6f](https://github.com/openai/openai-ruby/commit/f76fd6fd8ac3c4d63199e71fcfd9ae20bd9050d0)) * **api:** enhance method descriptions and return value docs across resources ([6ac3366](https://github.com/openai/openai-ruby/commit/6ac336621101468f74758c5b7eff56a8b14cb69d)) ## 0.49.0 (2026-02-13) Full Changelog: [v0.48.0...v0.49.0](https://github.com/openai/openai-ruby/compare/v0.48.0...v0.49.0) ### Features * **api:** container network_policy and skills ([0bad2bd](https://github.com/openai/openai-ruby/commit/0bad2bdedc9c940829297d093c1b891f96a14510)) ### Documentation * update comment ([b4f6392](https://github.com/openai/openai-ruby/commit/b4f639284210e2b4f3aa55b515b7914d6b78d78e)) ## 0.48.0 (2026-02-10) Full Changelog: [v0.47.0...v0.48.0](https://github.com/openai/openai-ruby/compare/v0.47.0...v0.48.0) ### Features * **api:** support for images in batch api ([fc847f5](https://github.com/openai/openai-ruby/commit/fc847f59d745e86bf0f93e7886612dae910e19b6)) ## 0.47.0 (2026-02-10) Full Changelog: [v0.46.0...v0.47.0](https://github.com/openai/openai-ruby/compare/v0.46.0...v0.47.0) ### Features * **api:** skills and hosted shell ([cf841cd](https://github.com/openai/openai-ruby/commit/cf841cd617c13c2800d2d71afe9e4ef04f18e5e5)) ## 0.46.0 (2026-02-08) Full Changelog: [v0.45.0...v0.46.0](https://github.com/openai/openai-ruby/compare/v0.45.0...v0.46.0) ### Features * **api:** responses context_management ([d954f15](https://github.com/openai/openai-ruby/commit/d954f152ff59cc30baec8d7bba91f1575bfa29f4)) ### Bug Fixes * **client:** loosen json header parsing ([8b7f68c](https://github.com/openai/openai-ruby/commit/8b7f68c3b866daba39ed4bf83a724990891de69a)) ## 0.45.0 (2026-02-04) Full Changelog: [v0.44.0...v0.45.0](https://github.com/openai/openai-ruby/compare/v0.44.0...v0.45.0) ### Features * **api:** add shell_call_output status field ([b235617](https://github.com/openai/openai-ruby/commit/b2356174e90b573b98f16a3176a51cc2b4a108b4)) * **api:** image generation actions for responses; ResponseFunctionCallArgumentsDoneEvent.name ([da359de](https://github.com/openai/openai-ruby/commit/da359de522a5532b287094b04f625248687d08f3)) ### Bug Fixes * **client:** always add content-length to post body, even when empty ([b6faa94](https://github.com/openai/openai-ruby/commit/b6faa94ec4454515c576c067a584e2a62fa33666)) * **client:** undo change to web search Find action ([e10a7dd](https://github.com/openai/openai-ruby/commit/e10a7dd8f601a66b5b1e7c769623f51f9e191a9f)) * **client:** update type for `find_in_page` action ([dd727fa](https://github.com/openai/openai-ruby/commit/dd727fadbd82ae42181fae53582043809e4dd391)) ### Chores * **client:** improve example values ([3c8e152](https://github.com/openai/openai-ruby/commit/3c8e1520fd7bea47442814fe2a4196c68f2062c7)) * **docs:** remove www prefix ([6ef56a3](https://github.com/openai/openai-ruby/commit/6ef56a36260ed01f4ea302ae69a73aed366e5e94)) ## 0.44.0 (2026-01-27) Full Changelog: [v0.43.0...v0.44.0](https://github.com/openai/openai-ruby/compare/v0.43.0...v0.44.0) ### Features * **api:** api update ([407360e](https://github.com/openai/openai-ruby/commit/407360eb65bd70de1e4398e2b892624d0d674ea9)) * **api:** api updates ([d3b882e](https://github.com/openai/openai-ruby/commit/d3b882ec9547197583f8002395842cc861b08774)) ### Bug Fixes * **api:** mark assistants as deprecated ([5baf7da](https://github.com/openai/openai-ruby/commit/5baf7dab0fecd0fb64720ce586377e9999d76b9e)) ### Chores * **internal:** update `actions/checkout` version ([78251bd](https://github.com/openai/openai-ruby/commit/78251bd3cdaccc09f57feda8ee5b73cab03d6625)) ## 0.43.0 (2026-01-09) Full Changelog: [v0.42.0...v0.43.0](https://github.com/openai/openai-ruby/compare/v0.42.0...v0.43.0) ### Features * **api:** add new Response completed_at prop ([c32e1c2](https://github.com/openai/openai-ruby/commit/c32e1c2a0a0ae6a9b7724e1c6d251ba14e8499e1)) ### Chores * add ci tests for ruby 4 compatibility [#235](https://github.com/openai/openai-ruby/issues/235) ([#236](https://github.com/openai/openai-ruby/issues/236)) ([1aa0d7a](https://github.com/openai/openai-ruby/commit/1aa0d7abf5a4714fa28cfe7ee5aecefbe2c683d2)) * **internal:** codegen related update ([ef23de3](https://github.com/openai/openai-ruby/commit/ef23de347b5f541853a32a288cd02a54938793cf)) * **internal:** use different example values for some enums ([8b6c4ad](https://github.com/openai/openai-ruby/commit/8b6c4ade813244e8c65690c66fe09f2566dd3ff0)) * move `cgi` into dependencies for ruby 4 ([bd9c798](https://github.com/openai/openai-ruby/commit/bd9c798552a3d378ec943c7e07d6cf1334f72b1d)) ## 0.42.0 (2025-12-19) Full Changelog: [v0.41.0...v0.42.0](https://github.com/openai/openai-ruby/compare/v0.41.0...v0.42.0) ### Bug Fixes * issue where json.parse errors when receiving HTTP 204 with nobody ([7984c03](https://github.com/openai/openai-ruby/commit/7984c0396f5acd1b801514e280415090deb0cd06)) * rebuild ([52b19e9](https://github.com/openai/openai-ruby/commit/52b19e9b4b0344c77bec4603df3d4f16ee4cd720)) ## 0.41.0 (2025-12-16) Full Changelog: [v0.40.0...v0.41.0](https://github.com/openai/openai-ruby/compare/v0.40.0...v0.41.0) ### Features * **api:** gpt-image-1.5 ([8a7fdb3](https://github.com/openai/openai-ruby/commit/8a7fdb3c5228f765a0e18f9bb1f8c9c24dcf037b)) * **api:** manual updates for java ([3aeb38f](https://github.com/openai/openai-ruby/commit/3aeb38f958498574d2009da300d2d964206955e5)) ### Bug Fixes * **api:** manual updates for ruby build ([c142813](https://github.com/openai/openai-ruby/commit/c142813f8948131abe980ef919aade6ed10b7456)) * calling `break` out of streams should be instantaneous ([7fc53db](https://github.com/openai/openai-ruby/commit/7fc53db685dfa10c64472a337e7093f20a2ea597)) ## 0.40.0 (2025-12-13) Full Changelog: [v0.39.0...v0.40.0](https://github.com/openai/openai-ruby/compare/v0.39.0...v0.40.0) ### Features * **api:** api update ([a4115ea](https://github.com/openai/openai-ruby/commit/a4115ead652128743bd6692ba0719991374d052a)) * **api:** fix grader input list, add dated slugs for sora-2 ([bedec43](https://github.com/openai/openai-ruby/commit/bedec437928f692a5e3de51fd0e49df310fcbcd2)) ## 0.39.0 (2025-12-11) Full Changelog: [v0.38.0...v0.39.0](https://github.com/openai/openai-ruby/compare/v0.38.0...v0.39.0) ### Features * **api:** gpt 5.2 ([369f26b](https://github.com/openai/openai-ruby/commit/369f26b5e42ddef31d07278e43776415f5d49b62)) ### Bug Fixes * Create new responses with previous_response_id ([#869](https://github.com/openai/openai-ruby/issues/869)) ([b14e2aa](https://github.com/openai/openai-ruby/commit/b14e2aa2351d102c4af30809ebb4a5cca61a1165)) ## 0.38.0 (2025-12-08) Full Changelog: [v0.37.0...v0.38.0](https://github.com/openai/openai-ruby/compare/v0.37.0...v0.38.0) ### Features * **api:** make model required for the responses/compact endpoint ([94ad657](https://github.com/openai/openai-ruby/commit/94ad657d3824838dbb1517bb6aa43341a0581102)) ## 0.37.0 (2025-12-04) Full Changelog: [v0.36.1...v0.37.0](https://github.com/openai/openai-ruby/compare/v0.36.1...v0.37.0) ### Features * **api:** gpt-5.1-codex-max and responses/compact ([17f7eda](https://github.com/openai/openai-ruby/commit/17f7eda484df9835373c09fee5c3ada5536c18af)) ### Chores * add "base64" as a dependency for newer ruby versions ([#868](https://github.com/openai/openai-ruby/issues/868)) ([b7be495](https://github.com/openai/openai-ruby/commit/b7be4955d5ea7affdf55ce11086afc1bc904f471)) * explicitly require "base64" gem ([4be5941](https://github.com/openai/openai-ruby/commit/4be5941881cd50e5c7596c62e3b7b4fda2af5196)) ## 0.36.1 (2025-11-17) Full Changelog: [v0.36.0...v0.36.1](https://github.com/openai/openai-ruby/compare/v0.36.0...v0.36.1) ### Bug Fixes * **api:** align types of input items / output items for typescript ([b593643](https://github.com/openai/openai-ruby/commit/b5936439c6804161bc1a9a7900bdc33f09be1485)) ## 0.36.0 (2025-11-13) Full Changelog: [v0.35.2...v0.36.0](https://github.com/openai/openai-ruby/compare/v0.35.2...v0.36.0) ### Features * **api:** gpt 5.1 ([26ece0e](https://github.com/openai/openai-ruby/commit/26ece0eb68486e40066c89f626b9a83c4f274889)) ## 0.35.2 (2025-11-05) Full Changelog: [v0.35.1...v0.35.2](https://github.com/openai/openai-ruby/compare/v0.35.1...v0.35.2) ### Bug Fixes * better thread safety via early initializing SSL store during HTTP client creation ([e7d9a3d](https://github.com/openai/openai-ruby/commit/e7d9a3d70c0930ac248b4da680296213cb3e163d)) * schema generation ([#862](https://github.com/openai/openai-ruby/issues/862)) ([2c9b91a](https://github.com/openai/openai-ruby/commit/2c9b91acc79262dd56ef52854ad64384f172984b)) ## 0.35.1 (2025-11-04) Full Changelog: [v0.35.0...v0.35.1](https://github.com/openai/openai-ruby/compare/v0.35.0...v0.35.1) ### Bug Fixes * **api:** fix nullability of logprobs ([adead66](https://github.com/openai/openai-ruby/commit/adead661c71c8c5f6420bbafc5fa5b188758ddc5)) ## 0.35.0 (2025-11-03) Full Changelog: [v0.34.1...v0.35.0](https://github.com/openai/openai-ruby/compare/v0.34.1...v0.35.0) ### Features * **api:** Realtime API token_limits, Hybrid searching ranking options ([f7f04ea](https://github.com/openai/openai-ruby/commit/f7f04ea1816e005cfc7325f3c97b1f463aa6afe3)) * **api:** remove InputAudio from ResponseInputContent ([e8f5e9f](https://github.com/openai/openai-ruby/commit/e8f5e9f1b51843bc015f787316fbf522a87cac52)) * handle thread interrupts in the core HTTP client ([92e26d0](https://github.com/openai/openai-ruby/commit/92e26d0593ae6487a62d500c3e1e866252f3bdeb)) ### Bug Fixes * **api:** docs updates ([88a4a35](https://github.com/openai/openai-ruby/commit/88a4a355457b22ef9ac657ecb0e7a1a2e9bc8973)) * text and tools use mutually exclusive issue ([#855](https://github.com/openai/openai-ruby/issues/855)) ([7d93874](https://github.com/openai/openai-ruby/commit/7d93874ff34f5efa2459211984533fe72dced9e1)) ### Chores * add license information to the gemspec file ([#222](https://github.com/openai/openai-ruby/issues/222)) ([90d3c4a](https://github.com/openai/openai-ruby/commit/90d3c4aaae8a6e2fa039e0d1ad220ea3d1051ed7)) * **client:** send user-agent header ([3a850a9](https://github.com/openai/openai-ruby/commit/3a850a93808daf101fb086edc5511db9fa224684)) * **internal:** codegen related update ([f6b9f90](https://github.com/openai/openai-ruby/commit/f6b9f904a95d703a0ce76185e63352e095cb35af)) ## 0.34.1 (2025-10-20) Full Changelog: [v0.34.0...v0.34.1](https://github.com/openai/openai-ruby/compare/v0.34.0...v0.34.1) ### Bug Fixes * **api:** fix discriminator propertyName for ResponseFormatJsonSchema ([e7bacfb](https://github.com/openai/openai-ruby/commit/e7bacfb9e5dee526ff4d4fae23a1663bb3fb64eb)) ## 0.34.0 (2025-10-20) Full Changelog: [v0.33.0...v0.34.0](https://github.com/openai/openai-ruby/compare/v0.33.0...v0.34.0) ### Features * **api:** Add responses.input_tokens.count ([4c3f064](https://github.com/openai/openai-ruby/commit/4c3f06487954945b034f69c393a0a5a28fffa0c8)) ### Bug Fixes * **api:** internal openapi updates ([1fbce8c](https://github.com/openai/openai-ruby/commit/1fbce8c1158482b361ea48ff996b1998031679bf)) ## 0.33.0 (2025-10-17) Full Changelog: [v0.32.0...v0.33.0](https://github.com/openai/openai-ruby/compare/v0.32.0...v0.33.0) ### Features * **api:** api update ([2d18f16](https://github.com/openai/openai-ruby/commit/2d18f169b109857149626499832c3e345626466c)) ## 0.32.0 (2025-10-16) Full Changelog: [v0.31.0...v0.32.0](https://github.com/openai/openai-ruby/compare/v0.31.0...v0.32.0) ### Features * **api:** Add support for gpt-4o-transcribe-diarize on audio/transcriptions endpoint ([b31bd7f](https://github.com/openai/openai-ruby/commit/b31bd7f20ca702160873fa26ab39479fd8102f85)) ### Bug Fixes * absolutely qualified uris should always override the default ([14fdff8](https://github.com/openai/openai-ruby/commit/14fdff8de533a1002c64c9086016777a1e152a97)) * should not reuse buffers for `IO.copy_stream` interop ([8f33de1](https://github.com/openai/openai-ruby/commit/8f33de18bb104d5003a4d459ad244c0813e5a07e)) ## 0.31.0 (2025-10-10) Full Changelog: [v0.30.0...v0.31.0](https://github.com/openai/openai-ruby/compare/v0.30.0...v0.31.0) ### Features * **api:** comparison filter in/not in ([ac3e58b](https://github.com/openai/openai-ruby/commit/ac3e58bbee0c919ac84c4b3ac8b67955bca7ba88)) ### Chores * ignore linter error for tests having large collections ([90c4440](https://github.com/openai/openai-ruby/commit/90c44400f8713b7d2d0b51142f4ed5509dbca713)) * simplify model references ([d18c5af](https://github.com/openai/openai-ruby/commit/d18c5af9d05ae63616f2c83fb228c15f37cdddb0)) ## 0.30.0 (2025-10-06) Full Changelog: [v0.29.0...v0.30.0](https://github.com/openai/openai-ruby/compare/v0.29.0...v0.30.0) ### Features * **api:** dev day 2025 launches ([98a56b4](https://github.com/openai/openai-ruby/commit/98a56b4c6a1cae0ebf4c0d9bc75933fbcd74af9f)) ## 0.29.0 (2025-10-02) Full Changelog: [v0.28.1...v0.29.0](https://github.com/openai/openai-ruby/compare/v0.28.1...v0.29.0) ### Features * **api:** add support for realtime calls ([2c89d20](https://github.com/openai/openai-ruby/commit/2c89d20072ed1611227bcdb0cb3771407e5c0a21)) ## 0.28.1 (2025-10-01) Full Changelog: [v0.28.0...v0.28.1](https://github.com/openai/openai-ruby/compare/v0.28.0...v0.28.1) ### Bug Fixes * **api:** add status, approval_request_id to MCP tool call ([51622d0](https://github.com/openai/openai-ruby/commit/51622d065828bec248fb765c5bc243a058f0044d)) ## 0.28.0 (2025-09-30) Full Changelog: [v0.27.1...v0.28.0](https://github.com/openai/openai-ruby/compare/v0.27.1...v0.28.0) ### ⚠ BREAKING CHANGES * **api:** `ResponseFunctionToolCallOutputItem.output` and `ResponseCustomToolCallOutput.output` now return `string | Array` instead of `string` only. This may break existing callsites that assume `output` is always a string. ### Features * **api:** Support images and files for function call outputs in responses, BatchUsage ([904348a](https://github.com/openai/openai-ruby/commit/904348a26c713601f10063fef73f9982088aa438)) ### Bug Fixes * coroutine leaks from connection pool ([7f0b3cd](https://github.com/openai/openai-ruby/commit/7f0b3cdfee0232dbfa1800029ba80f5470f95c13)) ## 0.27.1 (2025-09-29) Full Changelog: [v0.27.0...v0.27.1](https://github.com/openai/openai-ruby/compare/v0.27.0...v0.27.1) ### Bug Fixes * always send `filename=...` for multipart requests where a file is expected ([99849fd](https://github.com/openai/openai-ruby/commit/99849fddf478869b57b77cbe208efd13d9a8246e)) ## 0.27.0 (2025-09-26) Full Changelog: [v0.26.0...v0.27.0](https://github.com/openai/openai-ruby/compare/v0.26.0...v0.27.0) ### Features * chat completion streaming helpers ([#828](https://github.com/openai/openai-ruby/issues/828)) ([6e98424](https://github.com/openai/openai-ruby/commit/6e9842485e819876dd6b78107fa45f1a5da67e4f)) ### Bug Fixes * **internal:** use null byte as file separator in the fast formatting script ([151ffe1](https://github.com/openai/openai-ruby/commit/151ffe10c9dc8d5edaf46de2a1c6b6e6fda80034)) * shorten multipart boundary sep to less than RFC specificed max length ([d7770d1](https://github.com/openai/openai-ruby/commit/d7770d10ee3b093d8e2464b79e0e12be3a9d2beb)) ### Performance Improvements * faster code formatting ([67da711](https://github.com/openai/openai-ruby/commit/67da71139e5b572c97539299c39bae04c1d569fd)) ### Chores * allow fast-format to use bsd sed as well ([66ac913](https://github.com/openai/openai-ruby/commit/66ac913d195d8b5a5c4474ded88a5f9dad13b7b6)) ## 0.26.0 (2025-09-23) Full Changelog: [v0.25.1...v0.26.0](https://github.com/openai/openai-ruby/compare/v0.25.1...v0.26.0) ### Features * **api:** gpt-5-codex ([6c9b9b5](https://github.com/openai/openai-ruby/commit/6c9b9b58dabc56fbe9ac871517f837a662c6c237)) ## 0.25.1 (2025-09-22) Full Changelog: [v0.25.0...v0.25.1](https://github.com/openai/openai-ruby/compare/v0.25.0...v0.25.1) ### Bug Fixes * **api:** fix mcp tool name ([25ec2ac](https://github.com/openai/openai-ruby/commit/25ec2aca164414f66a7d023c196ee6b1781c7146)) ### Chores * **api:** openapi updates for conversations ([ce76a59](https://github.com/openai/openai-ruby/commit/ce76a591d8c596d9eaeaa14077cec3146ffb1d0c)) * do not install brew dependencies in ./scripts/bootstrap by default ([3afa532](https://github.com/openai/openai-ruby/commit/3afa53231a90968bec2d361363334800463b436d)) * improve example values ([ad9a444](https://github.com/openai/openai-ruby/commit/ad9a4444e8a9af36f31368f19a095c1d4f4200ad)) ## 0.25.0 (2025-09-19) Full Changelog: [v0.24.0...v0.25.0](https://github.com/openai/openai-ruby/compare/v0.24.0...v0.25.0) ### Features * **api:** add reasoning_text ([48073e9](https://github.com/openai/openai-ruby/commit/48073e955e50f7818fc0c422b7b5ce80c853536c)) ## 0.24.0 (2025-09-17) Full Changelog: [v0.23.3...v0.24.0](https://github.com/openai/openai-ruby/compare/v0.23.3...v0.24.0) ### Features * **api:** type updates for conversations, reasoning_effort and results for evals ([ee17642](https://github.com/openai/openai-ruby/commit/ee17642d7319dacb933a41ae9f1edae2a200762f)) * expose response headers for both streams and errors ([a158fd6](https://github.com/openai/openai-ruby/commit/a158fd66b22a5586f4a45301ff96e40f8d52fe8c)) ## 0.23.3 (2025-09-15) Full Changelog: [v0.23.2...v0.23.3](https://github.com/openai/openai-ruby/compare/v0.23.2...v0.23.3) ### Chores * **api:** docs and spec refactoring ([81ccb86](https://github.com/openai/openai-ruby/commit/81ccb86c346e51a2b5d532a5997358aa86977572)) ## 0.23.2 (2025-09-11) Full Changelog: [v0.23.1...v0.23.2](https://github.com/openai/openai-ruby/compare/v0.23.1...v0.23.2) ### Chores * **api:** Minor docs and type updates for realtime ([ccef982](https://github.com/openai/openai-ruby/commit/ccef9827b31206fc9ba40d2b6165eeefda7621f5)) ## 0.23.1 (2025-09-10) Full Changelog: [v0.23.0...v0.23.1](https://github.com/openai/openai-ruby/compare/v0.23.0...v0.23.1) ### Chores * **api:** fix realtime GA types ([342f8d9](https://github.com/openai/openai-ruby/commit/342f8d9a4322cc1afba9aeabc1ff0fda5daec5c3)) ## 0.23.0 (2025-09-08) Full Changelog: [v0.22.1...v0.23.0](https://github.com/openai/openai-ruby/compare/v0.22.1...v0.23.0) ### Features * **api:** ship the RealtimeGA API shape ([6c59e2c](https://github.com/openai/openai-ruby/commit/6c59e2c78ea130b626442e2230676afcca3a906f)) ## 0.22.1 (2025-09-05) Full Changelog: [v0.22.0...v0.22.1](https://github.com/openai/openai-ruby/compare/v0.22.0...v0.22.1) ### Bug Fixes * **internal:** oops had a bad test merge in ([#824](https://github.com/openai/openai-ruby/issues/824)) ([d3a0ae8](https://github.com/openai/openai-ruby/commit/d3a0ae823a4a14faff5b115488fdb26b0786ece6)) * use APIStatusError.for instead of APIError.for in stream.rb ([#194](https://github.com/openai/openai-ruby/issues/194)) ([275e19b](https://github.com/openai/openai-ruby/commit/275e19b7d83237431e2f67190d5a3c45fc359610)) * use correct error class when raising errors from within streams ([271d805](https://github.com/openai/openai-ruby/commit/271d805d07594bd52ffea841429a1a309ba7a8b6)) ## 0.22.0 (2025-09-03) Full Changelog: [v0.21.1...v0.22.0](https://github.com/openai/openai-ruby/compare/v0.21.1...v0.22.0) ### Features * **api:** Add gpt-realtime models ([8e6de5f](https://github.com/openai/openai-ruby/commit/8e6de5f479d43fc2b4659949fe57b3913f439e05)) ## 0.21.1 (2025-09-02) Full Changelog: [v0.21.0...v0.21.1](https://github.com/openai/openai-ruby/compare/v0.21.0...v0.21.1) ### Chores * **api:** manual updates for ResponseInputAudio ([7768f86](https://github.com/openai/openai-ruby/commit/7768f86e400261623f760fffab526f7386d7cf30)) ## 0.21.0 (2025-09-02) Full Changelog: [v0.20.0...v0.21.0](https://github.com/openai/openai-ruby/compare/v0.20.0...v0.21.0) ### Features * **api:** realtime API updates ([a8ab6ab](https://github.com/openai/openai-ruby/commit/a8ab6ab5995d7a10b336e8987101d0135e161359)) ### Bug Fixes * correctly raise errors encountered during streaming ([766c6c6](https://github.com/openai/openai-ruby/commit/766c6c65c7d27f853ca6cd3ebc4d0ad6385c5924)) ## 0.20.0 (2025-08-26) Full Changelog: [v0.19.0...v0.20.0](https://github.com/openai/openai-ruby/compare/v0.19.0...v0.20.0) ### Features * **api:** add web search filters ([3b84ccf](https://github.com/openai/openai-ruby/commit/3b84ccfc4073237232eff453ee33cbc15ad96c5d)) ### Chores * add example for using openai-ruby with Azure OpenAI ([#185](https://github.com/openai/openai-ruby/issues/185)) ([9a9338f](https://github.com/openai/openai-ruby/commit/9a9338fe333d81de3113ba4495b9b08c982e730b)) * add json schema comment for rubocop.yml ([1f85c0d](https://github.com/openai/openai-ruby/commit/1f85c0dcf5659e9b4bb995b2c7af40e79d28e376)) * annotate structured output parsed responses with `response_only` ([#814](https://github.com/openai/openai-ruby/issues/814)) ([320b726](https://github.com/openai/openai-ruby/commit/320b726deec82b34e06fbaa909c9fcc90dbe4d96)) ## 0.19.0 (2025-08-21) Full Changelog: [v0.18.1...v0.19.0](https://github.com/openai/openai-ruby/compare/v0.18.1...v0.19.0) ### Features * **api:** Add connectors support for MCP tool ([469dbe2](https://github.com/openai/openai-ruby/commit/469dbe2f5fab91bac9f4a656250567c9f6bc9867)) * **api:** adding support for /v1/conversations to the API ([54d4fe7](https://github.com/openai/openai-ruby/commit/54d4fe72f8157c44d3bca692e232be2e7ef7bbeb)) ### Bug Fixes * bump sorbet version and fix new type errors from the breaking change ([147f0a4](https://github.com/openai/openai-ruby/commit/147f0a48e2c10ede5d8a30c58ae8f5601d3c4a26)) * do note check stainless api key during release creation ([#813](https://github.com/openai/openai-ruby/issues/813)) ([afab147](https://github.com/openai/openai-ruby/commit/afab1477b36c90edd5a163f42d8b7f8f82001622)) ### Chores * **internal/ci:** setup breaking change detection ([f6a214c](https://github.com/openai/openai-ruby/commit/f6a214cd9373afdde57bee358b4e008f256b2a1e)) ## 0.18.1 (2025-08-19) Full Changelog: [v0.18.0...v0.18.1](https://github.com/openai/openai-ruby/compare/v0.18.0...v0.18.1) ### Chores * **api:** accurately represent shape for verbosity on Chat Completions ([a19cd00](https://github.com/openai/openai-ruby/commit/a19cd00e6df3cc3f47239a25fe15f33c2cb77962)) ## 0.18.0 (2025-08-15) Full Changelog: [v0.17.1...v0.18.0](https://github.com/openai/openai-ruby/compare/v0.17.1...v0.18.0) ### ⚠ BREAKING CHANGES * structured output desc should go on array items not array itself ([#799](https://github.com/openai/openai-ruby/issues/799)) ### Features * **api:** add new text parameters, expiration options ([f318432](https://github.com/openai/openai-ruby/commit/f318432b19800ab42d5b0c5f179f0cdd02dbf596)) ### Bug Fixes * structured output desc should go on array items not array itself ([#799](https://github.com/openai/openai-ruby/issues/799)) ([ff507d0](https://github.com/openai/openai-ruby/commit/ff507d095ff703ba3b44ab82b06eb4314688d4eb)) ### Chores * **internal:** update test skipping reason ([c815703](https://github.com/openai/openai-ruby/commit/c815703062ce79d2cb14f252ee5d23cf4ebf15ca)) ## 0.17.1 (2025-08-09) Full Changelog: [v0.17.0...v0.17.1](https://github.com/openai/openai-ruby/compare/v0.17.0...v0.17.1) ### Chores * collect metadata from type DSL ([d63cb9e](https://github.com/openai/openai-ruby/commit/d63cb9eb8efc60d43bd17c96bb6dc1e3b4254b26)) * **internal:** update comment in script ([a08be47](https://github.com/openai/openai-ruby/commit/a08be4787dfc910a7c9cc06bc72f9c40b40250a4)) ## 0.17.0 (2025-08-08) Full Changelog: [v0.16.0...v0.17.0](https://github.com/openai/openai-ruby/compare/v0.16.0...v0.17.0) ### Features * **api:** adds GPT-5 and new API features: platform.openai.com/docs/guides/gpt-5 ([068a381](https://github.com/openai/openai-ruby/commit/068a381a17dd2d60865e67fcd17fa84d919f3f5c)) * **api:** manual updates ([1d79621](https://github.com/openai/openai-ruby/commit/1d79621120fbccc8dd41f5af6df5a9b1a9018e73)) ### Bug Fixes * **client:** dont try to parse if content is missing ([#770](https://github.com/openai/openai-ruby/issues/770)) ([7f8f2d3](https://github.com/openai/openai-ruby/commit/7f8f2d32863fafc39ee4a884937673a2ad9be358)) * **client:** fix verbosity parameter location in Responses ([a6b7ae8](https://github.com/openai/openai-ruby/commit/a6b7ae8b568c2214d4883fad44c9cf2e8a7d53e2)) * **internal:** fix rbi error ([803f20b](https://github.com/openai/openai-ruby/commit/803f20ba0c3751d28175dca99853783f0d851645)) * **respones:** undo accidently deleted fields ([#177](https://github.com/openai/openai-ruby/issues/177)) ([90a7c3a](https://github.com/openai/openai-ruby/commit/90a7c3ac8d22cc90b8ecaa3b091598ea3bc73029)) * **responses:** remove incorrect verbosity param ([127e2d1](https://github.com/openai/openai-ruby/commit/127e2d1b96b72307178446f0aa8acc1d3ad31367)) ### Chores * **internal:** increase visibility of internal helper method ([eddbcda](https://github.com/openai/openai-ruby/commit/eddbcda189ac0a864fc3dadc5dd3578d730c491f)) * update @stainless-api/prism-cli to v5.15.0 ([aaa7d89](https://github.com/openai/openai-ruby/commit/aaa7d895a3dba31f32cf5f4373a49d1571667fc6)) ## 0.16.0 (2025-07-30) Full Changelog: [v0.15.0...v0.16.0](https://github.com/openai/openai-ruby/compare/v0.15.0...v0.16.0) ### Features * add output_text method for non-streaming responses ([#757](https://github.com/openai/openai-ruby/issues/757)) ([50cf119](https://github.com/openai/openai-ruby/commit/50cf119106f9e16d9ac6a9898028b6d563a6f809)) * **api:** manual updates ([e9fa8a0](https://github.com/openai/openai-ruby/commit/e9fa8a08d6ecebdd06212eaf6b9103082b7d67aa)) ### Bug Fixes * **internal:** ensure sorbet test always runs serially ([0601061](https://github.com/openai/openai-ruby/commit/0601061047525d16cc2afac64e5a4de0dd9de2e5)) * provide parsed outputs for resumed streams ([#756](https://github.com/openai/openai-ruby/issues/756)) ([82254f9](https://github.com/openai/openai-ruby/commit/82254f980ccc0affa2555a81b0d8ed5aa0290835)) * union definition re-using ([#760](https://github.com/openai/openai-ruby/issues/760)) ([3046c28](https://github.com/openai/openai-ruby/commit/3046c28935ca925c2f399f0350937d04eab54c0a)) ### Chores * extract reused JSON schema references even in unions ([#761](https://github.com/openai/openai-ruby/issues/761)) ([e17d3bf](https://github.com/openai/openai-ruby/commit/e17d3bf1fdf241f7a78ed72a39ddecabeb5877c8)) * **internal:** refactor variable name ([#762](https://github.com/openai/openai-ruby/issues/762)) ([7e15b07](https://github.com/openai/openai-ruby/commit/7e15b0745dcbd3bf7fc4c1899d9d76e0a9ab1e48)) * update contribute.md ([b4a0297](https://github.com/openai/openai-ruby/commit/b4a029775bb52d5db2f3fac235595f37b6746a61)) ## 0.15.0 (2025-07-21) Full Changelog: [v0.14.0...v0.15.0](https://github.com/openai/openai-ruby/compare/v0.14.0...v0.15.0) ### Features * **api:** manual updates ([fb53071](https://github.com/openai/openai-ruby/commit/fb530713d08a4ba49e8bdaecd9848674bb35c333)) ### Bug Fixes * **internal:** tests should use normalized property names ([801e9c2](https://github.com/openai/openai-ruby/commit/801e9c29f65e572a3b49f5cf7891d3053e1d087f)) ### Chores * **api:** event shapes more accurate ([29f32ce](https://github.com/openai/openai-ruby/commit/29f32cedf6112d38fe8de454658a5afd7ad0d2cb)) ## 0.14.0 (2025-07-16) Full Changelog: [v0.13.1...v0.14.0](https://github.com/openai/openai-ruby/compare/v0.13.1...v0.14.0) ### Features * **api:** manual updates ([b749baf](https://github.com/openai/openai-ruby/commit/b749baf0d1b52c35ff6e50b889301aa7b8ee2ba1)) ## 0.13.1 (2025-07-15) Full Changelog: [v0.13.0...v0.13.1](https://github.com/openai/openai-ruby/compare/v0.13.0...v0.13.1) ### Bug Fixes * ensure openapi refs are correctly linked ([#746](https://github.com/openai/openai-ruby/issues/746)) ([ea3fccd](https://github.com/openai/openai-ruby/commit/ea3fccdc4f433e4e8a07ae6b47f8ef546b90d24b)) ### Chores * **api:** update realtime specs, build config ([8ccc35e](https://github.com/openai/openai-ruby/commit/8ccc35e04788eb52be853db6eafa585a9fd5140a)) ## 0.13.0 (2025-07-10) Full Changelog: [v0.12.0...v0.13.0](https://github.com/openai/openai-ruby/compare/v0.12.0...v0.13.0) ### Features * **api:** add file_url, fix event ID ([9b8919d](https://github.com/openai/openai-ruby/commit/9b8919d470b622035f13c455aa9aa783feb1f936)) ## 0.12.0 (2025-07-03) Full Changelog: [v0.11.0...v0.12.0](https://github.com/openai/openai-ruby/compare/v0.11.0...v0.12.0) ### Features * ensure partial jsons in structured ouput are handled gracefully ([#740](https://github.com/openai/openai-ruby/issues/740)) ([5deec70](https://github.com/openai/openai-ruby/commit/5deec708bad1ceb1a03e9aa65f737e3f89ce6455)) * responses streaming helpers ([#721](https://github.com/openai/openai-ruby/issues/721)) ([c2f4270](https://github.com/openai/openai-ruby/commit/c2f42708e41492f1c22886735079973510fb2789)) ### Chores * **ci:** only run for pushes and fork pull requests ([97538e2](https://github.com/openai/openai-ruby/commit/97538e266f6f9a0e09669453539ee52ca56f4f59)) * **internal:** allow streams to also be unwrapped on a per-row basis ([49bdadf](https://github.com/openai/openai-ruby/commit/49bdadfc0d3400664de0c8e7cfd59879faec45b8)) * **internal:** minor refactoring of json helpers ([#744](https://github.com/openai/openai-ruby/issues/744)) ([f13edee](https://github.com/openai/openai-ruby/commit/f13edee16325be04335443cb886a7c2024155fd9)) ## 0.11.0 (2025-06-26) Full Changelog: [v0.10.0...v0.11.0](https://github.com/openai/openai-ruby/compare/v0.10.0...v0.11.0) ### Features * **api:** webhook and deep research support ([6228400](https://github.com/openai/openai-ruby/commit/6228400e19aadefc5f87e24b3c104fc0b44d3cee)) ### Bug Fixes * **ci:** release-doctor — report correct token name ([c12c991](https://github.com/openai/openai-ruby/commit/c12c9911beaeb8b1c72d7c5cc5f14dcb9cd5452e)) ### Chores * **api:** remove unsupported property ([1073c3a](https://github.com/openai/openai-ruby/commit/1073c3a6059f2d1e1ef92937326699e0240503e5)) * **client:** throw specific errors ([0cf937e](https://github.com/openai/openai-ruby/commit/0cf937ea8abebc05e52a419e19e275a45b5da646)) * **docs:** update README to include links to docs on Webhooks ([2d8f23e](https://github.com/openai/openai-ruby/commit/2d8f23ecb245c88f3f082f93eb906af857d64c7d)) ## 0.10.0 (2025-06-23) Full Changelog: [v0.9.0...v0.10.0](https://github.com/openai/openai-ruby/compare/v0.9.0...v0.10.0) ### Features * **api:** make model and inputs not required to create response ([2087fb5](https://github.com/openai/openai-ruby/commit/2087fb53d775f6481dd34737f6d554c5c35f65e7)) * **api:** update api shapes for usage and code interpreter ([733ebfb](https://github.com/openai/openai-ruby/commit/733ebfbafe14d9733149b174c99d41d471a42865)) ### Bug Fixes * **internal:** fix: should publish to ruby gems when a release is created ([aebd8eb](https://github.com/openai/openai-ruby/commit/aebd8eb2855d6a8f4fe685bdb5a458346d509e50)) * issue where we cannot mutate arrays on base model derivatives ([266d072](https://github.com/openai/openai-ruby/commit/266d072946c75f93abeff45eec9787ce4e7fea56)) ### Chores * allow more free formatted json response input ([#726](https://github.com/openai/openai-ruby/issues/726)) ([69fb0af](https://github.com/openai/openai-ruby/commit/69fb0afabf86ecc3d1ca469d9700c42447569f3b)) ## 0.9.0 (2025-06-17) Full Changelog: [v0.8.0...v0.9.0](https://github.com/openai/openai-ruby/compare/v0.8.0...v0.9.0) ### Features * **api:** add reusable prompt IDs ([72e35ad](https://github.com/openai/openai-ruby/commit/72e35ad4a677a70a98db291a20aa212e53c367ea)) * **api:** manual updates ([a4bcab7](https://github.com/openai/openai-ruby/commit/a4bcab736d59404c61b148a468d3bf0bc570fa39)) ### Chores * **ci:** enable for pull requests ([e8dfcf9](https://github.com/openai/openai-ruby/commit/e8dfcf97f3af426d3ad83472fa6eaac718acbd4d)) * **ci:** link to correct github repo ([7b34316](https://github.com/openai/openai-ruby/commit/7b3431612ea66d123bc114ec55bdf07f6081439e)) ### Documentation * structured outputs in README ([#723](https://github.com/openai/openai-ruby/issues/723)) ([7212e61](https://github.com/openai/openai-ruby/commit/7212e61ee2fb9ebff0576b0bff4424f43ae54af2)) * use image edit example in readme ([#722](https://github.com/openai/openai-ruby/issues/722)) ([eaa5055](https://github.com/openai/openai-ruby/commit/eaa5055eebca620c261c749ae4945845532c012d)) ## 0.8.0 (2025-06-10) Full Changelog: [v0.7.0...v0.8.0](https://github.com/openai/openai-ruby/compare/v0.7.0...v0.8.0) ### Features * **api:** Add o3-pro model IDs ([025845a](https://github.com/openai/openai-ruby/commit/025845ad3999aa9d2571de649af2d5902658a6d5)) ## 0.7.0 (2025-06-09) Full Changelog: [v0.6.0...v0.7.0](https://github.com/openai/openai-ruby/compare/v0.6.0...v0.7.0) ### Features * **api:** Add tools and structured outputs to evals ([6ee3392](https://github.com/openai/openai-ruby/commit/6ee33924e9146e2450e9c43d052886ed3214cbde)) ### Bug Fixes * default content-type for text in multi-part formdata uploads should be text/plain ([105cf47](https://github.com/openai/openai-ruby/commit/105cf4717993c744ee6c453d2a99ae03f51035d4)) * tool parameter mapping for chat completions ([#156](https://github.com/openai/openai-ruby/issues/156)) ([5999b9f](https://github.com/openai/openai-ruby/commit/5999b9f6ad6dc73a290a8ef7b1b52bd89897039c)) * tool parameter mapping for responses ([#704](https://github.com/openai/openai-ruby/issues/704)) ([ac8bf11](https://github.com/openai/openai-ruby/commit/ac8bf11cf59fcc778f1658429a1fc06eaca79bba)) ## 0.6.0 (2025-06-03) Full Changelog: [v0.5.1...v0.6.0](https://github.com/openai/openai-ruby/compare/v0.5.1...v0.6.0) ### Features * **api:** add new realtime and audio models, realtime session options ([315f0b0](https://github.com/openai/openai-ruby/commit/315f0b0ec3a663a7bc1f2c05ecc6ebfe8af99796)) ### Bug Fixes * `to_sorbet_type` should not return branded types ([4a1f14b](https://github.com/openai/openai-ruby/commit/4a1f14beeea6f1ef08d753fb3c3fa8607ebbe2c2)) ### Chores * prune whitespace ([d7335ac](https://github.com/openai/openai-ruby/commit/d7335ac4942eeccfa341eaf2fb2d45ec83df4dd3)) ## 0.5.1 (2025-06-02) Full Changelog: [v0.5.0...v0.5.1](https://github.com/openai/openai-ruby/compare/v0.5.0...v0.5.1) ### Bug Fixes * **api:** Fix evals and code interpreter interfaces ([24a9100](https://github.com/openai/openai-ruby/commit/24a910015e6885fc19a2ad689fe70a148bed5787)) ## 0.5.0 (2025-05-29) Full Changelog: [v0.4.1...v0.5.0](https://github.com/openai/openai-ruby/compare/v0.4.1...v0.5.0) ### Features * **api:** Config update for pakrym-stream-param ([214e516](https://github.com/openai/openai-ruby/commit/214e516f286a026e5b040ffd76b930cad7d5eabf)) ### Bug Fixes * **client:** return binary content from `get /containers/{container_id}/files/{file_id}/content` ([2b7122a](https://github.com/openai/openai-ruby/commit/2b7122ad724620269c3b403d5a584d710bed5b5c)) * sorbet types for enums, and make tapioca detection ignore `tapioca dsl` ([0e24b3e](https://github.com/openai/openai-ruby/commit/0e24b3e0a574de5c0544067c53b9e693e4cec3b1)) ### Chores * deprecate Assistants API ([4ce7530](https://github.com/openai/openai-ruby/commit/4ce753088e18a3331fccf6608889243809ce187b)) ## 0.4.1 (2025-05-23) Full Changelog: [v0.4.0-beta.1...v0.4.1](https://github.com/openai/openai-ruby/compare/v0.4.0-beta.1...v0.4.1) ### Bug Fixes * prevent rubocop from mangling `===` to `is_a?` check ([c3a61c9](https://github.com/openai/openai-ruby/commit/c3a61c9f83b8cb79b41edadadca1a241de03d10f)) ## 0.4.0-beta.1 (2025-05-23) Full Changelog: [v0.1.0-beta.2...v0.4.0-beta.1](https://github.com/openai/openai-ruby/compare/v0.1.0-beta.2...v0.4.0-beta.1) ### Features * structured output for responses API (text) ([#688](https://github.com/openai/openai-ruby/issues/688)) ([282ec24](https://github.com/openai/openai-ruby/commit/282ec24c89511c1cd50029fe154e10d772e23239)) * structured output for responses API (tools) ([#691](https://github.com/openai/openai-ruby/issues/691)) ([5e524ea](https://github.com/openai/openai-ruby/commit/5e524ea48020125911204c8050b49e360d7513d7)) ### Chores * **internal:** fix release workflows ([e1b31a6](https://github.com/openai/openai-ruby/commit/e1b31a6d6c3064f57e82aa1c3f48f2c797619b5a)) * **internal:** version bump ([b2dd8dd](https://github.com/openai/openai-ruby/commit/b2dd8dd1aac3ff9acf69953a0d04c74721b47e36)) * update README for public release ([#145](https://github.com/openai/openai-ruby/issues/145)) ([64e3849](https://github.com/openai/openai-ruby/commit/64e384933c2f80508002dfacf89efe74510c1330)) ## 0.1.0-beta.2 (2025-05-22) Full Changelog: [v0.1.0-beta.1...v0.1.0-beta.2](https://github.com/openai/openai-ruby/compare/v0.1.0-beta.1...v0.1.0-beta.2) ### Features * **api:** add container endpoint ([8be52a2](https://github.com/openai/openai-ruby/commit/8be52a2bd618da97c79cb35ada46717965664a08)) * **api:** further updates for evals API ([ae7a8b8](https://github.com/openai/openai-ruby/commit/ae7a8b8fc1611aa6f645c75f865d9ae6906d9a20)) * **api:** new API tools ([9105b8b](https://github.com/openai/openai-ruby/commit/9105b8b80d2d381ed58b2b92ecfe644e7596c9a3)) * **api:** new streaming helpers for background responses ([91a278e](https://github.com/openai/openai-ruby/commit/91a278e6ac4db19c66a89d5f610c22ad3c82a1f7)) * **api:** Updating Assistants and Evals API schemas ([690b6a7](https://github.com/openai/openai-ruby/commit/690b6a78de30845f974695d0cc36a59a04adf65b)) * RBI type defs for structured output ([#684](https://github.com/openai/openai-ruby/issues/684)) ([00b25bd](https://github.com/openai/openai-ruby/commit/00b25bdb3aa8a2999114389d699cc3dc59c4089e)) ### Bug Fixes * correctly instantiate sorbet type aliases for enums and unions ([15a2b2b](https://github.com/openai/openai-ruby/commit/15a2b2bab52948f9dac83560dea419006589bd81)) * structured output union decorations ([05b69d1](https://github.com/openai/openai-ruby/commit/05b69d1be85f813e1bddf04e4042665383c1be04)) ### Chores * disable sorbet typecheck for WIP sorbet annotations in examples ([#678](https://github.com/openai/openai-ruby/issues/678)) ([a340356](https://github.com/openai/openai-ruby/commit/a3403566253a74a9f1c69a874568000eca1da656)) * **docs:** grammar improvements ([c4ef024](https://github.com/openai/openai-ruby/commit/c4ef024f3513e1d64e55960b45660e50d9bf9039)) * force utf-8 locale via `RUBYOPT` when formatting ([746abf4](https://github.com/openai/openai-ruby/commit/746abf447c01290ad3061ef77c54d3b5d781a6b7)) * **internal:** version bump ([b35ea63](https://github.com/openai/openai-ruby/commit/b35ea63d9758c4e96dd665013be2edb78ebaa8e6)) * refine Yard and Sorbet types and ensure linting is turned on for examples ([a16dd00](https://github.com/openai/openai-ruby/commit/a16dd00f99176184da0710a0fbce652718a3d067)) * use fully qualified names for yard annotations and rbs aliases ([26db76d](https://github.com/openai/openai-ruby/commit/26db76de24d82ebb593997fab8fd8df43c5f2372)) * use sorbet union aliases where available ([600f499](https://github.com/openai/openai-ruby/commit/600f499dcf61b4d3c3a8cf092ff18cb712711dc0)) ### Documentation * grammar improvements ([15511fc](https://github.com/openai/openai-ruby/commit/15511fc1e80f61abe64375b0a7eb22c5447d5288)) * grammar improvements in README.md ([d43db56](https://github.com/openai/openai-ruby/commit/d43db56ba239f91c6fb1344156e88feaee802f0c)) ## 0.1.0-beta.1 (2025-05-16) Full Changelog: [v0.1.0-alpha.5...v0.1.0-beta.1](https://github.com/openai/openai-ruby/compare/v0.1.0-alpha.5...v0.1.0-beta.1) ### Features * **api:** add image sizes, reasoning encryption ([c4565ed](https://github.com/openai/openai-ruby/commit/c4565ed4c5ea2dc45fd8c0fb1f11b78ce1dd44ac)) * **api:** Add reinforcement fine-tuning api support ([65834c6](https://github.com/openai/openai-ruby/commit/65834c605a43d8d4b0bce44bd9048efe3dc874e8)) * **api:** adding new image model support ([641f4eb](https://github.com/openai/openai-ruby/commit/641f4eb0fadf75909a32dc48644bf0e220fbbe81)) * **api:** manual updates ([c4989d6](https://github.com/openai/openai-ruby/commit/c4989d68cbd3d95313d42f692187b58c063447a9)) * bump default connection pool size limit to minimum of 99 ([3fc0971](https://github.com/openai/openai-ruby/commit/3fc0971b30a6e683d09f18e5dda08a13f5d87cdc)) * expose base client options as read only attributes ([1d53fee](https://github.com/openai/openai-ruby/commit/1d53feee889c2db6824f0ba761b0138afdf84b24)) * expose recursive `#to_h` conversion ([734833c](https://github.com/openai/openai-ruby/commit/734833c004063cc8387f102c0eb608cb3445b2f4)) * initial structured outputs support ([#565](https://github.com/openai/openai-ruby/issues/565)) ([a613a39](https://github.com/openai/openai-ruby/commit/a613a39f25a9faee787bd696e6384d0f1ac34cb0)) * support sorbet aliases at the runtime ([0ef168a](https://github.com/openai/openai-ruby/commit/0ef168abd7e0a5a0c5f8d2e5f49ee87e81995d99)) * support specifying content-type with FilePart class ([ece942c](https://github.com/openai/openai-ruby/commit/ece942cb2c7982ed73e20321318a0f8634c22023)) * support webmock for testing ([9e1a0f1](https://github.com/openai/openai-ruby/commit/9e1a0f1db37f0778063c2a417a55ac04fee1f1b2)) ### Bug Fixes * ensure gem release is unaffected by renaming ([513acd8](https://github.com/openai/openai-ruby/commit/513acd850f86110f1820a97468f50baf3a3ae0b3)) * fix workflow syntax ([b5d45ce](https://github.com/openai/openai-ruby/commit/b5d45ce80ebfc7811446c134a1925fb0731f7971)) * **internal:** ensure formatting always uses c.utf-8 locale ([3d51f78](https://github.com/openai/openai-ruby/commit/3d51f780bcedad3ca4ff5f7823af97f891a5f85e)) * **internal:** fix formatting script for macos ([6784709](https://github.com/openai/openai-ruby/commit/67847092007552991375fa6f72ccda5925051bb0)) * JSON.fast_generate is deprecated ([591fdf0](https://github.com/openai/openai-ruby/commit/591fdf0174765fce77b857b02006efd5b37fe073)) * make a typo for `FilePart.content` ([c78ea0f](https://github.com/openai/openai-ruby/commit/c78ea0fad674def58c3d15eec516a18149777d09)) ### Chores * add generator safe directory ([5c9767e](https://github.com/openai/openai-ruby/commit/5c9767ed5d4204dd17bcda1b5a5b79d5e628e0e1)) * always check if current page is empty in `next_page?` ([8e8464e](https://github.com/openai/openai-ruby/commit/8e8464e2b6d9dc814c68f0e20268a2eafba37361)) * broadly detect json family of content-type headers ([77f7239](https://github.com/openai/openai-ruby/commit/77f7239e03a45323f70baee9d1430ecec242705c)) * bump minimum supported Ruby version to 3.2 ([41ce053](https://github.com/openai/openai-ruby/commit/41ce0535c5f7a7304c744d5e7b43a728d360c54f)) * **ci:** add timeout thresholds for CI jobs ([6fba7b2](https://github.com/openai/openai-ruby/commit/6fba7b2a1d4043b3ee41f49da43a50c305d613d3)) * **ci:** only use depot for staging repos ([57a10b0](https://github.com/openai/openai-ruby/commit/57a10b07135a824e8eee35e57a1d78f223befef9)) * **ci:** run on more branches and use depot runners ([0ae14a8](https://github.com/openai/openai-ruby/commit/0ae14a87ecc37f73077f0aaa442047452a6503b6)) * consistently use string in examples, even for enums ([cec4b05](https://github.com/openai/openai-ruby/commit/cec4b051bb0f4357032779cde2c11babe4196fcd)) * ensure examples have busybox compat shebangs ([7720dca](https://github.com/openai/openai-ruby/commit/7720dcabd020a5c672838dcf935fd9c9ba5b94e1)) * explicitly mark apis public under `Internal` module ([ca0d841](https://github.com/openai/openai-ruby/commit/ca0d841a571433528ae15974041c5ea142f9109e)) * fix misc linting / minor issues ([918ac6b](https://github.com/openai/openai-ruby/commit/918ac6bb9cec9fefe26337d6712e48c110d34320)) * **internal:** annotate request options with type aliases in sorbet ([4918836](https://github.com/openai/openai-ruby/commit/4918836aac697a899b19e4c3767126d0d86914d4)) * **internal:** codegen related update ([139a140](https://github.com/openai/openai-ruby/commit/139a140e6c5d37b638ad31a5fa8816e4d3fda5b8)) * **internal:** codegen related update ([ebf0cae](https://github.com/openai/openai-ruby/commit/ebf0cae7f0935c96eb21a980c9b3d46892d2cea7)) * **internal:** codegen related update ([71cf48f](https://github.com/openai/openai-ruby/commit/71cf48f5fe64cd8ae20615c7d019b3e1c40f2529)) * **internal:** codegen related update ([f3fc915](https://github.com/openai/openai-ruby/commit/f3fc915680f295098029d615129708a1e6a29ed3)) * **internal:** improve response envelope unwrap functionality ([a05d2c5](https://github.com/openai/openai-ruby/commit/a05d2c5d16ce052c1fb84005739e6b6d853f5e8e)) * **internal:** minor type annotation improvements ([67b0e35](https://github.com/openai/openai-ruby/commit/67b0e35c2c8d48c50c71c20a71304896a63f6b44)) * **internal:** remove unnecessary `rbi/lib` folder ([df9e099](https://github.com/openai/openai-ruby/commit/df9e0991a3aac2a5a480bfb3cf622139ca1b1373)) * **internal:** touch up formatting ([d3c5587](https://github.com/openai/openai-ruby/commit/d3c558710b94968ba45bf579cad1d8112d7534f1)) * **internal:** version bump ([ef2a5d4](https://github.com/openai/openai-ruby/commit/ef2a5d46f21a0df6b4b6ebc4e9d4dd4f6a6a6e5f)) * loosen rubocop rules that don't always make sense ([4244f89](https://github.com/openai/openai-ruby/commit/4244f8967d1583d97efa679d096eee04fd764240)) * migrate away from deprecated `JSON#fast_generate` ([3be700f](https://github.com/openai/openai-ruby/commit/3be700f04d782b538fcde678016532cfbc2eb66d)) * more accurate type annotations and aliases ([04b111d](https://github.com/openai/openai-ruby/commit/04b111dcdc2c5d458159be87a180174243a9d058)) * re-export top level models under library namespace ([8c5e78a](https://github.com/openai/openai-ruby/commit/8c5e78a1b2374c072c590f859008f69bd8d46d63)) * remove Gemfile.lock ([2306cb4](https://github.com/openai/openai-ruby/commit/2306cb447a81fd494a1a1696f99d90191103e187)) * remove Gemfile.lock during bootstrap ([c248f15](https://github.com/openai/openai-ruby/commit/c248f1522ed120fed49cb94a79a49cc8db146bf5)) * reorganize type aliases ([1815c45](https://github.com/openai/openai-ruby/commit/1815c45472109efaf891e2296f37b83b2acf275d)) * revert ignoring Gemfile.lock ([9a2827b](https://github.com/openai/openai-ruby/commit/9a2827b01a5a38985c4b92521534fc7a11f3c91a)) * show truncated parameter docs in yard ([bf84473](https://github.com/openai/openai-ruby/commit/bf844738622cd1c9a5c31bffc1e5378c132c31fd)) * validate request option coercion correctness ([c5b4f52](https://github.com/openai/openai-ruby/commit/c5b4f523e1cc110b5a944c53a1530fa0d9456eae)) ### Documentation * fix out of place README snippet ([39d155f](https://github.com/openai/openai-ruby/commit/39d155f1f3be511ab2089a8856054aa767fc6ba3)) * illustrate environmental defaults for auth variables ([7d8ee4f](https://github.com/openai/openai-ruby/commit/7d8ee4f61fee6e53a07a44b20ca36f27bf3cc463)) * **readme:** fix typo ([a6c7609](https://github.com/openai/openai-ruby/commit/a6c76091c66abaf1c9bdfaaa348f9593639cadc4)) * rewrite much of README.md for readability ([f3c721e](https://github.com/openai/openai-ruby/commit/f3c721e71de583da61bc02566200ac0dc574aa33)) ## 0.1.0-alpha.5 (2025-04-18) Full Changelog: [v0.1.0-alpha.4...v0.1.0-alpha.5](https://github.com/openai/openai-ruby/compare/v0.1.0-alpha.4...v0.1.0-alpha.5) ### Features * implement `#hash` for data containers ([924fcb4](https://github.com/openai/openai-ruby/commit/924fcb42fa0991c491246df7667c72022190f1ee)) ### Bug Fixes * always send idempotency header when specified as a request option ([548bfaf](https://github.com/openai/openai-ruby/commit/548bfaf81a4947860ec35ff7efafb144da4863bb)) * **client:** send correct HTTP path ([896142a](https://github.com/openai/openai-ruby/commit/896142abf1bb03f1eb48e0754cbff04edd081a0e)) ### Chores * documentation improvements ([ff43d73](https://github.com/openai/openai-ruby/commit/ff43d73fe6e514d5b9f110892c3880998df8dacf)) * **internal:** configure releases ([7eb9185](https://github.com/openai/openai-ruby/commit/7eb91852c03eaba177464060631c2645d3db63d0)) * **internal:** contribute.md and contributor QoL improvements ([d060adf](https://github.com/openai/openai-ruby/commit/d060adf81aadb6b138428bdbde79633fd0dff230)) * make sorbet enums easier to read ([7c03213](https://github.com/openai/openai-ruby/commit/7c0321329658a6d2823f9022a77be5965186b94c)) * refine `#inspect` and `#to_s` for model classes ([84308a6](https://github.com/openai/openai-ruby/commit/84308a6683e6ed9d520b05e0ac828de662fe0198)) * simplify yard annotations by removing most `@!parse` directives ([16ec2e3](https://github.com/openai/openai-ruby/commit/16ec2e391b0cfdf49727099be9afa220c7ab16e5)) * update README with recommended editor plugins ([c745aef](https://github.com/openai/openai-ruby/commit/c745aef51359e1df2118006dd69470fc4714de5a)) * update readme with temporary install instructions ([8a79cc0](https://github.com/openai/openai-ruby/commit/8a79cc0a6396f0989feaefb2d4d30b6c1dc75dfe)) * use `@!method` instead of `@!parse` for virtual method type definitions ([b5fba2e](https://github.com/openai/openai-ruby/commit/b5fba2e689884dc011dec9fd2d8349c9c842d274)) ## 0.1.0-alpha.4 (2025-04-16) Full Changelog: [v0.1.0-alpha.3...v0.1.0-alpha.4](https://github.com/openai/openai-ruby/compare/v0.1.0-alpha.3...v0.1.0-alpha.4) ### ⚠ BREAKING CHANGES * bump min supported ruby version to 3.1 (oldest non-EOL) ([#93](https://github.com/openai/openai-ruby/issues/93)) * remove top level type aliases to relocated classes ([#91](https://github.com/openai/openai-ruby/issues/91)) * use descriptive prefixes for enum names that start with otherwise illegal identifiers ([#89](https://github.com/openai/openai-ruby/issues/89)) ### Features * add reference links in yard ([#79](https://github.com/openai/openai-ruby/issues/79)) ([98262c8](https://github.com/openai/openai-ruby/commit/98262c8dac11599791892eb70d0f84bc449fac92)) * add stubs documenting coming soon streaming helpers ([d455e9b](https://github.com/openai/openai-ruby/commit/d455e9b54cb8b218eef751ced83a495cce10d14d)) * allow all valid `JSON` types to be encoded ([#102](https://github.com/openai/openai-ruby/issues/102)) ([5f5ee8b](https://github.com/openai/openai-ruby/commit/5f5ee8b1cb3e849f15b30160c1d7af624f151788)) * **api:** Add evalapi to sdk ([#113](https://github.com/openai/openai-ruby/issues/113)) ([230bbfd](https://github.com/openai/openai-ruby/commit/230bbfdf8e7dbf2f1a44c33142cd7235bcbe0339)) * **api:** add o3 and o4-mini model IDs ([4d3d4b7](https://github.com/openai/openai-ruby/commit/4d3d4b7f2e0fae12f24d57d287f2c9c4520eda76)) * **api:** adding gpt-4.1 family of model IDs ([b4183d5](https://github.com/openai/openai-ruby/commit/b4183d5c93f776044a8a2de55f46ede75e5f9d2e)) * **api:** manual updates ([#116](https://github.com/openai/openai-ruby/issues/116)) ([aef32b1](https://github.com/openai/openai-ruby/commit/aef32b15e84beadd56690d8e216c7370e526618c)) * **api:** manual updates ([#83](https://github.com/openai/openai-ruby/issues/83)) ([33c9252](https://github.com/openai/openai-ruby/commit/33c92528e9d996e2fde5bffebeb718d6c6dbac8e)) * **api:** manual updates ([#84](https://github.com/openai/openai-ruby/issues/84)) ([4755fff](https://github.com/openai/openai-ruby/commit/4755fff8b720f7e7afcfc452b2ad103b5e0a3c85)) * **api:** manual updates ([#88](https://github.com/openai/openai-ruby/issues/88)) ([2db2fb6](https://github.com/openai/openai-ruby/commit/2db2fb60507fc71ad51b875b956d1fb3f43bc263)) * **api:** manual updates ([#92](https://github.com/openai/openai-ruby/issues/92)) ([5b6d96e](https://github.com/openai/openai-ruby/commit/5b6d96ea61826256832395e644ff0351b939e133)) * bump min supported ruby version to 3.1 (oldest non-EOL) ([#93](https://github.com/openai/openai-ruby/issues/93)) ([5c4feaa](https://github.com/openai/openai-ruby/commit/5c4feaaf6dfae40e2a32591bfa8ac30cb4cfbddb)) * **client:** enable setting base URL from environment variable ([b9da54b](https://github.com/openai/openai-ruby/commit/b9da54b1f0ddae4af6404a11436b7daf21c47f6f)) * example code snippets ([67c590b](https://github.com/openai/openai-ruby/commit/67c590b17efa59900fa3e893773fa2ac8ad92f45)) * implement `to_json` for base model ([#86](https://github.com/openai/openai-ruby/issues/86)) ([f333c1c](https://github.com/openai/openai-ruby/commit/f333c1c68d8469fcf5714856063df7fe2c0a5d1e)) * link response models to their methods in yard doc ([#81](https://github.com/openai/openai-ruby/issues/81)) ([0f4332a](https://github.com/openai/openai-ruby/commit/0f4332a08bf3b41f338b31d4b5b95ce15b5e4c4e)) * remove top level type aliases to relocated classes ([#91](https://github.com/openai/openai-ruby/issues/91)) ([4588640](https://github.com/openai/openai-ruby/commit/4588640c6f367490721e5584a9207e9c8169c409)) * support query, header, and body params that have identical names ([#101](https://github.com/openai/openai-ruby/issues/101)) ([f70c567](https://github.com/openai/openai-ruby/commit/f70c5673f3ab5127e74834b073367cd1b2c6868e)) * support solargraph generics ([#96](https://github.com/openai/openai-ruby/issues/96)) ([80829ad](https://github.com/openai/openai-ruby/commit/80829ad0c12256b96a1a65f3938276cc38c3d4f4)) * use Pathname alongside raw IO handles for file uploads ([#119](https://github.com/openai/openai-ruby/issues/119)) ([8728785](https://github.com/openai/openai-ruby/commit/8728785e80fdeb9d2b4beb526fc4c5ef4890fc82)) ### Bug Fixes * converter should transform stringio into string where applicable ([#104](https://github.com/openai/openai-ruby/issues/104)) ([c2f3c12](https://github.com/openai/openai-ruby/commit/c2f3c125d08c2c32b189bb2808779ef818db5844)) * inaccuracies in the README.md ([7d42afa](https://github.com/openai/openai-ruby/commit/7d42afa3747ee6cfeb437580f7ff21dd26d505e2)) * **internal:** update release-please to use ruby strategy for README.md ([#123](https://github.com/openai/openai-ruby/issues/123)) ([27f89a9](https://github.com/openai/openai-ruby/commit/27f89a9bc3b2255584b77af81da0cb3393b11b8f)) * pre-release version string should match ruby, not semver conventions ([#95](https://github.com/openai/openai-ruby/issues/95)) ([18c01b1](https://github.com/openai/openai-ruby/commit/18c01b11ef59eecd67866bbeab92f70bdeef9578)) * raise connection error for errors that result from HTTP transports ([#120](https://github.com/openai/openai-ruby/issues/120)) ([d7d7a54](https://github.com/openai/openai-ruby/commit/d7d7a543b54e7048b94bfeb3705c3cce38f5e60b)) * use descriptive prefixes for enum names that start with otherwise illegal identifiers ([#89](https://github.com/openai/openai-ruby/issues/89)) ([647efa0](https://github.com/openai/openai-ruby/commit/647efa0ab24e92c2ab643f81f9ac6acce71390ba)) ### Chores * add README docs for using solargraph when installing gem from git ([#118](https://github.com/openai/openai-ruby/issues/118)) ([368c337](https://github.com/openai/openai-ruby/commit/368c3377d901ffe33c70ada5cb2bec73c3645c91)) * always fold up method bodies in sorbet type definitions ([#108](https://github.com/openai/openai-ruby/issues/108)) ([1967acc](https://github.com/openai/openai-ruby/commit/1967accf07c8548226d482844e8b5d9fa2a8728c)) * attempt to clean up underlying transport when streams are GC'd ([#117](https://github.com/openai/openai-ruby/issues/117)) ([4a43313](https://github.com/openai/openai-ruby/commit/4a43313d36a87949894cbdc5020363db84b98917)) * demonstrate how to make undocumented requests in README ([#94](https://github.com/openai/openai-ruby/issues/94)) ([fbd8130](https://github.com/openai/openai-ruby/commit/fbd8130d7b6da0577bf79538c5e57eb59c760038)) * do not use literals for version in type definitions ([#97](https://github.com/openai/openai-ruby/issues/97)) ([57bc1e7](https://github.com/openai/openai-ruby/commit/57bc1e79c782047df423c4300eb3657dbfe3fd06)) * docs/README tweaks ([#570](https://github.com/openai/openai-ruby/issues/570)) ([ccbf6a2](https://github.com/openai/openai-ruby/commit/ccbf6a2f31bd925f66b1fd409533f91efb6f7091)) * document LSP support in read me ([#100](https://github.com/openai/openai-ruby/issues/100)) ([1a0a335](https://github.com/openai/openai-ruby/commit/1a0a335e1a43b7f4354357a0bd9fc4b1e3bc362b)) * easier to read examples in README.md ([#111](https://github.com/openai/openai-ruby/issues/111)) ([2435ef5](https://github.com/openai/openai-ruby/commit/2435ef547b8d62495268b84be59aaaf9c7ca65b8)) * ensure readme.md is bumped when release please updates versions ([#122](https://github.com/openai/openai-ruby/issues/122)) ([0431cff](https://github.com/openai/openai-ruby/commit/0431cff6bd112eaa59c7b1edc12c445cbb40d62d)) * extract error classes into own module ([#87](https://github.com/openai/openai-ruby/issues/87)) ([a8595ff](https://github.com/openai/openai-ruby/commit/a8595ffe8131130677d0fc3a6437ab5cb97c9814)) * fix readme typo ([#125](https://github.com/openai/openai-ruby/issues/125)) ([f329b13](https://github.com/openai/openai-ruby/commit/f329b1395613da0a44bfa9c200bd1ce17e80cf27)) * improve yard docs readability ([#80](https://github.com/openai/openai-ruby/issues/80)) ([76cf765](https://github.com/openai/openai-ruby/commit/76cf7656934c07ac0937586106dcbe7ac2ab22be)) * **internal:** always run post-processing when formatting when syntax_tree ([15fff97](https://github.com/openai/openai-ruby/commit/15fff9792998379c7968ed84c54dcfab3a89bb74)) * **internal:** expand CI branch coverage ([#124](https://github.com/openai/openai-ruby/issues/124)) ([5e73790](https://github.com/openai/openai-ruby/commit/5e73790b50d53e32ae510a3ff8ca324aa32b363f)) * **internal:** fix examples ([#114](https://github.com/openai/openai-ruby/issues/114)) ([8abe02b](https://github.com/openai/openai-ruby/commit/8abe02b356a7a16c372ce963a90f1552beefa029)) * **internal:** loosen internal type restrictions ([35babf9](https://github.com/openai/openai-ruby/commit/35babf91517944246a8099673a2e0b5f290e6da0)) * **internal:** minor touch ups on sdk internals ([1d828d1](https://github.com/openai/openai-ruby/commit/1d828d12fad59167ada3a87b43998cccbd3031e9)) * **internal:** misc small improvements ([#105](https://github.com/openai/openai-ruby/issues/105)) ([fa32836](https://github.com/openai/openai-ruby/commit/fa32836fb4ca72b9d2c5cf1f5b33bb94c8284caa)) * **internal:** more concise handling of parameter naming conflicts ([#110](https://github.com/openai/openai-ruby/issues/110)) ([a6c4233](https://github.com/openai/openai-ruby/commit/a6c42335f7de10ed64bc270928f60c5bb3e78551)) * **internal:** mostly README touch ups ([eaf6038](https://github.com/openai/openai-ruby/commit/eaf6038a541c896d60c9121fe3170b17c64fba28)) * **internal:** protect SSE parsing pipeline from broken UTF-8 characters ([334b99e](https://github.com/openai/openai-ruby/commit/334b99e29d7c05cd0d81f7a2b5da7aca5ea0b1f8)) * **internal:** reduce CI branch coverage ([0737020](https://github.com/openai/openai-ruby/commit/0737020941d6832c448da78ac8da1ed40b7de2c7)) * **internal:** rubocop rules ([#107](https://github.com/openai/openai-ruby/issues/107)) ([036211d](https://github.com/openai/openai-ruby/commit/036211d98ec3aff3b6a1a4056545d97443702af4)) * **internal:** run rubocop linter in parallel ([#106](https://github.com/openai/openai-ruby/issues/106)) ([bc4e591](https://github.com/openai/openai-ruby/commit/bc4e591a3984b22d6753f28bb4b9c8e65430e4d6)) * **internal:** skip broken test ([#115](https://github.com/openai/openai-ruby/issues/115)) ([1e39fe5](https://github.com/openai/openai-ruby/commit/1e39fe5a706f17d65abe929bae95681dbb20c0ae)) * **internal:** version bump ([#78](https://github.com/openai/openai-ruby/issues/78)) ([2126d20](https://github.com/openai/openai-ruby/commit/2126d201cd465f6b1fd7863edcadf3242d5e7bec)) * loosen const and integer coercion rules ([#121](https://github.com/openai/openai-ruby/issues/121)) ([c95e3d8](https://github.com/openai/openai-ruby/commit/c95e3d88461e2a0a3784cf4f53dc68df5bd85ff7)) * make client tests look prettier ([#112](https://github.com/openai/openai-ruby/issues/112)) ([5d78108](https://github.com/openai/openai-ruby/commit/5d7810839a084fd5c709bdd2ff4c4678643d372a)) * make internal types pretty print ([655a382](https://github.com/openai/openai-ruby/commit/655a38204053a77a2b4135deed8c7a0ace4a63c3)) * misc sdk polish ([#99](https://github.com/openai/openai-ruby/issues/99)) ([bedd502](https://github.com/openai/openai-ruby/commit/bedd502be3018a8a6c135c0ee95f9fb7a2f46f1a)) * move private classes into internal module ([#90](https://github.com/openai/openai-ruby/issues/90)) ([9c96bde](https://github.com/openai/openai-ruby/commit/9c96bdee7f242a039d104bc6bf10115289267f80)) * order client variables by "importance" ([#85](https://github.com/openai/openai-ruby/issues/85)) ([03c5192](https://github.com/openai/openai-ruby/commit/03c5192590469f8e0ed8aec590fc307e821d6d7b)) * relax sorbet enum parameters to allow `String` in addition to `Symbol` ([#82](https://github.com/openai/openai-ruby/issues/82)) ([5ddeea8](https://github.com/openai/openai-ruby/commit/5ddeea81a64a8e3a60de4eda17ff71bf03132604)) * rename confusing `Type::BooleanModel` to `Type::Boolean` ([#103](https://github.com/openai/openai-ruby/issues/103)) ([d98024f](https://github.com/openai/openai-ruby/commit/d98024ff8468de90215b31d829495891752899db)) * simplify internal utils ([#98](https://github.com/openai/openai-ruby/issues/98)) ([7c09129](https://github.com/openai/openai-ruby/commit/7c091297160bbd953f15ea3219171b7e47293d2c)) * touch up readme sorbet example ([b4d1d9e](https://github.com/openai/openai-ruby/commit/b4d1d9e264eb602548d4d76e057147871cd6ab02)) * update yard comment formatting ([#109](https://github.com/openai/openai-ruby/issues/109)) ([8d9ee28](https://github.com/openai/openai-ruby/commit/8d9ee28357c153d2cef5b5f11a8329e5ad7e4a22)) * workaround build errors ([42a052c](https://github.com/openai/openai-ruby/commit/42a052ce03c425d17b8546544532cd46065dcfdb)) ### Documentation * update documentation links to be more uniform ([e6d53dc](https://github.com/openai/openai-ruby/commit/e6d53dcaa4d7b77850dabd2889039887d4ec39ae)) ## 0.1.0-alpha.3 (2025-04-01) Full Changelog: [v0.1.0-alpha.2...v0.1.0-alpha.3](https://github.com/openai/openai-ruby/compare/v0.1.0-alpha.2...v0.1.0-alpha.3) ### ⚠ BREAKING CHANGES * use tagged enums in sorbet type definitions ([#49](https://github.com/openai/openai-ruby/issues/49)) * support `for item in stream` style iteration on `Stream`s ([#44](https://github.com/openai/openai-ruby/issues/44)) * **model:** base model should recursively store coerced base models ([#29](https://github.com/openai/openai-ruby/issues/29)) ### Features * **api:** add `get /chat/completions` endpoint ([4570a0f](https://github.com/openai/openai-ruby/commit/4570a0fcda6721f01f2c8d5100dc98c721ef62de)) * **api:** add `get /responses/{response_id}/input_items` endpoint ([7eaee28](https://github.com/openai/openai-ruby/commit/7eaee28b2671c6dfa24ce5ce18d525da5de5703e)) * **api:** new models for TTS, STT, + new audio features for Realtime ([#46](https://github.com/openai/openai-ruby/issues/46)) ([56c2a3f](https://github.com/openai/openai-ruby/commit/56c2a3ffecc1b69d2ae96cc84de19d82b14c9c09)) * **api:** o1-pro now available through the API ([#43](https://github.com/openai/openai-ruby/issues/43)) ([e158e7e](https://github.com/openai/openai-ruby/commit/e158e7ef3e1edd6198cd9b2e8aa51ad686d80d04)) * collapse anonymous enum into unions ([#54](https://github.com/openai/openai-ruby/issues/54)) ([9fc4185](https://github.com/openai/openai-ruby/commit/9fc418595f4ff1824ed97368f566c4d1526e90dc)) * consistently accept `AnyHash` types in parameter positions in sorbet ([#57](https://github.com/openai/openai-ruby/issues/57)) ([adf7232](https://github.com/openai/openai-ruby/commit/adf7232437b8ddd302992f01ceaa7961ed790b2f)) * **internal:** converter interface should recurse without schema ([#68](https://github.com/openai/openai-ruby/issues/68)) ([2c67222](https://github.com/openai/openai-ruby/commit/2c672222cae7a01acf9ef75ab1fefdc549d92938)) * prevent tapioca from introspecting the gem internals ([#56](https://github.com/openai/openai-ruby/issues/56)) ([09df54b](https://github.com/openai/openai-ruby/commit/09df54b133e92648318c337e20bd977ca900d21d)) * support `for item in stream` style iteration on `Stream`s ([#44](https://github.com/openai/openai-ruby/issues/44)) ([517cf73](https://github.com/openai/openai-ruby/commit/517cf73e1e55be3df24276025711522968fd2375)) * use tagged enums in sorbet type definitions ([#49](https://github.com/openai/openai-ruby/issues/49)) ([c0a0340](https://github.com/openai/openai-ruby/commit/c0a03401ebe2ccdbf7ff4019a5f1cf661590cce2)) ### Bug Fixes * **api:** correct some Responses types ([#30](https://github.com/openai/openai-ruby/issues/30)) ([51b4d37](https://github.com/openai/openai-ruby/commit/51b4d37d5a5c276cec08ea6164fd3c18397d1dea)) * **client:** remove duplicate types ([#47](https://github.com/openai/openai-ruby/issues/47)) ([d26429c](https://github.com/openai/openai-ruby/commit/d26429c3f3c3fb1aab201fdd4ad2cd4c44ef6aa1)) * label optional keyword arguments in *.rbs type definitions ([#41](https://github.com/openai/openai-ruby/issues/41)) ([fe7be91](https://github.com/openai/openai-ruby/commit/fe7be916f4c309dfe1cc07d5d0c0a3de9cba2ee0)) * missing union constants in rbs and rbi type definitions ([#28](https://github.com/openai/openai-ruby/issues/28)) ([8a1a86e](https://github.com/openai/openai-ruby/commit/8a1a86e656277cedd68b180997e666a7b39daa1f)) * **model:** base model should recursively store coerced base models ([#29](https://github.com/openai/openai-ruby/issues/29)) ([ab2daf1](https://github.com/openai/openai-ruby/commit/ab2daf1d8d0f6df9aa08a41e8948bcfbd4ff32e0)) * pages should be able to accept non-converter models ([#60](https://github.com/openai/openai-ruby/issues/60)) ([ca44472](https://github.com/openai/openai-ruby/commit/ca44472a404acd570d9af5c7d9764601d457bbc8)) * path interpolation template strings ([#77](https://github.com/openai/openai-ruby/issues/77)) ([f1eec93](https://github.com/openai/openai-ruby/commit/f1eec93ebd458477507fc6502ef4fb0360f9c2f4)) * resolve tapioca derived sorbet errors ([#45](https://github.com/openai/openai-ruby/issues/45)) ([f155158](https://github.com/openai/openai-ruby/commit/f155158a6dd0c020a6f3d9b707d39e905e01c5a2)) * sorbet class aliases are not type aliases ([#40](https://github.com/openai/openai-ruby/issues/40)) ([871fcd5](https://github.com/openai/openai-ruby/commit/871fcd5b3056629155b46aa08533df587442b6c5)) * switch to github compatible markdown engine ([#73](https://github.com/openai/openai-ruby/issues/73)) ([5ea2f1a](https://github.com/openai/openai-ruby/commit/5ea2f1a8543c0bdb3537cd63da7e1ffda5c32018)) * type names ([acb2ad3](https://github.com/openai/openai-ruby/commit/acb2ad31e4ad0bd8859e113f269c3dbfadd959dd)) * **types:** improve responses type names ([#34](https://github.com/openai/openai-ruby/issues/34)) ([a82dc6f](https://github.com/openai/openai-ruby/commit/a82dc6f37205110eb08a44f252f40f1dd341d1f5)) * yard example tag formatting ([#53](https://github.com/openai/openai-ruby/issues/53)) ([f9282fc](https://github.com/openai/openai-ruby/commit/f9282fc932d66159cf6632c632a74a12162b9a28)) ### Chores * `BaseModel` fields that are `BaseModel` typed should also accept `Hash` ([#52](https://github.com/openai/openai-ruby/issues/52)) ([aab09b2](https://github.com/openai/openai-ruby/commit/aab09b2d10e2a60b1591834fe7c91f0b2a00056e)) * add `[@yieldparam](https://github.com/yieldparam)` to yard doc ([#36](https://github.com/openai/openai-ruby/issues/36)) ([aa0519b](https://github.com/openai/openai-ruby/commit/aa0519bda596cdb77c3c7fa2635199a8751f652b)) * add example directory ([#39](https://github.com/openai/openai-ruby/issues/39)) ([c62326d](https://github.com/openai/openai-ruby/commit/c62326d76587d8e519f29ad1d3bca4d02cfb7702)) * add hash of OpenAPI spec/config inputs to .stats.yml ([6bd0b48](https://github.com/openai/openai-ruby/commit/6bd0b48f06eeba23faa18039795b46dc0b07b51a)) * add type annotations for enum and union member listing methods ([#55](https://github.com/openai/openai-ruby/issues/55)) ([a2be966](https://github.com/openai/openai-ruby/commit/a2be96630a99700a1fae79c3969e72a677fff270)) * **api:** updates to supported Voice IDs ([#64](https://github.com/openai/openai-ruby/issues/64)) ([6c42664](https://github.com/openai/openai-ruby/commit/6c42664eacbaf21d8359c096c496ff50661e82cb)) * disable dangerous rubocop auto correct rule ([#62](https://github.com/openai/openai-ruby/issues/62)) ([f34ac80](https://github.com/openai/openai-ruby/commit/f34ac8099aeac766ff90268bb5b14ba0529f6fa9)) * disable overloads in `*.rbs` definitions for readable LSP errors ([#42](https://github.com/openai/openai-ruby/issues/42)) ([2364f78](https://github.com/openai/openai-ruby/commit/2364f78c6bf0b618b8b454dccbd17924a9874168)) * disable unnecessary linter rules for sorbet manifests ([#35](https://github.com/openai/openai-ruby/issues/35)) ([cf2f693](https://github.com/openai/openai-ruby/commit/cf2f6934740b1bb7c611c4bc5b9c41c5cebbe0c1)) * document Client's concurrency capability ([#33](https://github.com/openai/openai-ruby/issues/33)) ([9b08fb0](https://github.com/openai/openai-ruby/commit/9b08fb062416ca8c72e531b9389d68c2fd730af8)) * fix misc rubocop errors ([#74](https://github.com/openai/openai-ruby/issues/74)) ([40315e6](https://github.com/openai/openai-ruby/commit/40315e6ce56d1f93691fbd928254cdf24c2da8b1)) * ignore some spurious linter warnings and formatting changes ([#31](https://github.com/openai/openai-ruby/issues/31)) ([e376e31](https://github.com/openai/openai-ruby/commit/e376e31709236578305bf453cfbe8e056057d669)) * **internal:** add sorbet config for SDK local development ([#38](https://github.com/openai/openai-ruby/issues/38)) ([f8cb16b](https://github.com/openai/openai-ruby/commit/f8cb16bccf2d4fb4d13a369eaad8102ef110a550)) * **internal:** bugfix ([#51](https://github.com/openai/openai-ruby/issues/51)) ([0967a13](https://github.com/openai/openai-ruby/commit/0967a139e6dc24bfdf3b4c5e3b9770d39d610904)) * **internal:** codegen related update ([#27](https://github.com/openai/openai-ruby/issues/27)) ([83ac858](https://github.com/openai/openai-ruby/commit/83ac85861a0dd1756c46cdad962f3ab0c758d9ae)) * **internal:** minor refactoring of utils ([#67](https://github.com/openai/openai-ruby/issues/67)) ([47f9f49](https://github.com/openai/openai-ruby/commit/47f9f49b2acd2a1549d497fa542dfab368b939d3)) * **internal:** version bump ([#26](https://github.com/openai/openai-ruby/issues/26)) ([b9dde82](https://github.com/openai/openai-ruby/commit/b9dde82f091f820ea09eea4521fc2bd63d8ec32e)) * more accurate type annotations for SDK internals ([#71](https://github.com/openai/openai-ruby/issues/71)) ([2071dd2](https://github.com/openai/openai-ruby/commit/2071dd2ffbdcd49d20245c8d04c8839a3caca240)) * more aggressive tapioca detection logic for skipping compiler introspection ([#65](https://github.com/openai/openai-ruby/issues/65)) ([1da15be](https://github.com/openai/openai-ruby/commit/1da15be44dba6b54b9432b62d1fdb7551f2faff6)) * more readable output when tests fail ([#63](https://github.com/openai/openai-ruby/issues/63)) ([c3cfea9](https://github.com/openai/openai-ruby/commit/c3cfea9124334e728dcf08a294b35338c8412137)) * re-order assignment lines to make unions easier to read ([#66](https://github.com/openai/openai-ruby/issues/66)) ([50f6e5e](https://github.com/openai/openai-ruby/commit/50f6e5e2abbb007fa8786a24eb7d0bf8398499ed)) * recursively accept `AnyHash` for `BaseModel`s in arrays and hashes ([#58](https://github.com/openai/openai-ruby/issues/58)) ([92f1cba](https://github.com/openai/openai-ruby/commit/92f1cbabc8f3bb009e18ccadc11479e330dec11c)) * reduce verbosity in type declarations ([#61](https://github.com/openai/openai-ruby/issues/61)) ([9517e27](https://github.com/openai/openai-ruby/commit/9517e27589c1b88e50e22d39f29b3e1c485e1a53)) * relocate internal modules ([#70](https://github.com/openai/openai-ruby/issues/70)) ([350fe34](https://github.com/openai/openai-ruby/commit/350fe34846d92d114eb49a92464837884d1ca355)) * Remove deprecated/unused remote spec feature ([e2bffd6](https://github.com/openai/openai-ruby/commit/e2bffd65e8552e00b647b1f013cbc5fc2017ba6d)) * remove unnecessary & confusing module ([#69](https://github.com/openai/openai-ruby/issues/69)) ([c0ea470](https://github.com/openai/openai-ruby/commit/c0ea470fc329c7ccf2161a1eb8b58ea19a43565a)) * support binary responses ([#76](https://github.com/openai/openai-ruby/issues/76)) ([1b19e9b](https://github.com/openai/openai-ruby/commit/1b19e9bafa82baebd48924f01825aa2cfc2e9d68)) * switch to prettier looking sorbet annotations ([#59](https://github.com/openai/openai-ruby/issues/59)) ([0ab5871](https://github.com/openai/openai-ruby/commit/0ab5871d8fb4d9e28eee39d2c937842fd84828a1)) * update readme ([#72](https://github.com/openai/openai-ruby/issues/72)) ([21ed2b6](https://github.com/openai/openai-ruby/commit/21ed2b6915e2bec2f3be41a369bf05da345b0d5b)) * use fully qualified name in sorbet README example ([#75](https://github.com/openai/openai-ruby/issues/75)) ([273a784](https://github.com/openai/openai-ruby/commit/273a7843957997b28452d328b29e4973bda1836b)) * use multi-line formatting style for really long lines ([#37](https://github.com/openai/openai-ruby/issues/37)) ([acb95ee](https://github.com/openai/openai-ruby/commit/acb95eed637593576db09fd5d31ea4bba67e5a22)) ## 0.1.0-alpha.2 (2025-03-18) Full Changelog: [v0.1.0-alpha.1...v0.1.0-alpha.2](https://github.com/openai/openai-ruby/compare/v0.1.0-alpha.1...v0.1.0-alpha.2) ### Features * support jsonl uploads ([#10](https://github.com/openai/openai-ruby/issues/10)) ([b3b9e40](https://github.com/openai/openai-ruby/commit/b3b9e406f0174423a12e0e7e26f8f5c469b13f7e)) ### Bug Fixes * enums should not unnecessarily convert non-members to symbol type ([#23](https://github.com/openai/openai-ruby/issues/23)) ([05294a7](https://github.com/openai/openai-ruby/commit/05294a761c6e0ed3819c9cb4d2cd11f52134cbd6)) ### Chores * add most doc strings to rbi type definitions ([#12](https://github.com/openai/openai-ruby/issues/12)) ([f711649](https://github.com/openai/openai-ruby/commit/f711649c42200d70f8545d2014e8398297e62691)) * do not label modules as abstract ([#22](https://github.com/openai/openai-ruby/issues/22)) ([bad4ec9](https://github.com/openai/openai-ruby/commit/bad4ec9ecda97c2eb4c4e9d5fabc62e2a7ab5bf2)) * document union variants in yard doc ([#16](https://github.com/openai/openai-ruby/issues/16)) ([3ffacfe](https://github.com/openai/openai-ruby/commit/3ffacfe591bbb909a59e9581ea37eceaee07f9f0)) * ensure doc strings for rbi method arguments ([#13](https://github.com/openai/openai-ruby/issues/13)) ([2c59996](https://github.com/openai/openai-ruby/commit/2c599969eac0c7ffd167f524604cc0e2ebae280c)) * error fields are now mutable in keeping with rest of SDK ([#15](https://github.com/openai/openai-ruby/issues/15)) ([0e30eb7](https://github.com/openai/openai-ruby/commit/0e30eb76a81ca76a62a89b734d5333fe4d59154f)) * **internal:** remove CI condition ([#18](https://github.com/openai/openai-ruby/issues/18)) ([db07e59](https://github.com/openai/openai-ruby/commit/db07e59ffce1577ac42d74ff57ecd18838012fcb)) * mark non-inheritable SDK internal classes as final ([#19](https://github.com/openai/openai-ruby/issues/19)) ([ed33b6b](https://github.com/openai/openai-ruby/commit/ed33b6bbe8ab4c95c88255f4cc68c34276b8662d)) * sdk client internal refactoring ([#21](https://github.com/openai/openai-ruby/issues/21)) ([927e252](https://github.com/openai/openai-ruby/commit/927e2521fedced96a8429214de8145dc4b5521a3)) * sdk internal updates ([#9](https://github.com/openai/openai-ruby/issues/9)) ([7673bb0](https://github.com/openai/openai-ruby/commit/7673bb0eb0ed542df89e5bc5dbf0247b26a97617)) * slightly more consistent type definition layout ([#17](https://github.com/openai/openai-ruby/issues/17)) ([1e4b557](https://github.com/openai/openai-ruby/commit/1e4b557e0ab1c8c6483c5e2c8dd856d5a9a2da90)) * touch up sdk usage examples ([#14](https://github.com/openai/openai-ruby/issues/14)) ([7219d46](https://github.com/openai/openai-ruby/commit/7219d463ba66a6499a84131f36b06d06de35a5ec)) * use generics instead of overloading for sorbet type definitions ([#20](https://github.com/openai/openai-ruby/issues/20)) ([a279382](https://github.com/openai/openai-ruby/commit/a279382762e14b18c6573f34bc3e825f927caaab)) ## 0.1.0-alpha.1 (2025-03-13) Full Changelog: [v0.0.1-alpha.0...v0.1.0-alpha.1](https://github.com/openai/openai-ruby/compare/v0.0.1-alpha.0...v0.1.0-alpha.1) ### Features * support streaming uploads ([#1](https://github.com/openai/openai-ruby/issues/1)) ([8d5317a](https://github.com/openai/openai-ruby/commit/8d5317a4a3035e24de78d226658a821a8893a283)) ### Bug Fixes * enums should only coerce matching symbols into strings ([#3](https://github.com/openai/openai-ruby/issues/3)) ([0f4c842](https://github.com/openai/openai-ruby/commit/0f4c842a52c679ab0793fcdc32e5555fbbea4178)) ### Chores * improve documentation ([d9ce7ce](https://github.com/openai/openai-ruby/commit/d9ce7cedcc96ea81529fbaabf18dcab871dd412f)) * improve rbi typedef for page classes ([#6](https://github.com/openai/openai-ruby/issues/6)) ([3450adf](https://github.com/openai/openai-ruby/commit/3450adf1f6af58b6626e874866276414b71dcf22)) * **internal:** remove extra empty newlines ([#7](https://github.com/openai/openai-ruby/issues/7)) ([8ce4f87](https://github.com/openai/openai-ruby/commit/8ce4f87ca9496143d8c85000b0fb1f8b00eedea6)) * more accurate generic params for stream classes ([#8](https://github.com/openai/openai-ruby/issues/8)) ([c83ab37](https://github.com/openai/openai-ruby/commit/c83ab3717be335b49ef38663b759d14c92841f5c)) * refactor BasePage to have initializer ([#5](https://github.com/openai/openai-ruby/issues/5)) ([43e80fa](https://github.com/openai/openai-ruby/commit/43e80fa252a9b1ae4d5c219dd9d346f0b0c3194f)) * remove stale thread local checks ([#4](https://github.com/openai/openai-ruby/issues/4)) ([69e8be8](https://github.com/openai/openai-ruby/commit/69e8be897fe8cff1ed9b0ea7ef53a759a9a089ff))