openai 0.86.0 → 0.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +10 -1
  4. data/examples/audio/record_and_play.rb +19 -0
  5. data/examples/responses/websocket_workflows.rb +159 -0
  6. data/lib/openai/helpers/local_audio/errors.rb +27 -0
  7. data/lib/openai/helpers/local_audio/process.rb +158 -0
  8. data/lib/openai/helpers/local_audio.rb +157 -0
  9. data/lib/openai/helpers/realtime/connection.rb +20 -2
  10. data/lib/openai/helpers/realtime/errors.rb +18 -0
  11. data/lib/openai/helpers/realtime/recovery.rb +489 -0
  12. data/lib/openai/helpers/realtime/resources/realtime_extension.rb +26 -1
  13. data/lib/openai/helpers/realtime.rb +1 -0
  14. data/lib/openai/models/beta/beta_response_input_item.rb +84 -1
  15. data/lib/openai/models/beta/beta_response_item.rb +72 -1
  16. data/lib/openai/models/beta/beta_response_output_item.rb +84 -1
  17. data/lib/openai/models/beta/beta_responses_client_event.rb +3 -0
  18. data/lib/openai/models/beta/beta_tool.rb +69 -37
  19. data/lib/openai/models/beta/response_create_params.rb +3 -0
  20. data/lib/openai/models/conversations/conversation_item.rb +82 -1
  21. data/lib/openai/models/image_edit_completed_event.rb +34 -8
  22. data/lib/openai/models/image_edit_params.rb +64 -44
  23. data/lib/openai/models/image_edit_partial_image_event.rb +34 -8
  24. data/lib/openai/models/image_gen_completed_event.rb +34 -8
  25. data/lib/openai/models/image_gen_partial_image_event.rb +34 -8
  26. data/lib/openai/models/image_generate_params.rb +51 -35
  27. data/lib/openai/models/image_model.rb +4 -0
  28. data/lib/openai/models/images_response.rb +37 -13
  29. data/lib/openai/models/responses/response_create_params.rb +3 -0
  30. data/lib/openai/models/responses/response_input_item.rb +84 -1
  31. data/lib/openai/models/responses/response_item.rb +72 -1
  32. data/lib/openai/models/responses/response_output_item.rb +84 -1
  33. data/lib/openai/models/responses/responses_client_event.rb +3 -0
  34. data/lib/openai/models/responses/tool.rb +69 -37
  35. data/lib/openai/models/webhooks/live_call_incoming_webhook_event.rb +3 -3
  36. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +5 -3
  37. data/lib/openai/resources/images.rb +12 -14
  38. data/lib/openai/version.rb +1 -1
  39. data/local-audio.md +146 -0
  40. data/rbi/openai/helpers/local_audio/interface.rbi +110 -0
  41. data/rbi/openai/helpers/realtime/connection.rbi +18 -2
  42. data/rbi/openai/helpers/realtime/extensions.rbi +8 -0
  43. data/rbi/openai/helpers/realtime/recovery.rbi +27 -0
  44. data/rbi/openai/models/beta/beta_response_input_item.rbi +86 -1
  45. data/rbi/openai/models/beta/beta_response_item.rbi +78 -1
  46. data/rbi/openai/models/beta/beta_response_output_item.rbi +84 -1
  47. data/rbi/openai/models/beta/beta_responses_client_event.rbi +6 -0
  48. data/rbi/openai/models/beta/beta_tool.rbi +90 -51
  49. data/rbi/openai/models/beta/response_create_params.rbi +6 -0
  50. data/rbi/openai/models/conversations/conversation_item.rbi +88 -1
  51. data/rbi/openai/models/image_edit_completed_event.rbi +20 -9
  52. data/rbi/openai/models/image_edit_params.rbi +89 -60
  53. data/rbi/openai/models/image_edit_partial_image_event.rbi +20 -9
  54. data/rbi/openai/models/image_gen_completed_event.rbi +20 -9
  55. data/rbi/openai/models/image_gen_partial_image_event.rbi +20 -9
  56. data/rbi/openai/models/image_generate_params.rbi +71 -48
  57. data/rbi/openai/models/image_model.rbi +4 -0
  58. data/rbi/openai/models/images_response.rbi +27 -16
  59. data/rbi/openai/models/responses/response_create_params.rbi +6 -0
  60. data/rbi/openai/models/responses/response_input_item.rbi +88 -1
  61. data/rbi/openai/models/responses/response_item.rbi +80 -1
  62. data/rbi/openai/models/responses/response_output_item.rbi +84 -1
  63. data/rbi/openai/models/responses/responses_client_event.rbi +6 -0
  64. data/rbi/openai/models/responses/tool.rbi +90 -51
  65. data/rbi/openai/models/webhooks/live_call_incoming_webhook_event.rbi +4 -4
  66. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +8 -4
  67. data/rbi/openai/resources/beta/responses.rbi +6 -2
  68. data/rbi/openai/resources/images.rbi +106 -76
  69. data/rbi/openai/resources/responses.rbi +6 -0
  70. data/realtime.md +101 -0
  71. data/responses-websocket.md +182 -0
  72. data/sig/openai/helpers/local_audio/interface.rbs +62 -0
  73. data/sig/openai/helpers/realtime/connection.rbs +9 -1
  74. data/sig/openai/helpers/realtime/extensions.rbs +4 -0
  75. data/sig/openai/helpers/realtime/recovery.rbs +19 -0
  76. data/sig/openai/models/beta/beta_response_input_item.rbs +39 -2
  77. data/sig/openai/models/beta/beta_response_item.rbs +39 -2
  78. data/sig/openai/models/beta/beta_response_output_item.rbs +39 -2
  79. data/sig/openai/models/beta/beta_tool.rbs +11 -1
  80. data/sig/openai/models/conversations/conversation_item.rbs +39 -2
  81. data/sig/openai/models/image_edit_completed_event.rbs +11 -4
  82. data/sig/openai/models/image_edit_params.rbs +3 -1
  83. data/sig/openai/models/image_edit_partial_image_event.rbs +11 -4
  84. data/sig/openai/models/image_gen_completed_event.rbs +11 -4
  85. data/sig/openai/models/image_gen_partial_image_event.rbs +11 -4
  86. data/sig/openai/models/image_generate_params.rbs +4 -1
  87. data/sig/openai/models/image_model.rbs +8 -0
  88. data/sig/openai/models/images_response.rbs +10 -4
  89. data/sig/openai/models/responses/response_input_item.rbs +39 -2
  90. data/sig/openai/models/responses/response_item.rbs +39 -2
  91. data/sig/openai/models/responses/response_output_item.rbs +39 -2
  92. data/sig/openai/models/responses/tool.rbs +11 -1
  93. metadata +15 -1
@@ -32,8 +32,8 @@ module OpenAI
32
32
  sig { returns(OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol) }
33
33
  attr_accessor :quality
34
34
 
35
- # The size of the edited image.
36
- sig { returns(OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol) }
35
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
36
+ sig { returns(OpenAI::ImageEditCompletedEvent::Size::Variants) }
37
37
  attr_accessor :size
38
38
 
39
39
  # The type of the event. Always `image_edit.completed`.
@@ -62,7 +62,7 @@ module OpenAI
62
62
 
63
63
  quality: OpenAI::ImageEditCompletedEvent::Quality::OrSymbol,
64
64
 
65
- size: OpenAI::ImageEditCompletedEvent::Size::OrSymbol,
65
+ size: T.any(String, OpenAI::ImageEditCompletedEvent::Size::OrSymbol),
66
66
 
67
67
  usage: OpenAI::ImageEditCompletedEvent::Usage::OrHash,
68
68
 
@@ -87,7 +87,7 @@ module OpenAI
87
87
  # The quality setting for the edited image.
88
88
  quality:,
89
89
 
90
- # The size of the edited image.
90
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
91
91
  size:,
92
92
 
93
93
  # For the GPT image models only, the token usage information for the image
@@ -108,7 +108,7 @@ module OpenAI
108
108
  created_at: Integer,
109
109
  output_format: OpenAI::ImageEditCompletedEvent::OutputFormat::TaggedSymbol,
110
110
  quality: OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol,
111
- size: OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol,
111
+ size: OpenAI::ImageEditCompletedEvent::Size::Variants,
112
112
  type: Symbol,
113
113
  usage: OpenAI::ImageEditCompletedEvent::Usage
114
114
  }
@@ -159,6 +159,8 @@ module OpenAI
159
159
  LOW = T.let(:low, OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol)
160
160
  MEDIUM = T.let(:medium, OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol)
161
161
  HIGH = T.let(:high, OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol)
162
+ XHIGH = T.let(:xhigh, OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol)
163
+ MAX = T.let(:max, OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol)
162
164
  AUTO = T.let(:auto, OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol)
163
165
 
164
166
  sig { override.returns(T::Array[OpenAI::ImageEditCompletedEvent::Quality::TaggedSymbol]) }
@@ -166,11 +168,20 @@ module OpenAI
166
168
  end
167
169
  end
168
170
 
169
- # The size of the edited image.
171
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
170
172
  module Size
171
- extend OpenAI::Internal::Type::Enum
173
+ extend OpenAI::Internal::Type::Union
174
+
175
+ Variants = T.type_alias { T.any(String, OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol) }
176
+
177
+ sig { override.returns(T::Array[OpenAI::ImageEditCompletedEvent::Size::Variants]) }
178
+ def self.variants
179
+ end
180
+
181
+ TaggedSymbol = T.type_alias do
182
+ T.all(Symbol, OpenAI::ImageEditCompletedEvent::Size)
183
+ end
172
184
 
173
- TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::ImageEditCompletedEvent::Size) }
174
185
  OrSymbol = T.type_alias { T.any(Symbol, String) }
175
186
 
176
187
  SIZE_1024X1024 = T.let(:"1024x1024", OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol)
@@ -178,7 +189,7 @@ module OpenAI
178
189
  SIZE_1536X1024 = T.let(:"1536x1024", OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol)
179
190
  AUTO = T.let(:auto, OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol)
180
191
 
181
- sig { override.returns(T::Array[OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol]) }
192
+ sig { returns(T::Array[OpenAI::ImageEditCompletedEvent::Size::TaggedSymbol]) }
182
193
  def self.values
183
194
  end
184
195
  end
@@ -18,9 +18,11 @@ module OpenAI
18
18
  # The image(s) to edit. Must be a supported image file or an array of images.
19
19
  #
20
20
  # For the GPT image models (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
21
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, and `chatgpt-image-latest`), each image
22
- # should be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to
23
- # 16 images.
21
+ # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
22
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
23
+ # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`), each image should
24
+ # be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16
25
+ # images.
24
26
  #
25
27
  # For `dall-e-2`, you can only provide one image, and it should be a square `png`
26
28
  # file less than 4MB.
@@ -40,9 +42,11 @@ module OpenAI
40
42
  # one of `transparent`, `opaque`, or `auto` (default value). When `auto` is used,
41
43
  # the model will automatically determine the best background for the image.
42
44
  #
43
- # Transparent backgrounds are available for supported GPT Image models. For
44
- # `gpt-image-2` and `gpt-image-2-2026-04-21`, this support is in preview. When
45
- # using `transparent`, set the output format to `png` or `webp`.
45
+ # `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`, including their `2026-09-08`
46
+ # snapshots, support `opaque` and `transparent` backgrounds. Transparent
47
+ # backgrounds are available for supported GPT Image models. For `gpt-image-2` and
48
+ # `gpt-image-2-2026-04-21`, this support is in preview. When using `transparent`,
49
+ # set the output format to `png` or `webp`.
46
50
  sig { returns(T.nilable(OpenAI::ImageEditParams::Background::OrSymbol)) }
47
51
  attr_accessor :background
48
52
 
@@ -69,7 +73,9 @@ module OpenAI
69
73
 
70
74
  # The model to use for image generation. One of `dall-e-2` or a GPT image model
71
75
  # (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
72
- # `gpt-image-2-2026-04-21`, or `chatgpt-image-latest`). Defaults to
76
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
77
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
78
+ # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`). Defaults to
73
79
  # `gpt-image-1.5`.
74
80
  sig { returns(T.nilable(T.any(String, OpenAI::ImageModel::OrSymbol))) }
75
81
  attr_accessor :model
@@ -99,8 +105,10 @@ module OpenAI
99
105
  sig { returns(T.nilable(Integer)) }
100
106
  attr_accessor :partial_images
101
107
 
102
- # The quality of the image that will be generated for GPT image models. Defaults
103
- # to `auto`.
108
+ # The quality of the image that will be generated for GPT image models. The GPT
109
+ # image models support `low`, `medium`, and `high`. `gpt-image-2.5-sunburst` and
110
+ # `gpt-image-2.5-flare`, including their `2026-09-08` snapshots, also support
111
+ # `xhigh` and `max`. Defaults to `auto`.
104
112
  sig { returns(T.nilable(OpenAI::ImageEditParams::Quality::OrSymbol)) }
105
113
  attr_accessor :quality
106
114
 
@@ -111,17 +119,18 @@ module OpenAI
111
119
  sig { returns(T.nilable(OpenAI::ImageEditParams::ResponseFormat::OrSymbol)) }
112
120
  attr_accessor :response_format
113
121
 
114
- # The size of the generated images. For `gpt-image-2` and
115
- # `gpt-image-2-2026-04-21`, arbitrary resolutions are supported as `WIDTHxHEIGHT`
116
- # strings, for example `1536x864`. Width and height must both be divisible by 16
117
- # and the requested aspect ratio must be between 1:3 and 3:1. Resolutions above
118
- # `2560x1440` are experimental, and the maximum supported resolution is
119
- # `3840x2160`. The requested size must also satisfy the model's current pixel and
120
- # edge limits. The standard sizes `1024x1024`, `1536x1024`, and `1024x1536` are
121
- # supported by the GPT image models; `auto` is supported for models that allow
122
- # automatic sizing. For `dall-e-2`, use one of `256x256`, `512x512`, or
123
- # `1024x1024`. For `dall-e-3`, use one of `1024x1024`, `1792x1024`, or
124
- # `1024x1792`.
122
+ # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
123
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
124
+ # `gpt-image-2.5-flare`, and `gpt-image-2.5-flare-2026-09-08`, arbitrary
125
+ # resolutions are supported as `WIDTHxHEIGHT` strings, for example `1536x864`.
126
+ # Width and height must both be divisible by 16 and the requested aspect ratio
127
+ # must be between 1:3 and 3:1. Resolutions above `2560x1440` are experimental, and
128
+ # the maximum supported resolution is `3840x2160`. The requested size must also
129
+ # satisfy the model's current pixel and edge limits. The standard sizes
130
+ # `1024x1024`, `1536x1024`, and `1024x1536` are supported by the GPT image models;
131
+ # `auto` is supported for models that allow automatic sizing. For `dall-e-2`, use
132
+ # one of `256x256`, `512x512`, or `1024x1024`. For `dall-e-3`, use one of
133
+ # `1024x1024`, `1792x1024`, or `1024x1792`.
125
134
  sig { returns(T.nilable(T.any(String, OpenAI::ImageEditParams::Size::OrSymbol))) }
126
135
  attr_accessor :size
127
136
 
@@ -174,9 +183,11 @@ module OpenAI
174
183
  # The image(s) to edit. Must be a supported image file or an array of images.
175
184
  #
176
185
  # For the GPT image models (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
177
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, and `chatgpt-image-latest`), each image
178
- # should be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to
179
- # 16 images.
186
+ # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
187
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
188
+ # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`), each image should
189
+ # be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16
190
+ # images.
180
191
  #
181
192
  # For `dall-e-2`, you can only provide one image, and it should be a square `png`
182
193
  # file less than 4MB.
@@ -194,9 +205,11 @@ module OpenAI
194
205
  # one of `transparent`, `opaque`, or `auto` (default value). When `auto` is used,
195
206
  # the model will automatically determine the best background for the image.
196
207
  #
197
- # Transparent backgrounds are available for supported GPT Image models. For
198
- # `gpt-image-2` and `gpt-image-2-2026-04-21`, this support is in preview. When
199
- # using `transparent`, set the output format to `png` or `webp`.
208
+ # `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`, including their `2026-09-08`
209
+ # snapshots, support `opaque` and `transparent` backgrounds. Transparent
210
+ # backgrounds are available for supported GPT Image models. For `gpt-image-2` and
211
+ # `gpt-image-2-2026-04-21`, this support is in preview. When using `transparent`,
212
+ # set the output format to `png` or `webp`.
200
213
  background: nil,
201
214
 
202
215
  # Control how much effort the model will exert to match the style and features,
@@ -217,7 +230,9 @@ module OpenAI
217
230
 
218
231
  # The model to use for image generation. One of `dall-e-2` or a GPT image model
219
232
  # (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
220
- # `gpt-image-2-2026-04-21`, or `chatgpt-image-latest`). Defaults to
233
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
234
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
235
+ # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`). Defaults to
221
236
  # `gpt-image-1.5`.
222
237
  model: nil,
223
238
 
@@ -242,8 +257,10 @@ module OpenAI
242
257
  # are generated if the full image is generated more quickly.
243
258
  partial_images: nil,
244
259
 
245
- # The quality of the image that will be generated for GPT image models. Defaults
246
- # to `auto`.
260
+ # The quality of the image that will be generated for GPT image models. The GPT
261
+ # image models support `low`, `medium`, and `high`. `gpt-image-2.5-sunburst` and
262
+ # `gpt-image-2.5-flare`, including their `2026-09-08` snapshots, also support
263
+ # `xhigh` and `max`. Defaults to `auto`.
247
264
  quality: nil,
248
265
 
249
266
  # The format in which the generated images are returned. Must be one of `url` or
@@ -252,17 +269,18 @@ module OpenAI
252
269
  # `dall-e-2`), as GPT image models always return base64-encoded images.
253
270
  response_format: nil,
254
271
 
255
- # The size of the generated images. For `gpt-image-2` and
256
- # `gpt-image-2-2026-04-21`, arbitrary resolutions are supported as `WIDTHxHEIGHT`
257
- # strings, for example `1536x864`. Width and height must both be divisible by 16
258
- # and the requested aspect ratio must be between 1:3 and 3:1. Resolutions above
259
- # `2560x1440` are experimental, and the maximum supported resolution is
260
- # `3840x2160`. The requested size must also satisfy the model's current pixel and
261
- # edge limits. The standard sizes `1024x1024`, `1536x1024`, and `1024x1536` are
262
- # supported by the GPT image models; `auto` is supported for models that allow
263
- # automatic sizing. For `dall-e-2`, use one of `256x256`, `512x512`, or
264
- # `1024x1024`. For `dall-e-3`, use one of `1024x1024`, `1792x1024`, or
265
- # `1024x1792`.
272
+ # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
273
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
274
+ # `gpt-image-2.5-flare`, and `gpt-image-2.5-flare-2026-09-08`, arbitrary
275
+ # resolutions are supported as `WIDTHxHEIGHT` strings, for example `1536x864`.
276
+ # Width and height must both be divisible by 16 and the requested aspect ratio
277
+ # must be between 1:3 and 3:1. Resolutions above `2560x1440` are experimental, and
278
+ # the maximum supported resolution is `3840x2160`. The requested size must also
279
+ # satisfy the model's current pixel and edge limits. The standard sizes
280
+ # `1024x1024`, `1536x1024`, and `1024x1536` are supported by the GPT image models;
281
+ # `auto` is supported for models that allow automatic sizing. For `dall-e-2`, use
282
+ # one of `256x256`, `512x512`, or `1024x1024`. For `dall-e-3`, use one of
283
+ # `1024x1024`, `1792x1024`, or `1024x1792`.
266
284
  size: nil,
267
285
 
268
286
  # A unique identifier representing your end-user, which can help OpenAI to monitor
@@ -301,9 +319,11 @@ module OpenAI
301
319
  # The image(s) to edit. Must be a supported image file or an array of images.
302
320
  #
303
321
  # For the GPT image models (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
304
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, and `chatgpt-image-latest`), each image
305
- # should be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to
306
- # 16 images.
322
+ # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
323
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
324
+ # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`), each image should
325
+ # be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16
326
+ # images.
307
327
  #
308
328
  # For `dall-e-2`, you can only provide one image, and it should be a square `png`
309
329
  # file less than 4MB.
@@ -327,9 +347,11 @@ module OpenAI
327
347
  # one of `transparent`, `opaque`, or `auto` (default value). When `auto` is used,
328
348
  # the model will automatically determine the best background for the image.
329
349
  #
330
- # Transparent backgrounds are available for supported GPT Image models. For
331
- # `gpt-image-2` and `gpt-image-2-2026-04-21`, this support is in preview. When
332
- # using `transparent`, set the output format to `png` or `webp`.
350
+ # `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare`, including their `2026-09-08`
351
+ # snapshots, support `opaque` and `transparent` backgrounds. Transparent
352
+ # backgrounds are available for supported GPT Image models. For `gpt-image-2` and
353
+ # `gpt-image-2-2026-04-21`, this support is in preview. When using `transparent`,
354
+ # set the output format to `png` or `webp`.
333
355
  module Background
334
356
  extend OpenAI::Internal::Type::Enum
335
357
 
@@ -365,7 +387,9 @@ module OpenAI
365
387
 
366
388
  # The model to use for image generation. One of `dall-e-2` or a GPT image model
367
389
  # (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
368
- # `gpt-image-2-2026-04-21`, or `chatgpt-image-latest`). Defaults to
390
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
391
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
392
+ # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`). Defaults to
369
393
  # `gpt-image-1.5`.
370
394
  module Model
371
395
  extend OpenAI::Internal::Type::Union
@@ -396,8 +420,10 @@ module OpenAI
396
420
  end
397
421
  end
398
422
 
399
- # The quality of the image that will be generated for GPT image models. Defaults
400
- # to `auto`.
423
+ # The quality of the image that will be generated for GPT image models. The GPT
424
+ # image models support `low`, `medium`, and `high`. `gpt-image-2.5-sunburst` and
425
+ # `gpt-image-2.5-flare`, including their `2026-09-08` snapshots, also support
426
+ # `xhigh` and `max`. Defaults to `auto`.
401
427
  module Quality
402
428
  extend OpenAI::Internal::Type::Enum
403
429
 
@@ -408,6 +434,8 @@ module OpenAI
408
434
  LOW = T.let(:low, OpenAI::ImageEditParams::Quality::TaggedSymbol)
409
435
  MEDIUM = T.let(:medium, OpenAI::ImageEditParams::Quality::TaggedSymbol)
410
436
  HIGH = T.let(:high, OpenAI::ImageEditParams::Quality::TaggedSymbol)
437
+ XHIGH = T.let(:xhigh, OpenAI::ImageEditParams::Quality::TaggedSymbol)
438
+ MAX = T.let(:max, OpenAI::ImageEditParams::Quality::TaggedSymbol)
411
439
  AUTO = T.let(:auto, OpenAI::ImageEditParams::Quality::TaggedSymbol)
412
440
 
413
441
  sig { override.returns(T::Array[OpenAI::ImageEditParams::Quality::TaggedSymbol]) }
@@ -433,17 +461,18 @@ module OpenAI
433
461
  end
434
462
  end
435
463
 
436
- # The size of the generated images. For `gpt-image-2` and
437
- # `gpt-image-2-2026-04-21`, arbitrary resolutions are supported as `WIDTHxHEIGHT`
438
- # strings, for example `1536x864`. Width and height must both be divisible by 16
439
- # and the requested aspect ratio must be between 1:3 and 3:1. Resolutions above
440
- # `2560x1440` are experimental, and the maximum supported resolution is
441
- # `3840x2160`. The requested size must also satisfy the model's current pixel and
442
- # edge limits. The standard sizes `1024x1024`, `1536x1024`, and `1024x1536` are
443
- # supported by the GPT image models; `auto` is supported for models that allow
444
- # automatic sizing. For `dall-e-2`, use one of `256x256`, `512x512`, or
445
- # `1024x1024`. For `dall-e-3`, use one of `1024x1024`, `1792x1024`, or
446
- # `1024x1792`.
464
+ # The size of the generated images. For `gpt-image-2`, `gpt-image-2-2026-04-21`,
465
+ # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
466
+ # `gpt-image-2.5-flare`, and `gpt-image-2.5-flare-2026-09-08`, arbitrary
467
+ # resolutions are supported as `WIDTHxHEIGHT` strings, for example `1536x864`.
468
+ # Width and height must both be divisible by 16 and the requested aspect ratio
469
+ # must be between 1:3 and 3:1. Resolutions above `2560x1440` are experimental, and
470
+ # the maximum supported resolution is `3840x2160`. The requested size must also
471
+ # satisfy the model's current pixel and edge limits. The standard sizes
472
+ # `1024x1024`, `1536x1024`, and `1024x1536` are supported by the GPT image models;
473
+ # `auto` is supported for models that allow automatic sizing. For `dall-e-2`, use
474
+ # one of `256x256`, `512x512`, or `1024x1024`. For `dall-e-3`, use one of
475
+ # `1024x1024`, `1792x1024`, or `1024x1792`.
447
476
  module Size
448
477
  extend OpenAI::Internal::Type::Union
449
478
 
@@ -36,8 +36,8 @@ module OpenAI
36
36
  sig { returns(OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol) }
37
37
  attr_accessor :quality
38
38
 
39
- # The size of the requested edited image.
40
- sig { returns(OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol) }
39
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
40
+ sig { returns(OpenAI::ImageEditPartialImageEvent::Size::Variants) }
41
41
  attr_accessor :size
42
42
 
43
43
  # The type of the event. Always `image_edit.partial_image`.
@@ -60,7 +60,7 @@ module OpenAI
60
60
 
61
61
  quality: OpenAI::ImageEditPartialImageEvent::Quality::OrSymbol,
62
62
 
63
- size: OpenAI::ImageEditPartialImageEvent::Size::OrSymbol,
63
+ size: T.any(String, OpenAI::ImageEditPartialImageEvent::Size::OrSymbol),
64
64
 
65
65
  type: Symbol
66
66
  )
@@ -86,7 +86,7 @@ module OpenAI
86
86
  # The quality setting for the requested edited image.
87
87
  quality:,
88
88
 
89
- # The size of the requested edited image.
89
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
90
90
  size:,
91
91
 
92
92
  # The type of the event. Always `image_edit.partial_image`.
@@ -104,7 +104,7 @@ module OpenAI
104
104
  output_format: OpenAI::ImageEditPartialImageEvent::OutputFormat::TaggedSymbol,
105
105
  partial_image_index: Integer,
106
106
  quality: OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol,
107
- size: OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol,
107
+ size: OpenAI::ImageEditPartialImageEvent::Size::Variants,
108
108
  type: Symbol
109
109
  }
110
110
  )
@@ -154,6 +154,8 @@ module OpenAI
154
154
  LOW = T.let(:low, OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol)
155
155
  MEDIUM = T.let(:medium, OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol)
156
156
  HIGH = T.let(:high, OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol)
157
+ XHIGH = T.let(:xhigh, OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol)
158
+ MAX = T.let(:max, OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol)
157
159
  AUTO = T.let(:auto, OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol)
158
160
 
159
161
  sig { override.returns(T::Array[OpenAI::ImageEditPartialImageEvent::Quality::TaggedSymbol]) }
@@ -161,11 +163,20 @@ module OpenAI
161
163
  end
162
164
  end
163
165
 
164
- # The size of the requested edited image.
166
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
165
167
  module Size
166
- extend OpenAI::Internal::Type::Enum
168
+ extend OpenAI::Internal::Type::Union
169
+
170
+ Variants = T.type_alias { T.any(String, OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol) }
171
+
172
+ sig { override.returns(T::Array[OpenAI::ImageEditPartialImageEvent::Size::Variants]) }
173
+ def self.variants
174
+ end
175
+
176
+ TaggedSymbol = T.type_alias do
177
+ T.all(Symbol, OpenAI::ImageEditPartialImageEvent::Size)
178
+ end
167
179
 
168
- TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::ImageEditPartialImageEvent::Size) }
169
180
  OrSymbol = T.type_alias { T.any(Symbol, String) }
170
181
 
171
182
  SIZE_1024X1024 = T.let(:"1024x1024", OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol)
@@ -173,7 +184,7 @@ module OpenAI
173
184
  SIZE_1536X1024 = T.let(:"1536x1024", OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol)
174
185
  AUTO = T.let(:auto, OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol)
175
186
 
176
- sig { override.returns(T::Array[OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol]) }
187
+ sig { returns(T::Array[OpenAI::ImageEditPartialImageEvent::Size::TaggedSymbol]) }
177
188
  def self.values
178
189
  end
179
190
  end
@@ -32,8 +32,8 @@ module OpenAI
32
32
  sig { returns(OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol) }
33
33
  attr_accessor :quality
34
34
 
35
- # The size of the generated image.
36
- sig { returns(OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol) }
35
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
36
+ sig { returns(OpenAI::ImageGenCompletedEvent::Size::Variants) }
37
37
  attr_accessor :size
38
38
 
39
39
  # The type of the event. Always `image_generation.completed`.
@@ -62,7 +62,7 @@ module OpenAI
62
62
 
63
63
  quality: OpenAI::ImageGenCompletedEvent::Quality::OrSymbol,
64
64
 
65
- size: OpenAI::ImageGenCompletedEvent::Size::OrSymbol,
65
+ size: T.any(String, OpenAI::ImageGenCompletedEvent::Size::OrSymbol),
66
66
 
67
67
  usage: OpenAI::ImageGenCompletedEvent::Usage::OrHash,
68
68
 
@@ -87,7 +87,7 @@ module OpenAI
87
87
  # The quality setting for the generated image.
88
88
  quality:,
89
89
 
90
- # The size of the generated image.
90
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
91
91
  size:,
92
92
 
93
93
  # For the GPT image models only, the token usage information for the image
@@ -108,7 +108,7 @@ module OpenAI
108
108
  created_at: Integer,
109
109
  output_format: OpenAI::ImageGenCompletedEvent::OutputFormat::TaggedSymbol,
110
110
  quality: OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol,
111
- size: OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol,
111
+ size: OpenAI::ImageGenCompletedEvent::Size::Variants,
112
112
  type: Symbol,
113
113
  usage: OpenAI::ImageGenCompletedEvent::Usage
114
114
  }
@@ -159,6 +159,8 @@ module OpenAI
159
159
  LOW = T.let(:low, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
160
160
  MEDIUM = T.let(:medium, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
161
161
  HIGH = T.let(:high, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
162
+ XHIGH = T.let(:xhigh, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
163
+ MAX = T.let(:max, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
162
164
  AUTO = T.let(:auto, OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol)
163
165
 
164
166
  sig { override.returns(T::Array[OpenAI::ImageGenCompletedEvent::Quality::TaggedSymbol]) }
@@ -166,11 +168,20 @@ module OpenAI
166
168
  end
167
169
  end
168
170
 
169
- # The size of the generated image.
171
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
170
172
  module Size
171
- extend OpenAI::Internal::Type::Enum
173
+ extend OpenAI::Internal::Type::Union
174
+
175
+ Variants = T.type_alias { T.any(String, OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol) }
176
+
177
+ sig { override.returns(T::Array[OpenAI::ImageGenCompletedEvent::Size::Variants]) }
178
+ def self.variants
179
+ end
180
+
181
+ TaggedSymbol = T.type_alias do
182
+ T.all(Symbol, OpenAI::ImageGenCompletedEvent::Size)
183
+ end
172
184
 
173
- TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::ImageGenCompletedEvent::Size) }
174
185
  OrSymbol = T.type_alias { T.any(Symbol, String) }
175
186
 
176
187
  SIZE_1024X1024 = T.let(:"1024x1024", OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol)
@@ -178,7 +189,7 @@ module OpenAI
178
189
  SIZE_1536X1024 = T.let(:"1536x1024", OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol)
179
190
  AUTO = T.let(:auto, OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol)
180
191
 
181
- sig { override.returns(T::Array[OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol]) }
192
+ sig { returns(T::Array[OpenAI::ImageGenCompletedEvent::Size::TaggedSymbol]) }
182
193
  def self.values
183
194
  end
184
195
  end
@@ -36,8 +36,8 @@ module OpenAI
36
36
  sig { returns(OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol) }
37
37
  attr_accessor :quality
38
38
 
39
- # The size of the requested image.
40
- sig { returns(OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol) }
39
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
40
+ sig { returns(OpenAI::ImageGenPartialImageEvent::Size::Variants) }
41
41
  attr_accessor :size
42
42
 
43
43
  # The type of the event. Always `image_generation.partial_image`.
@@ -60,7 +60,7 @@ module OpenAI
60
60
 
61
61
  quality: OpenAI::ImageGenPartialImageEvent::Quality::OrSymbol,
62
62
 
63
- size: OpenAI::ImageGenPartialImageEvent::Size::OrSymbol,
63
+ size: T.any(String, OpenAI::ImageGenPartialImageEvent::Size::OrSymbol),
64
64
 
65
65
  type: Symbol
66
66
  )
@@ -86,7 +86,7 @@ module OpenAI
86
86
  # The quality setting for the requested image.
87
87
  quality:,
88
88
 
89
- # The size of the requested image.
89
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
90
90
  size:,
91
91
 
92
92
  # The type of the event. Always `image_generation.partial_image`.
@@ -104,7 +104,7 @@ module OpenAI
104
104
  output_format: OpenAI::ImageGenPartialImageEvent::OutputFormat::TaggedSymbol,
105
105
  partial_image_index: Integer,
106
106
  quality: OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol,
107
- size: OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol,
107
+ size: OpenAI::ImageGenPartialImageEvent::Size::Variants,
108
108
  type: Symbol
109
109
  }
110
110
  )
@@ -154,6 +154,8 @@ module OpenAI
154
154
  LOW = T.let(:low, OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol)
155
155
  MEDIUM = T.let(:medium, OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol)
156
156
  HIGH = T.let(:high, OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol)
157
+ XHIGH = T.let(:xhigh, OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol)
158
+ MAX = T.let(:max, OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol)
157
159
  AUTO = T.let(:auto, OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol)
158
160
 
159
161
  sig { override.returns(T::Array[OpenAI::ImageGenPartialImageEvent::Quality::TaggedSymbol]) }
@@ -161,11 +163,20 @@ module OpenAI
161
163
  end
162
164
  end
163
165
 
164
- # The size of the requested image.
166
+ # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
165
167
  module Size
166
- extend OpenAI::Internal::Type::Enum
168
+ extend OpenAI::Internal::Type::Union
169
+
170
+ Variants = T.type_alias { T.any(String, OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol) }
171
+
172
+ sig { override.returns(T::Array[OpenAI::ImageGenPartialImageEvent::Size::Variants]) }
173
+ def self.variants
174
+ end
175
+
176
+ TaggedSymbol = T.type_alias do
177
+ T.all(Symbol, OpenAI::ImageGenPartialImageEvent::Size)
178
+ end
167
179
 
168
- TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::ImageGenPartialImageEvent::Size) }
169
180
  OrSymbol = T.type_alias { T.any(Symbol, String) }
170
181
 
171
182
  SIZE_1024X1024 = T.let(:"1024x1024", OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol)
@@ -173,7 +184,7 @@ module OpenAI
173
184
  SIZE_1536X1024 = T.let(:"1536x1024", OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol)
174
185
  AUTO = T.let(:auto, OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol)
175
186
 
176
- sig { override.returns(T::Array[OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol]) }
187
+ sig { returns(T::Array[OpenAI::ImageGenPartialImageEvent::Size::TaggedSymbol]) }
177
188
  def self.values
178
189
  end
179
190
  end