openai 0.117.0 → 0.119.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 (154) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +1 -1
  5. data/lib/openai/helpers/data_residency.rb +4 -1
  6. data/lib/openai/models/admin/organization/projects/project_optional_service_tier.rb +24 -0
  7. data/lib/openai/models/admin/organization/projects/project_service_tier_settings.rb +88 -0
  8. data/lib/openai/models/admin/organization/projects/service_tier_setting_retrieve_params.rb +29 -0
  9. data/lib/openai/models/admin/organization/projects/service_tier_setting_update_params.rb +92 -0
  10. data/lib/openai/models/all_models.rb +1 -0
  11. data/lib/openai/models/beta/beta_compacted_response.rb +34 -1
  12. data/lib/openai/models/beta/beta_response.rb +35 -1
  13. data/lib/openai/models/beta/beta_response_input_item.rb +45 -1
  14. data/lib/openai/models/beta/beta_response_item.rb +45 -1
  15. data/lib/openai/models/beta/beta_response_output_item.rb +45 -1
  16. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +186 -13
  17. data/lib/openai/models/beta/beta_response_usage.rb +33 -1
  18. data/lib/openai/models/beta/beta_responses_client_event.rb +58 -10
  19. data/lib/openai/models/beta/beta_tool.rb +164 -13
  20. data/lib/openai/models/beta/response_compact_params.rb +47 -4
  21. data/lib/openai/models/beta/response_create_params.rb +54 -10
  22. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  23. data/lib/openai/models/chat/completion_create_params.rb +3 -3
  24. data/lib/openai/models/conversations/conversation_item.rb +45 -1
  25. data/lib/openai/models/image_edit_params.rb +72 -16
  26. data/lib/openai/models/image_generate_params.rb +160 -8
  27. data/lib/openai/models/image_model.rb +2 -0
  28. data/lib/openai/models/images_response.rb +55 -4
  29. data/lib/openai/models/realtime/realtime_audio_config_input.rb +14 -1
  30. data/lib/openai/models/realtime/realtime_session_create_response.rb +14 -1
  31. data/lib/openai/models/realtime/realtime_transcription_session_audio_input.rb +14 -1
  32. data/lib/openai/models/realtime/realtime_transcription_session_create_response.rb +14 -1
  33. data/lib/openai/models/realtime/realtime_translation_session.rb +14 -1
  34. data/lib/openai/models/realtime/realtime_translation_session_create_request.rb +14 -1
  35. data/lib/openai/models/realtime/realtime_translation_session_update_request.rb +14 -1
  36. data/lib/openai/models/responses/compacted_response.rb +37 -1
  37. data/lib/openai/models/responses/response.rb +35 -1
  38. data/lib/openai/models/responses/response_compact_params.rb +53 -4
  39. data/lib/openai/models/responses/response_create_params.rb +57 -10
  40. data/lib/openai/models/responses/response_input_item.rb +45 -1
  41. data/lib/openai/models/responses/response_item.rb +45 -1
  42. data/lib/openai/models/responses/response_output_item.rb +45 -1
  43. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +186 -13
  44. data/lib/openai/models/responses/response_usage.rb +33 -1
  45. data/lib/openai/models/responses/responses_client_event.rb +58 -10
  46. data/lib/openai/models/responses/tool.rb +164 -13
  47. data/lib/openai/models/responses_model.rb +1 -0
  48. data/lib/openai/resources/admin/organization/projects/service_tier_settings.rb +77 -0
  49. data/lib/openai/resources/admin/organization/projects.rb +6 -0
  50. data/lib/openai/resources/admin/organization.rb +6 -6
  51. data/lib/openai/resources/beta/responses.rb +18 -9
  52. data/lib/openai/resources/chat/completions.rb +2 -2
  53. data/lib/openai/resources/images.rb +102 -18
  54. data/lib/openai/resources/responses.rb +15 -6
  55. data/lib/openai/version.rb +1 -1
  56. data/lib/openai.rb +5 -0
  57. data/rbi/openai/models/admin/organization/projects/project_optional_service_tier.rbi +45 -0
  58. data/rbi/openai/models/admin/organization/projects/project_service_tier_settings.rbi +143 -0
  59. data/rbi/openai/models/admin/organization/projects/service_tier_setting_retrieve_params.rbi +63 -0
  60. data/rbi/openai/models/admin/organization/projects/service_tier_setting_update_params.rbi +183 -0
  61. data/rbi/openai/models/all_models.rbi +1 -0
  62. data/rbi/openai/models/beta/beta_compacted_response.rbi +67 -1
  63. data/rbi/openai/models/beta/beta_response.rbi +63 -0
  64. data/rbi/openai/models/beta/beta_response_input_item.rbi +82 -1
  65. data/rbi/openai/models/beta/beta_response_item.rbi +82 -1
  66. data/rbi/openai/models/beta/beta_response_output_item.rbi +82 -1
  67. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +338 -13
  68. data/rbi/openai/models/beta/beta_response_usage.rbi +66 -3
  69. data/rbi/openai/models/beta/beta_responses_client_event.rbi +118 -9
  70. data/rbi/openai/models/beta/beta_tool.rbi +245 -13
  71. data/rbi/openai/models/beta/response_compact_params.rbi +84 -3
  72. data/rbi/openai/models/beta/response_create_params.rbi +91 -9
  73. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  74. data/rbi/openai/models/chat/completion_create_params.rbi +3 -3
  75. data/rbi/openai/models/conversations/conversation_item.rbi +84 -1
  76. data/rbi/openai/models/image_edit_params.rbi +76 -14
  77. data/rbi/openai/models/image_generate_params.rbi +218 -6
  78. data/rbi/openai/models/image_model.rbi +2 -0
  79. data/rbi/openai/models/images_response.rbi +90 -3
  80. data/rbi/openai/models/realtime/realtime_audio_config_input.rbi +17 -1
  81. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +17 -1
  82. data/rbi/openai/models/realtime/realtime_transcription_session_audio_input.rbi +17 -1
  83. data/rbi/openai/models/realtime/realtime_transcription_session_create_response.rbi +17 -1
  84. data/rbi/openai/models/realtime/realtime_translation_session.rbi +19 -3
  85. data/rbi/openai/models/realtime/realtime_translation_session_create_request.rbi +19 -3
  86. data/rbi/openai/models/realtime/realtime_translation_session_update_request.rbi +19 -3
  87. data/rbi/openai/models/responses/compacted_response.rbi +67 -1
  88. data/rbi/openai/models/responses/response.rbi +63 -0
  89. data/rbi/openai/models/responses/response_compact_params.rbi +91 -3
  90. data/rbi/openai/models/responses/response_create_params.rbi +97 -9
  91. data/rbi/openai/models/responses/response_input_item.rbi +82 -1
  92. data/rbi/openai/models/responses/response_item.rbi +82 -1
  93. data/rbi/openai/models/responses/response_output_item.rbi +82 -1
  94. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +340 -13
  95. data/rbi/openai/models/responses/response_usage.rbi +66 -3
  96. data/rbi/openai/models/responses/responses_client_event.rbi +118 -9
  97. data/rbi/openai/models/responses/tool.rbi +248 -13
  98. data/rbi/openai/models/responses_model.rbi +1 -0
  99. data/rbi/openai/resources/admin/organization/projects/service_tier_settings.rbi +67 -0
  100. data/rbi/openai/resources/admin/organization/projects.rbi +3 -0
  101. data/rbi/openai/resources/admin/organization.rbi +3 -3
  102. data/rbi/openai/resources/beta/responses.rbi +15 -6
  103. data/rbi/openai/resources/chat/completions.rbi +2 -2
  104. data/rbi/openai/resources/images.rbi +98 -14
  105. data/rbi/openai/resources/responses.rbi +14 -3
  106. data/sig/openai/models/admin/organization/projects/project_optional_service_tier.rbs +23 -0
  107. data/sig/openai/models/admin/organization/projects/project_service_tier_settings.rbs +72 -0
  108. data/sig/openai/models/admin/organization/projects/service_tier_setting_retrieve_params.rbs +32 -0
  109. data/sig/openai/models/admin/organization/projects/service_tier_setting_update_params.rbs +91 -0
  110. data/sig/openai/models/all_models.rbs +2 -0
  111. data/sig/openai/models/beta/beta_compacted_response.rbs +42 -2
  112. data/sig/openai/models/beta/beta_response.rbs +42 -1
  113. data/sig/openai/models/beta/beta_response_input_item.rbs +51 -3
  114. data/sig/openai/models/beta/beta_response_item.rbs +51 -3
  115. data/sig/openai/models/beta/beta_response_output_item.rbs +51 -3
  116. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +188 -15
  117. data/sig/openai/models/beta/beta_response_usage.rbs +40 -3
  118. data/sig/openai/models/beta/beta_responses_client_event.rbs +67 -10
  119. data/sig/openai/models/beta/beta_tool.rbs +188 -15
  120. data/sig/openai/models/beta/response_compact_params.rbs +58 -2
  121. data/sig/openai/models/beta/response_create_params.rbs +67 -10
  122. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  123. data/sig/openai/models/chat/completion_create_params.rbs +3 -3
  124. data/sig/openai/models/conversations/conversation_item.rbs +51 -3
  125. data/sig/openai/models/image_edit_params.rbs +63 -12
  126. data/sig/openai/models/image_generate_params.rbs +150 -5
  127. data/sig/openai/models/image_model.rbs +4 -0
  128. data/sig/openai/models/images_response.rbs +59 -4
  129. data/sig/openai/models/realtime/realtime_audio_config_input.rbs +20 -1
  130. data/sig/openai/models/realtime/realtime_session_create_response.rbs +20 -1
  131. data/sig/openai/models/realtime/realtime_transcription_session_audio_input.rbs +20 -1
  132. data/sig/openai/models/realtime/realtime_transcription_session_create_response.rbs +20 -1
  133. data/sig/openai/models/realtime/realtime_translation_session.rbs +22 -3
  134. data/sig/openai/models/realtime/realtime_translation_session_create_request.rbs +22 -3
  135. data/sig/openai/models/realtime/realtime_translation_session_update_request.rbs +22 -3
  136. data/sig/openai/models/responses/compacted_response.rbs +42 -2
  137. data/sig/openai/models/responses/response.rbs +42 -1
  138. data/sig/openai/models/responses/response_compact_params.rbs +60 -2
  139. data/sig/openai/models/responses/response_create_params.rbs +67 -10
  140. data/sig/openai/models/responses/response_input_item.rbs +51 -3
  141. data/sig/openai/models/responses/response_item.rbs +51 -3
  142. data/sig/openai/models/responses/response_output_item.rbs +51 -3
  143. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +188 -15
  144. data/sig/openai/models/responses/response_usage.rbs +40 -3
  145. data/sig/openai/models/responses/responses_client_event.rbs +67 -10
  146. data/sig/openai/models/responses/tool.rbs +188 -15
  147. data/sig/openai/models/responses_model.rbs +2 -0
  148. data/sig/openai/resources/admin/organization/projects/service_tier_settings.rbs +25 -0
  149. data/sig/openai/resources/admin/organization/projects.rbs +2 -0
  150. data/sig/openai/resources/admin/organization.rbs +2 -2
  151. data/sig/openai/resources/beta/responses.rbs +3 -0
  152. data/sig/openai/resources/images.rbs +14 -0
  153. data/sig/openai/resources/responses.rbs +4 -0
  154. metadata +16 -1
@@ -67,6 +67,13 @@ module OpenAI
67
67
  sig { params(generate: T::Boolean).void }
68
68
  attr_writer :generate
69
69
 
70
+ # Request level image options.
71
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image)) }
72
+ attr_reader :image
73
+
74
+ sig { params(image: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::OrHash).void }
75
+ attr_writer :image
76
+
70
77
  # Specify additional output data to include in the model response. Currently
71
78
  # supported values are:
72
79
  #
@@ -199,7 +206,7 @@ module OpenAI
199
206
  # request can write up to four breakpoints. For cache matching, OpenAI considers
200
207
  # up to the latest 80 breakpoints in the conversation, without a content-block
201
208
  # lookback limit. Set `mode` to `explicit` to disable the implicit breakpoint. The
202
- # `ttl` defaults to `30m`, which is currently the only supported value. See the
209
+ # `ttl` defaults to `30m`. Supported lifetimes depend on the API. See the
203
210
  # [prompt caching guide](https://developers.openai.com/api/docs/guides/prompt-caching)
204
211
  # for current details.
205
212
  sig { returns(T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::PromptCacheOptions)) }
@@ -514,6 +521,8 @@ module OpenAI
514
521
 
515
522
  generate: T::Boolean,
516
523
 
524
+ image: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::OrHash,
525
+
517
526
  include: T.nilable(T::Array[OpenAI::Beta::BetaResponseIncludable::OrSymbol]),
518
527
 
519
528
  input: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Input::Variants,
@@ -632,6 +641,9 @@ module OpenAI
632
641
  # used as previous_response_id on a later turn.
633
642
  generate: nil,
634
643
 
644
+ # Request level image options.
645
+ image: nil,
646
+
635
647
  # Specify additional output data to include in the model response. Currently
636
648
  # supported values are:
637
649
  #
@@ -726,7 +738,7 @@ module OpenAI
726
738
  # request can write up to four breakpoints. For cache matching, OpenAI considers
727
739
  # up to the latest 80 breakpoints in the conversation, without a content-block
728
740
  # lookback limit. Set `mode` to `explicit` to disable the implicit breakpoint. The
729
- # `ttl` defaults to `30m`, which is currently the only supported value. See the
741
+ # `ttl` defaults to `30m`. Supported lifetimes depend on the API. See the
730
742
  # [prompt caching guide](https://developers.openai.com/api/docs/guides/prompt-caching)
731
743
  # for current details.
732
744
  prompt_cache_options: nil,
@@ -899,6 +911,7 @@ module OpenAI
899
911
  ),
900
912
  conversation: T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam)),
901
913
  generate: T.nilable(T::Boolean),
914
+ image: T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image),
902
915
  include: T.nilable(T::Array[OpenAI::Beta::BetaResponseIncludable::OrSymbol]),
903
916
  input: T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Input::Variants),
904
917
  instructions: T.nilable(String),
@@ -1144,6 +1157,98 @@ module OpenAI
1144
1157
 
1145
1158
  end
1146
1159
 
1160
+ class Image < OpenAI::Internal::Type::BaseModel
1161
+ OrHash = T.type_alias do
1162
+ T.any(
1163
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image,
1164
+ OpenAI::Internal::AnyHash
1165
+ )
1166
+ end
1167
+
1168
+ # Controls image context optimization. Defaults to `auto`, which uses the model,
1169
+ # transport, and input to select a policy. Use `enabled` to require compression
1170
+ # support or `disabled` to turn it off.
1171
+ sig {
1172
+ returns(
1173
+ T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression::OrSymbol)
1174
+ )
1175
+ }
1176
+ attr_reader :context_compression
1177
+
1178
+ sig {
1179
+ params(
1180
+ context_compression: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression::OrSymbol
1181
+ )
1182
+ .void
1183
+ }
1184
+ attr_writer :context_compression
1185
+
1186
+ # Request level image options.
1187
+ sig do
1188
+ params(
1189
+
1190
+ context_compression: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression::OrSymbol
1191
+ )
1192
+ .returns(T.attached_class)
1193
+ end
1194
+ def self.new(
1195
+
1196
+ # Controls image context optimization. Defaults to `auto`, which uses the model,
1197
+ # transport, and input to select a policy. Use `enabled` to require compression
1198
+ # support or `disabled` to turn it off.
1199
+
1200
+ context_compression: nil
1201
+ )
1202
+ end
1203
+
1204
+ sig do
1205
+ override.returns(
1206
+ {
1207
+ context_compression: T.nilable(
1208
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression::OrSymbol
1209
+ )
1210
+ }
1211
+ )
1212
+ end
1213
+ def to_hash
1214
+ end
1215
+
1216
+ # Controls image context optimization. Defaults to `auto`, which uses the model,
1217
+ # transport, and input to select a policy. Use `enabled` to require compression
1218
+ # support or `disabled` to turn it off.
1219
+ module ContextCompression
1220
+ extend OpenAI::Internal::Type::Enum
1221
+
1222
+ TaggedSymbol = T.type_alias {
1223
+ T.all(Symbol, OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression)
1224
+ }
1225
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1226
+
1227
+ AUTO = T.let(
1228
+ :auto,
1229
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression::TaggedSymbol
1230
+ )
1231
+ ENABLED = T.let(
1232
+ :enabled,
1233
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression::TaggedSymbol
1234
+ )
1235
+ DISABLED = T.let(
1236
+ :disabled,
1237
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression::TaggedSymbol
1238
+ )
1239
+
1240
+ sig {
1241
+ override.returns(
1242
+ T::Array[
1243
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Image::ContextCompression::TaggedSymbol
1244
+ ]
1245
+ )
1246
+ }
1247
+ def self.values
1248
+ end
1249
+ end
1250
+ end
1251
+
1147
1252
  # Text, image, or file inputs to the model, used to generate a response.
1148
1253
  #
1149
1254
  # Learn more:
@@ -1956,8 +2061,8 @@ module OpenAI
1956
2061
  attr_writer :prewarm
1957
2062
 
1958
2063
  # The minimum lifetime applied to every implicit and explicit cache breakpoint
1959
- # written by the request. Defaults to `30m`, which is currently the only supported
1960
- # value. The backend may retain cache entries for longer.
2064
+ # written by the request. Supported values are `30m` (the default) and `12h`. The
2065
+ # backend may retain cache entries for longer.
1961
2066
  sig {
1962
2067
  returns(
1963
2068
  T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::PromptCacheOptions::Ttl::OrSymbol)
@@ -1977,7 +2082,7 @@ module OpenAI
1977
2082
  # request can write up to four breakpoints. For cache matching, OpenAI considers
1978
2083
  # up to the latest 80 breakpoints in the conversation, without a content-block
1979
2084
  # lookback limit. Set `mode` to `explicit` to disable the implicit breakpoint. The
1980
- # `ttl` defaults to `30m`, which is currently the only supported value. See the
2085
+ # `ttl` defaults to `30m`. Supported lifetimes depend on the API. See the
1981
2086
  # [prompt caching guide](https://developers.openai.com/api/docs/guides/prompt-caching)
1982
2087
  # for current details.
1983
2088
  sig do
@@ -2012,8 +2117,8 @@ module OpenAI
2012
2117
  prewarm: nil,
2013
2118
 
2014
2119
  # The minimum lifetime applied to every implicit and explicit cache breakpoint
2015
- # written by the request. Defaults to `30m`, which is currently the only supported
2016
- # value. The backend may retain cache entries for longer.
2120
+ # written by the request. Supported values are `30m` (the default) and `12h`. The
2121
+ # backend may retain cache entries for longer.
2017
2122
 
2018
2123
  ttl: nil
2019
2124
  )
@@ -2071,8 +2176,8 @@ module OpenAI
2071
2176
  end
2072
2177
 
2073
2178
  # The minimum lifetime applied to every implicit and explicit cache breakpoint
2074
- # written by the request. Defaults to `30m`, which is currently the only supported
2075
- # value. The backend may retain cache entries for longer.
2179
+ # written by the request. Supported values are `30m` (the default) and `12h`. The
2180
+ # backend may retain cache entries for longer.
2076
2181
  module Ttl
2077
2182
  extend OpenAI::Internal::Type::Enum
2078
2183
 
@@ -2085,6 +2190,10 @@ module OpenAI
2085
2190
  :"30m",
2086
2191
  OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::PromptCacheOptions::Ttl::TaggedSymbol
2087
2192
  )
2193
+ TTL_12H = T.let(
2194
+ :"12h",
2195
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::PromptCacheOptions::Ttl::TaggedSymbol
2196
+ )
2088
2197
 
2089
2198
  sig {
2090
2199
  override.returns(
@@ -976,6 +976,32 @@ module OpenAI
976
976
  sig { params(background: OpenAI::Beta::BetaTool::ImageGeneration::Background::OrSymbol).void }
977
977
  attr_writer :background
978
978
 
979
+ # Computation spent planning the image, independently of rendering quality.
980
+ # Overrides the outer response's `reasoning.effort` for image generation. When
981
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
982
+ # configured default. For SVG output, controls the reference image, not the SVG
983
+ # author's reasoning.
984
+ sig { returns(T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::Complexity::OrSymbol)) }
985
+ attr_reader :complexity
986
+
987
+ sig { params(complexity: OpenAI::Beta::BetaTool::ImageGeneration::Complexity::OrSymbol).void }
988
+ attr_writer :complexity
989
+
990
+ # Number of GIF frames. Requires `output_format` to be `gif`. Default: 9.
991
+ sig { returns(T.nilable(Integer)) }
992
+ attr_reader :frame_count
993
+
994
+ sig { params(frame_count: Integer).void }
995
+ attr_writer :frame_count
996
+
997
+ # Duration of each GIF frame in milliseconds, rounded to 10 ms. Requires
998
+ # `output_format` to be `gif`. Default: 200.
999
+ sig { returns(T.nilable(Integer)) }
1000
+ attr_reader :frame_duration_ms
1001
+
1002
+ sig { params(frame_duration_ms: Integer).void }
1003
+ attr_writer :frame_duration_ms
1004
+
979
1005
  # Control how much effort the model will exert to match the style and features,
980
1006
  # especially facial features, of input images. Supports `high` and `low` on
981
1007
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -994,8 +1020,8 @@ module OpenAI
994
1020
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
995
1021
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
996
1022
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
997
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
998
- # `gpt-image-2`.
1023
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1024
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
999
1025
  #
1000
1026
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1001
1027
  # `gpt-image-2.5-flare` instead.
@@ -1019,8 +1045,12 @@ module OpenAI
1019
1045
  sig { params(output_compression: Integer).void }
1020
1046
  attr_writer :output_compression
1021
1047
 
1022
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1023
- # Default: `png`.
1048
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
1049
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
1050
+ # selected format. GIF output does not support partial image streaming
1051
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
1052
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
1053
+ # output.
1024
1054
  sig { returns(T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::OutputFormat::OrSymbol)) }
1025
1055
  attr_reader :output_format
1026
1056
 
@@ -1061,6 +1091,16 @@ module OpenAI
1061
1091
  sig { params(size: T.any(String, OpenAI::Beta::BetaTool::ImageGeneration::Size::OrSymbol)).void }
1062
1092
  attr_writer :size
1063
1093
 
1094
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
1095
+ # selection is enabled, omitting this object uses the outer response model.
1096
+ # Otherwise, the default SVG author is used and explicit model overrides are
1097
+ # unavailable.
1098
+ sig { returns(T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::Svg)) }
1099
+ attr_reader :svg
1100
+
1101
+ sig { params(svg: OpenAI::Beta::BetaTool::ImageGeneration::Svg::OrHash).void }
1102
+ attr_writer :svg
1103
+
1064
1104
  # A tool that generates images using the GPT image models.
1065
1105
  sig do
1066
1106
  params(
@@ -1069,6 +1109,12 @@ module OpenAI
1069
1109
 
1070
1110
  background: OpenAI::Beta::BetaTool::ImageGeneration::Background::OrSymbol,
1071
1111
 
1112
+ complexity: OpenAI::Beta::BetaTool::ImageGeneration::Complexity::OrSymbol,
1113
+
1114
+ frame_count: Integer,
1115
+
1116
+ frame_duration_ms: Integer,
1117
+
1072
1118
  input_fidelity: T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::InputFidelity::OrSymbol),
1073
1119
 
1074
1120
  input_image_mask: OpenAI::Beta::BetaTool::ImageGeneration::InputImageMask::OrHash,
@@ -1087,6 +1133,8 @@ module OpenAI
1087
1133
 
1088
1134
  size: T.any(String, OpenAI::Beta::BetaTool::ImageGeneration::Size::OrSymbol),
1089
1135
 
1136
+ svg: OpenAI::Beta::BetaTool::ImageGeneration::Svg::OrHash,
1137
+
1090
1138
  type: Symbol
1091
1139
  )
1092
1140
  .returns(T.attached_class)
@@ -1107,6 +1155,20 @@ module OpenAI
1107
1155
  # set the output format to `png` or `webp`.
1108
1156
  background: nil,
1109
1157
 
1158
+ # Computation spent planning the image, independently of rendering quality.
1159
+ # Overrides the outer response's `reasoning.effort` for image generation. When
1160
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
1161
+ # configured default. For SVG output, controls the reference image, not the SVG
1162
+ # author's reasoning.
1163
+ complexity: nil,
1164
+
1165
+ # Number of GIF frames. Requires `output_format` to be `gif`. Default: 9.
1166
+ frame_count: nil,
1167
+
1168
+ # Duration of each GIF frame in milliseconds, rounded to 10 ms. Requires
1169
+ # `output_format` to be `gif`. Default: 200.
1170
+ frame_duration_ms: nil,
1171
+
1110
1172
  # Control how much effort the model will exert to match the style and features,
1111
1173
  # especially facial features, of input images. Supports `high` and `low` on
1112
1174
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -1120,8 +1182,8 @@ module OpenAI
1120
1182
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
1121
1183
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
1122
1184
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
1123
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
1124
- # `gpt-image-2`.
1185
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1186
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
1125
1187
  #
1126
1188
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1127
1189
  # `gpt-image-2.5-flare` instead.
@@ -1133,8 +1195,12 @@ module OpenAI
1133
1195
  # Compression level for the output image. Default: 100.
1134
1196
  output_compression: nil,
1135
1197
 
1136
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1137
- # Default: `png`.
1198
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
1199
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
1200
+ # selected format. GIF output does not support partial image streaming
1201
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
1202
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
1203
+ # output.
1138
1204
  output_format: nil,
1139
1205
 
1140
1206
  # Number of partial images to generate in streaming mode, from 0 (default value)
@@ -1159,6 +1225,12 @@ module OpenAI
1159
1225
  # `auto` is supported for models that allow automatic sizing.
1160
1226
  size: nil,
1161
1227
 
1228
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
1229
+ # selection is enabled, omitting this object uses the outer response model.
1230
+ # Otherwise, the default SVG author is used and explicit model overrides are
1231
+ # unavailable.
1232
+ svg: nil,
1233
+
1162
1234
  # The type of the image generation tool. Always `image_generation`.
1163
1235
 
1164
1236
  type: :image_generation
@@ -1171,6 +1243,9 @@ module OpenAI
1171
1243
  type: Symbol,
1172
1244
  action: OpenAI::Beta::BetaTool::ImageGeneration::Action::OrSymbol,
1173
1245
  background: OpenAI::Beta::BetaTool::ImageGeneration::Background::OrSymbol,
1246
+ complexity: OpenAI::Beta::BetaTool::ImageGeneration::Complexity::OrSymbol,
1247
+ frame_count: Integer,
1248
+ frame_duration_ms: Integer,
1174
1249
  input_fidelity: T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::InputFidelity::OrSymbol),
1175
1250
  input_image_mask: OpenAI::Beta::BetaTool::ImageGeneration::InputImageMask,
1176
1251
  model: T.any(String, OpenAI::Beta::BetaTool::ImageGeneration::Model::OrSymbol),
@@ -1179,7 +1254,8 @@ module OpenAI
1179
1254
  output_format: OpenAI::Beta::BetaTool::ImageGeneration::OutputFormat::OrSymbol,
1180
1255
  partial_images: Integer,
1181
1256
  quality: OpenAI::Beta::BetaTool::ImageGeneration::Quality::OrSymbol,
1182
- size: T.any(String, OpenAI::Beta::BetaTool::ImageGeneration::Size::OrSymbol)
1257
+ size: T.any(String, OpenAI::Beta::BetaTool::ImageGeneration::Size::OrSymbol),
1258
+ svg: OpenAI::Beta::BetaTool::ImageGeneration::Svg
1183
1259
  }
1184
1260
  )
1185
1261
  end
@@ -1226,6 +1302,26 @@ module OpenAI
1226
1302
  end
1227
1303
  end
1228
1304
 
1305
+ # Computation spent planning the image, independently of rendering quality.
1306
+ # Overrides the outer response's `reasoning.effort` for image generation. When
1307
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
1308
+ # configured default. For SVG output, controls the reference image, not the SVG
1309
+ # author's reasoning.
1310
+ module Complexity
1311
+ extend OpenAI::Internal::Type::Enum
1312
+
1313
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Beta::BetaTool::ImageGeneration::Complexity) }
1314
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1315
+
1316
+ LOW = T.let(:low, OpenAI::Beta::BetaTool::ImageGeneration::Complexity::TaggedSymbol)
1317
+ MEDIUM = T.let(:medium, OpenAI::Beta::BetaTool::ImageGeneration::Complexity::TaggedSymbol)
1318
+ HIGH = T.let(:high, OpenAI::Beta::BetaTool::ImageGeneration::Complexity::TaggedSymbol)
1319
+
1320
+ sig { override.returns(T::Array[OpenAI::Beta::BetaTool::ImageGeneration::Complexity::TaggedSymbol]) }
1321
+ def self.values
1322
+ end
1323
+ end
1324
+
1229
1325
  # Control how much effort the model will exert to match the style and features,
1230
1326
  # especially facial features, of input images. Supports `high` and `low` on
1231
1327
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -1301,8 +1397,8 @@ module OpenAI
1301
1397
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
1302
1398
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
1303
1399
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
1304
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
1305
- # `gpt-image-2`.
1400
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1401
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
1306
1402
  #
1307
1403
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1308
1404
  # `gpt-image-2.5-flare` instead.
@@ -1344,6 +1440,14 @@ module OpenAI
1344
1440
  :"gpt-image-2.5-flare-2026-09-08",
1345
1441
  OpenAI::Beta::BetaTool::ImageGeneration::Model::TaggedSymbol
1346
1442
  )
1443
+ GPT_IMAGE_2_6_SUNBURST = T.let(
1444
+ :"gpt-image-2.6-sunburst",
1445
+ OpenAI::Beta::BetaTool::ImageGeneration::Model::TaggedSymbol
1446
+ )
1447
+ GPT_IMAGE_2_6_FLARE = T.let(
1448
+ :"gpt-image-2.6-flare",
1449
+ OpenAI::Beta::BetaTool::ImageGeneration::Model::TaggedSymbol
1450
+ )
1347
1451
  GPT_IMAGE_1_5 = T.let(:"gpt-image-1.5", OpenAI::Beta::BetaTool::ImageGeneration::Model::TaggedSymbol)
1348
1452
  CHATGPT_IMAGE_LATEST = T.let(
1349
1453
  :"chatgpt-image-latest",
@@ -1367,8 +1471,12 @@ module OpenAI
1367
1471
  end
1368
1472
  end
1369
1473
 
1370
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1371
- # Default: `png`.
1474
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
1475
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
1476
+ # selected format. GIF output does not support partial image streaming
1477
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
1478
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
1479
+ # output.
1372
1480
  module OutputFormat
1373
1481
  extend OpenAI::Internal::Type::Enum
1374
1482
 
@@ -1378,6 +1486,8 @@ module OpenAI
1378
1486
  PNG = T.let(:png, OpenAI::Beta::BetaTool::ImageGeneration::OutputFormat::TaggedSymbol)
1379
1487
  WEBP = T.let(:webp, OpenAI::Beta::BetaTool::ImageGeneration::OutputFormat::TaggedSymbol)
1380
1488
  JPEG = T.let(:jpeg, OpenAI::Beta::BetaTool::ImageGeneration::OutputFormat::TaggedSymbol)
1489
+ GIF = T.let(:gif, OpenAI::Beta::BetaTool::ImageGeneration::OutputFormat::TaggedSymbol)
1490
+ SVG = T.let(:svg, OpenAI::Beta::BetaTool::ImageGeneration::OutputFormat::TaggedSymbol)
1381
1491
 
1382
1492
  sig { override.returns(T::Array[OpenAI::Beta::BetaTool::ImageGeneration::OutputFormat::TaggedSymbol]) }
1383
1493
  def self.values
@@ -1437,6 +1547,128 @@ module OpenAI
1437
1547
  AUTO = T.let(:auto, OpenAI::Beta::BetaTool::ImageGeneration::Size::TaggedSymbol)
1438
1548
 
1439
1549
  end
1550
+
1551
+ class Svg < OpenAI::Internal::Type::BaseModel
1552
+ OrHash = T.type_alias do
1553
+ T.any(
1554
+ OpenAI::Beta::BetaTool::ImageGeneration::Svg,
1555
+ OpenAI::Internal::AnyHash
1556
+ )
1557
+ end
1558
+
1559
+ sig { returns(T.nilable(String)) }
1560
+ attr_reader :model
1561
+
1562
+ sig { params(model: String).void }
1563
+ attr_writer :model
1564
+
1565
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
1566
+ # default in both Images and Responses.
1567
+ sig { returns(T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning)) }
1568
+ attr_reader :reasoning
1569
+
1570
+ sig { params(reasoning: T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::OrHash)).void }
1571
+ attr_writer :reasoning
1572
+
1573
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
1574
+ # selection is enabled, omitting this object uses the outer response model.
1575
+ # Otherwise, the default SVG author is used and explicit model overrides are
1576
+ # unavailable.
1577
+ sig do
1578
+ params(
1579
+
1580
+ model: String,
1581
+
1582
+ reasoning: T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::OrHash)
1583
+ )
1584
+ .returns(T.attached_class)
1585
+ end
1586
+ def self.new(
1587
+
1588
+ model: nil,
1589
+
1590
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
1591
+ # default in both Images and Responses.
1592
+
1593
+ reasoning: nil
1594
+ )
1595
+ end
1596
+
1597
+ sig do
1598
+ override.returns(
1599
+ {model: String, reasoning: T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning)}
1600
+ )
1601
+ end
1602
+ def to_hash
1603
+ end
1604
+
1605
+ class Reasoning < OpenAI::Internal::Type::BaseModel
1606
+ OrHash = T.type_alias do
1607
+ T.any(
1608
+ OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning,
1609
+ OpenAI::Internal::AnyHash
1610
+ )
1611
+ end
1612
+
1613
+ # Controls how much effort the model should spend on reasoning for this request.
1614
+ sig { returns(T.nilable(OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol)) }
1615
+ attr_reader :effort
1616
+
1617
+ sig { params(effort: OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol).void }
1618
+ attr_writer :effort
1619
+
1620
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
1621
+ # default in both Images and Responses.
1622
+ sig do
1623
+ params(
1624
+
1625
+ effort: OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol
1626
+ )
1627
+ .returns(T.attached_class)
1628
+ end
1629
+ def self.new(
1630
+
1631
+ # Controls how much effort the model should spend on reasoning for this request.
1632
+
1633
+ effort: nil
1634
+ )
1635
+ end
1636
+
1637
+ sig do
1638
+ override.returns(
1639
+ {effort: OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol}
1640
+ )
1641
+ end
1642
+ def to_hash
1643
+ end
1644
+
1645
+ # Controls how much effort the model should spend on reasoning for this request.
1646
+ module Effort
1647
+ extend OpenAI::Internal::Type::Enum
1648
+
1649
+ TaggedSymbol = T.type_alias {
1650
+ T.all(Symbol, OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort)
1651
+ }
1652
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1653
+
1654
+ NONE = T.let(:none, OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1655
+ MINIMAL = T.let(:minimal, OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1656
+ LOW = T.let(:low, OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1657
+ MEDIUM = T.let(:medium, OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1658
+ HIGH = T.let(:high, OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1659
+ XHIGH = T.let(:xhigh, OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1660
+ MAX = T.let(:max, OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1661
+
1662
+ sig {
1663
+ override.returns(
1664
+ T::Array[OpenAI::Beta::BetaTool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol]
1665
+ )
1666
+ }
1667
+ def self.values
1668
+ end
1669
+ end
1670
+ end
1671
+ end
1440
1672
  end
1441
1673
 
1442
1674
  class LocalShell < OpenAI::Internal::Type::BaseModel