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
@@ -65,6 +65,13 @@ module OpenAI
65
65
  sig { params(generate: T::Boolean).void }
66
66
  attr_writer :generate
67
67
 
68
+ # Request level image options.
69
+ sig { returns(T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image)) }
70
+ attr_reader :image
71
+
72
+ sig { params(image: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::OrHash).void }
73
+ attr_writer :image
74
+
68
75
  # Specify additional output data to include in the model response. Currently
69
76
  # supported values are:
70
77
  #
@@ -194,7 +201,7 @@ module OpenAI
194
201
  # request can write up to four breakpoints. For cache matching, OpenAI considers
195
202
  # up to the latest 80 breakpoints in the conversation, without a content-block
196
203
  # lookback limit. Set `mode` to `explicit` to disable the implicit breakpoint. The
197
- # `ttl` defaults to `30m`, which is currently the only supported value. See the
204
+ # `ttl` defaults to `30m`. Supported lifetimes depend on the API. See the
198
205
  # [prompt caching guide](https://developers.openai.com/api/docs/guides/prompt-caching)
199
206
  # for current details.
200
207
  sig { returns(T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::PromptCacheOptions)) }
@@ -507,6 +514,8 @@ module OpenAI
507
514
 
508
515
  generate: T::Boolean,
509
516
 
517
+ image: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::OrHash,
518
+
510
519
  include: T.nilable(T::Array[OpenAI::Responses::ResponseIncludable::OrSymbol]),
511
520
 
512
521
  input: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Input::Variants,
@@ -623,6 +632,9 @@ module OpenAI
623
632
  # used as previous_response_id on a later turn.
624
633
  generate: nil,
625
634
 
635
+ # Request level image options.
636
+ image: nil,
637
+
626
638
  # Specify additional output data to include in the model response. Currently
627
639
  # supported values are:
628
640
  #
@@ -714,7 +726,7 @@ module OpenAI
714
726
  # request can write up to four breakpoints. For cache matching, OpenAI considers
715
727
  # up to the latest 80 breakpoints in the conversation, without a content-block
716
728
  # lookback limit. Set `mode` to `explicit` to disable the implicit breakpoint. The
717
- # `ttl` defaults to `30m`, which is currently the only supported value. See the
729
+ # `ttl` defaults to `30m`. Supported lifetimes depend on the API. See the
718
730
  # [prompt caching guide](https://developers.openai.com/api/docs/guides/prompt-caching)
719
731
  # for current details.
720
732
  prompt_cache_options: nil,
@@ -887,6 +899,7 @@ module OpenAI
887
899
  ),
888
900
  conversation: T.nilable(T.any(String, OpenAI::Responses::ResponseConversationParam)),
889
901
  generate: T.nilable(T::Boolean),
902
+ image: T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image),
890
903
  include: T.nilable(T::Array[OpenAI::Responses::ResponseIncludable::OrSymbol]),
891
904
  input: T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Input::Variants),
892
905
  instructions: T.nilable(String),
@@ -1135,6 +1148,98 @@ module OpenAI
1135
1148
 
1136
1149
  end
1137
1150
 
1151
+ class Image < OpenAI::Internal::Type::BaseModel
1152
+ OrHash = T.type_alias do
1153
+ T.any(
1154
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image,
1155
+ OpenAI::Internal::AnyHash
1156
+ )
1157
+ end
1158
+
1159
+ # Controls image context optimization. Defaults to `auto`, which uses the model,
1160
+ # transport, and input to select a policy. Use `enabled` to require compression
1161
+ # support or `disabled` to turn it off.
1162
+ sig {
1163
+ returns(
1164
+ T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression::OrSymbol)
1165
+ )
1166
+ }
1167
+ attr_reader :context_compression
1168
+
1169
+ sig {
1170
+ params(
1171
+ context_compression: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression::OrSymbol
1172
+ )
1173
+ .void
1174
+ }
1175
+ attr_writer :context_compression
1176
+
1177
+ # Request level image options.
1178
+ sig do
1179
+ params(
1180
+
1181
+ context_compression: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression::OrSymbol
1182
+ )
1183
+ .returns(T.attached_class)
1184
+ end
1185
+ def self.new(
1186
+
1187
+ # Controls image context optimization. Defaults to `auto`, which uses the model,
1188
+ # transport, and input to select a policy. Use `enabled` to require compression
1189
+ # support or `disabled` to turn it off.
1190
+
1191
+ context_compression: nil
1192
+ )
1193
+ end
1194
+
1195
+ sig do
1196
+ override.returns(
1197
+ {
1198
+ context_compression: T.nilable(
1199
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression::OrSymbol
1200
+ )
1201
+ }
1202
+ )
1203
+ end
1204
+ def to_hash
1205
+ end
1206
+
1207
+ # Controls image context optimization. Defaults to `auto`, which uses the model,
1208
+ # transport, and input to select a policy. Use `enabled` to require compression
1209
+ # support or `disabled` to turn it off.
1210
+ module ContextCompression
1211
+ extend OpenAI::Internal::Type::Enum
1212
+
1213
+ TaggedSymbol = T.type_alias {
1214
+ T.all(Symbol, OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression)
1215
+ }
1216
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1217
+
1218
+ AUTO = T.let(
1219
+ :auto,
1220
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression::TaggedSymbol
1221
+ )
1222
+ ENABLED = T.let(
1223
+ :enabled,
1224
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression::TaggedSymbol
1225
+ )
1226
+ DISABLED = T.let(
1227
+ :disabled,
1228
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression::TaggedSymbol
1229
+ )
1230
+
1231
+ sig {
1232
+ override.returns(
1233
+ T::Array[
1234
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::Image::ContextCompression::TaggedSymbol
1235
+ ]
1236
+ )
1237
+ }
1238
+ def self.values
1239
+ end
1240
+ end
1241
+ end
1242
+
1138
1243
  # Text, image, or file inputs to the model, used to generate a response.
1139
1244
  #
1140
1245
  # Learn more:
@@ -1478,8 +1583,8 @@ module OpenAI
1478
1583
  attr_writer :prewarm
1479
1584
 
1480
1585
  # The minimum lifetime applied to every implicit and explicit cache breakpoint
1481
- # written by the request. Defaults to `30m`, which is currently the only supported
1482
- # value. The backend may retain cache entries for longer.
1586
+ # written by the request. Supported values are `30m` (the default) and `12h`. The
1587
+ # backend may retain cache entries for longer.
1483
1588
  sig {
1484
1589
  returns(
1485
1590
  T.nilable(OpenAI::Responses::ResponsesClientEvent::ResponseCreate::PromptCacheOptions::Ttl::OrSymbol)
@@ -1499,7 +1604,7 @@ module OpenAI
1499
1604
  # request can write up to four breakpoints. For cache matching, OpenAI considers
1500
1605
  # up to the latest 80 breakpoints in the conversation, without a content-block
1501
1606
  # lookback limit. Set `mode` to `explicit` to disable the implicit breakpoint. The
1502
- # `ttl` defaults to `30m`, which is currently the only supported value. See the
1607
+ # `ttl` defaults to `30m`. Supported lifetimes depend on the API. See the
1503
1608
  # [prompt caching guide](https://developers.openai.com/api/docs/guides/prompt-caching)
1504
1609
  # for current details.
1505
1610
  sig do
@@ -1534,8 +1639,8 @@ module OpenAI
1534
1639
  prewarm: nil,
1535
1640
 
1536
1641
  # The minimum lifetime applied to every implicit and explicit cache breakpoint
1537
- # written by the request. Defaults to `30m`, which is currently the only supported
1538
- # value. The backend may retain cache entries for longer.
1642
+ # written by the request. Supported values are `30m` (the default) and `12h`. The
1643
+ # backend may retain cache entries for longer.
1539
1644
 
1540
1645
  ttl: nil
1541
1646
  )
@@ -1593,8 +1698,8 @@ module OpenAI
1593
1698
  end
1594
1699
 
1595
1700
  # The minimum lifetime applied to every implicit and explicit cache breakpoint
1596
- # written by the request. Defaults to `30m`, which is currently the only supported
1597
- # value. The backend may retain cache entries for longer.
1701
+ # written by the request. Supported values are `30m` (the default) and `12h`. The
1702
+ # backend may retain cache entries for longer.
1598
1703
  module Ttl
1599
1704
  extend OpenAI::Internal::Type::Enum
1600
1705
 
@@ -1607,6 +1712,10 @@ module OpenAI
1607
1712
  :"30m",
1608
1713
  OpenAI::Responses::ResponsesClientEvent::ResponseCreate::PromptCacheOptions::Ttl::TaggedSymbol
1609
1714
  )
1715
+ TTL_12H = T.let(
1716
+ :"12h",
1717
+ OpenAI::Responses::ResponsesClientEvent::ResponseCreate::PromptCacheOptions::Ttl::TaggedSymbol
1718
+ )
1610
1719
 
1611
1720
  sig {
1612
1721
  override.returns(
@@ -977,6 +977,32 @@ module OpenAI
977
977
  sig { params(background: OpenAI::Responses::Tool::ImageGeneration::Background::OrSymbol).void }
978
978
  attr_writer :background
979
979
 
980
+ # Computation spent planning the image, independently of rendering quality.
981
+ # Overrides the outer response's `reasoning.effort` for image generation. When
982
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
983
+ # configured default. For SVG output, controls the reference image, not the SVG
984
+ # author's reasoning.
985
+ sig { returns(T.nilable(OpenAI::Responses::Tool::ImageGeneration::Complexity::OrSymbol)) }
986
+ attr_reader :complexity
987
+
988
+ sig { params(complexity: OpenAI::Responses::Tool::ImageGeneration::Complexity::OrSymbol).void }
989
+ attr_writer :complexity
990
+
991
+ # Number of GIF frames. Requires `output_format` to be `gif`. Default: 9.
992
+ sig { returns(T.nilable(Integer)) }
993
+ attr_reader :frame_count
994
+
995
+ sig { params(frame_count: Integer).void }
996
+ attr_writer :frame_count
997
+
998
+ # Duration of each GIF frame in milliseconds, rounded to 10 ms. Requires
999
+ # `output_format` to be `gif`. Default: 200.
1000
+ sig { returns(T.nilable(Integer)) }
1001
+ attr_reader :frame_duration_ms
1002
+
1003
+ sig { params(frame_duration_ms: Integer).void }
1004
+ attr_writer :frame_duration_ms
1005
+
980
1006
  # Control how much effort the model will exert to match the style and features,
981
1007
  # especially facial features, of input images. Supports `high` and `low` on
982
1008
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -995,8 +1021,8 @@ module OpenAI
995
1021
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
996
1022
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
997
1023
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
998
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
999
- # `gpt-image-2`.
1024
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1025
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
1000
1026
  #
1001
1027
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1002
1028
  # `gpt-image-2.5-flare` instead.
@@ -1020,8 +1046,12 @@ module OpenAI
1020
1046
  sig { params(output_compression: Integer).void }
1021
1047
  attr_writer :output_compression
1022
1048
 
1023
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1024
- # Default: `png`.
1049
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
1050
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
1051
+ # selected format. GIF output does not support partial image streaming
1052
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
1053
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
1054
+ # output.
1025
1055
  sig { returns(T.nilable(OpenAI::Responses::Tool::ImageGeneration::OutputFormat::OrSymbol)) }
1026
1056
  attr_reader :output_format
1027
1057
 
@@ -1062,6 +1092,16 @@ module OpenAI
1062
1092
  sig { params(size: T.any(String, OpenAI::Responses::Tool::ImageGeneration::Size::OrSymbol)).void }
1063
1093
  attr_writer :size
1064
1094
 
1095
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
1096
+ # selection is enabled, omitting this object uses the outer response model.
1097
+ # Otherwise, the default SVG author is used and explicit model overrides are
1098
+ # unavailable.
1099
+ sig { returns(T.nilable(OpenAI::Responses::Tool::ImageGeneration::Svg)) }
1100
+ attr_reader :svg
1101
+
1102
+ sig { params(svg: OpenAI::Responses::Tool::ImageGeneration::Svg::OrHash).void }
1103
+ attr_writer :svg
1104
+
1065
1105
  # A tool that generates images using the GPT image models.
1066
1106
  sig do
1067
1107
  params(
@@ -1070,6 +1110,12 @@ module OpenAI
1070
1110
 
1071
1111
  background: OpenAI::Responses::Tool::ImageGeneration::Background::OrSymbol,
1072
1112
 
1113
+ complexity: OpenAI::Responses::Tool::ImageGeneration::Complexity::OrSymbol,
1114
+
1115
+ frame_count: Integer,
1116
+
1117
+ frame_duration_ms: Integer,
1118
+
1073
1119
  input_fidelity: T.nilable(OpenAI::Responses::Tool::ImageGeneration::InputFidelity::OrSymbol),
1074
1120
 
1075
1121
  input_image_mask: OpenAI::Responses::Tool::ImageGeneration::InputImageMask::OrHash,
@@ -1088,6 +1134,8 @@ module OpenAI
1088
1134
 
1089
1135
  size: T.any(String, OpenAI::Responses::Tool::ImageGeneration::Size::OrSymbol),
1090
1136
 
1137
+ svg: OpenAI::Responses::Tool::ImageGeneration::Svg::OrHash,
1138
+
1091
1139
  type: Symbol
1092
1140
  )
1093
1141
  .returns(T.attached_class)
@@ -1108,6 +1156,20 @@ module OpenAI
1108
1156
  # set the output format to `png` or `webp`.
1109
1157
  background: nil,
1110
1158
 
1159
+ # Computation spent planning the image, independently of rendering quality.
1160
+ # Overrides the outer response's `reasoning.effort` for image generation. When
1161
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
1162
+ # configured default. For SVG output, controls the reference image, not the SVG
1163
+ # author's reasoning.
1164
+ complexity: nil,
1165
+
1166
+ # Number of GIF frames. Requires `output_format` to be `gif`. Default: 9.
1167
+ frame_count: nil,
1168
+
1169
+ # Duration of each GIF frame in milliseconds, rounded to 10 ms. Requires
1170
+ # `output_format` to be `gif`. Default: 200.
1171
+ frame_duration_ms: nil,
1172
+
1111
1173
  # Control how much effort the model will exert to match the style and features,
1112
1174
  # especially facial features, of input images. Supports `high` and `low` on
1113
1175
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -1121,8 +1183,8 @@ module OpenAI
1121
1183
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
1122
1184
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
1123
1185
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
1124
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
1125
- # `gpt-image-2`.
1186
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1187
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
1126
1188
  #
1127
1189
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1128
1190
  # `gpt-image-2.5-flare` instead.
@@ -1134,8 +1196,12 @@ module OpenAI
1134
1196
  # Compression level for the output image. Default: 100.
1135
1197
  output_compression: nil,
1136
1198
 
1137
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1138
- # Default: `png`.
1199
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
1200
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
1201
+ # selected format. GIF output does not support partial image streaming
1202
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
1203
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
1204
+ # output.
1139
1205
  output_format: nil,
1140
1206
 
1141
1207
  # Number of partial images to generate in streaming mode, from 0 (default value)
@@ -1160,6 +1226,12 @@ module OpenAI
1160
1226
  # `auto` is supported for models that allow automatic sizing.
1161
1227
  size: nil,
1162
1228
 
1229
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
1230
+ # selection is enabled, omitting this object uses the outer response model.
1231
+ # Otherwise, the default SVG author is used and explicit model overrides are
1232
+ # unavailable.
1233
+ svg: nil,
1234
+
1163
1235
  # The type of the image generation tool. Always `image_generation`.
1164
1236
 
1165
1237
  type: :image_generation
@@ -1172,6 +1244,9 @@ module OpenAI
1172
1244
  type: Symbol,
1173
1245
  action: OpenAI::Responses::Tool::ImageGeneration::Action::OrSymbol,
1174
1246
  background: OpenAI::Responses::Tool::ImageGeneration::Background::OrSymbol,
1247
+ complexity: OpenAI::Responses::Tool::ImageGeneration::Complexity::OrSymbol,
1248
+ frame_count: Integer,
1249
+ frame_duration_ms: Integer,
1175
1250
  input_fidelity: T.nilable(OpenAI::Responses::Tool::ImageGeneration::InputFidelity::OrSymbol),
1176
1251
  input_image_mask: OpenAI::Responses::Tool::ImageGeneration::InputImageMask,
1177
1252
  model: T.any(String, OpenAI::Responses::Tool::ImageGeneration::Model::OrSymbol),
@@ -1180,7 +1255,8 @@ module OpenAI
1180
1255
  output_format: OpenAI::Responses::Tool::ImageGeneration::OutputFormat::OrSymbol,
1181
1256
  partial_images: Integer,
1182
1257
  quality: OpenAI::Responses::Tool::ImageGeneration::Quality::OrSymbol,
1183
- size: T.any(String, OpenAI::Responses::Tool::ImageGeneration::Size::OrSymbol)
1258
+ size: T.any(String, OpenAI::Responses::Tool::ImageGeneration::Size::OrSymbol),
1259
+ svg: OpenAI::Responses::Tool::ImageGeneration::Svg
1184
1260
  }
1185
1261
  )
1186
1262
  end
@@ -1227,6 +1303,26 @@ module OpenAI
1227
1303
  end
1228
1304
  end
1229
1305
 
1306
+ # Computation spent planning the image, independently of rendering quality.
1307
+ # Overrides the outer response's `reasoning.effort` for image generation. When
1308
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
1309
+ # configured default. For SVG output, controls the reference image, not the SVG
1310
+ # author's reasoning.
1311
+ module Complexity
1312
+ extend OpenAI::Internal::Type::Enum
1313
+
1314
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Responses::Tool::ImageGeneration::Complexity) }
1315
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1316
+
1317
+ LOW = T.let(:low, OpenAI::Responses::Tool::ImageGeneration::Complexity::TaggedSymbol)
1318
+ MEDIUM = T.let(:medium, OpenAI::Responses::Tool::ImageGeneration::Complexity::TaggedSymbol)
1319
+ HIGH = T.let(:high, OpenAI::Responses::Tool::ImageGeneration::Complexity::TaggedSymbol)
1320
+
1321
+ sig { override.returns(T::Array[OpenAI::Responses::Tool::ImageGeneration::Complexity::TaggedSymbol]) }
1322
+ def self.values
1323
+ end
1324
+ end
1325
+
1230
1326
  # Control how much effort the model will exert to match the style and features,
1231
1327
  # especially facial features, of input images. Supports `high` and `low` on
1232
1328
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -1302,8 +1398,8 @@ module OpenAI
1302
1398
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
1303
1399
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
1304
1400
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
1305
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
1306
- # `gpt-image-2`.
1401
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1402
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
1307
1403
  #
1308
1404
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1309
1405
  # `gpt-image-2.5-flare` instead.
@@ -1345,6 +1441,14 @@ module OpenAI
1345
1441
  :"gpt-image-2.5-flare-2026-09-08",
1346
1442
  OpenAI::Responses::Tool::ImageGeneration::Model::TaggedSymbol
1347
1443
  )
1444
+ GPT_IMAGE_2_6_SUNBURST = T.let(
1445
+ :"gpt-image-2.6-sunburst",
1446
+ OpenAI::Responses::Tool::ImageGeneration::Model::TaggedSymbol
1447
+ )
1448
+ GPT_IMAGE_2_6_FLARE = T.let(
1449
+ :"gpt-image-2.6-flare",
1450
+ OpenAI::Responses::Tool::ImageGeneration::Model::TaggedSymbol
1451
+ )
1348
1452
  GPT_IMAGE_1_5 = T.let(:"gpt-image-1.5", OpenAI::Responses::Tool::ImageGeneration::Model::TaggedSymbol)
1349
1453
  CHATGPT_IMAGE_LATEST = T.let(
1350
1454
  :"chatgpt-image-latest",
@@ -1368,8 +1472,12 @@ module OpenAI
1368
1472
  end
1369
1473
  end
1370
1474
 
1371
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1372
- # Default: `png`.
1475
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
1476
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
1477
+ # selected format. GIF output does not support partial image streaming
1478
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
1479
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
1480
+ # output.
1373
1481
  module OutputFormat
1374
1482
  extend OpenAI::Internal::Type::Enum
1375
1483
 
@@ -1379,6 +1487,8 @@ module OpenAI
1379
1487
  PNG = T.let(:png, OpenAI::Responses::Tool::ImageGeneration::OutputFormat::TaggedSymbol)
1380
1488
  WEBP = T.let(:webp, OpenAI::Responses::Tool::ImageGeneration::OutputFormat::TaggedSymbol)
1381
1489
  JPEG = T.let(:jpeg, OpenAI::Responses::Tool::ImageGeneration::OutputFormat::TaggedSymbol)
1490
+ GIF = T.let(:gif, OpenAI::Responses::Tool::ImageGeneration::OutputFormat::TaggedSymbol)
1491
+ SVG = T.let(:svg, OpenAI::Responses::Tool::ImageGeneration::OutputFormat::TaggedSymbol)
1382
1492
 
1383
1493
  sig { override.returns(T::Array[OpenAI::Responses::Tool::ImageGeneration::OutputFormat::TaggedSymbol]) }
1384
1494
  def self.values
@@ -1438,6 +1548,131 @@ module OpenAI
1438
1548
  AUTO = T.let(:auto, OpenAI::Responses::Tool::ImageGeneration::Size::TaggedSymbol)
1439
1549
 
1440
1550
  end
1551
+
1552
+ class Svg < OpenAI::Internal::Type::BaseModel
1553
+ OrHash = T.type_alias do
1554
+ T.any(
1555
+ OpenAI::Responses::Tool::ImageGeneration::Svg,
1556
+ OpenAI::Internal::AnyHash
1557
+ )
1558
+ end
1559
+
1560
+ sig { returns(T.nilable(String)) }
1561
+ attr_reader :model
1562
+
1563
+ sig { params(model: String).void }
1564
+ attr_writer :model
1565
+
1566
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
1567
+ # default in both Images and Responses.
1568
+ sig { returns(T.nilable(OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning)) }
1569
+ attr_reader :reasoning
1570
+
1571
+ sig { params(reasoning: T.nilable(OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::OrHash)).void }
1572
+ attr_writer :reasoning
1573
+
1574
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
1575
+ # selection is enabled, omitting this object uses the outer response model.
1576
+ # Otherwise, the default SVG author is used and explicit model overrides are
1577
+ # unavailable.
1578
+ sig do
1579
+ params(
1580
+
1581
+ model: String,
1582
+
1583
+ reasoning: T.nilable(OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::OrHash)
1584
+ )
1585
+ .returns(T.attached_class)
1586
+ end
1587
+ def self.new(
1588
+
1589
+ model: nil,
1590
+
1591
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
1592
+ # default in both Images and Responses.
1593
+
1594
+ reasoning: nil
1595
+ )
1596
+ end
1597
+
1598
+ sig do
1599
+ override.returns(
1600
+ {model: String, reasoning: T.nilable(OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning)}
1601
+ )
1602
+ end
1603
+ def to_hash
1604
+ end
1605
+
1606
+ class Reasoning < OpenAI::Internal::Type::BaseModel
1607
+ OrHash = T.type_alias do
1608
+ T.any(
1609
+ OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning,
1610
+ OpenAI::Internal::AnyHash
1611
+ )
1612
+ end
1613
+
1614
+ # Controls how much effort the model should spend on reasoning for this request.
1615
+ sig { returns(T.nilable(OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol)) }
1616
+ attr_reader :effort
1617
+
1618
+ sig { params(effort: OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol).void }
1619
+ attr_writer :effort
1620
+
1621
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
1622
+ # default in both Images and Responses.
1623
+ sig do
1624
+ params(
1625
+
1626
+ effort: OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol
1627
+ )
1628
+ .returns(T.attached_class)
1629
+ end
1630
+ def self.new(
1631
+
1632
+ # Controls how much effort the model should spend on reasoning for this request.
1633
+
1634
+ effort: nil
1635
+ )
1636
+ end
1637
+
1638
+ sig do
1639
+ override.returns(
1640
+ {effort: OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol}
1641
+ )
1642
+ end
1643
+ def to_hash
1644
+ end
1645
+
1646
+ # Controls how much effort the model should spend on reasoning for this request.
1647
+ module Effort
1648
+ extend OpenAI::Internal::Type::Enum
1649
+
1650
+ TaggedSymbol = T.type_alias {
1651
+ T.all(Symbol, OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort)
1652
+ }
1653
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1654
+
1655
+ NONE = T.let(:none, OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1656
+ MINIMAL = T.let(
1657
+ :minimal,
1658
+ OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
1659
+ )
1660
+ LOW = T.let(:low, OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1661
+ MEDIUM = T.let(:medium, OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1662
+ HIGH = T.let(:high, OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1663
+ XHIGH = T.let(:xhigh, OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1664
+ MAX = T.let(:max, OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol)
1665
+
1666
+ sig {
1667
+ override.returns(
1668
+ T::Array[OpenAI::Responses::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol]
1669
+ )
1670
+ }
1671
+ def self.values
1672
+ end
1673
+ end
1674
+ end
1675
+ end
1441
1676
  end
1442
1677
 
1443
1678
  class LocalShell < OpenAI::Internal::Type::BaseModel
@@ -64,6 +64,7 @@ module OpenAI
64
64
  :"gpt-rosalind-research",
65
65
  OpenAI::ResponsesModel::ResponsesOnlyModel::TaggedSymbol
66
66
  )
67
+ GPT_6_ROSALIND = T.let(:"gpt-6-rosalind", OpenAI::ResponsesModel::ResponsesOnlyModel::TaggedSymbol)
67
68
 
68
69
  sig { override.returns(T::Array[OpenAI::ResponsesModel::ResponsesOnlyModel::TaggedSymbol]) }
69
70
  def self.values
@@ -0,0 +1,67 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Resources
5
+
6
+ class Admin
7
+
8
+ class Organization
9
+
10
+ class Projects
11
+
12
+ class ServiceTierSettings
13
+
14
+ # Retrieve the configured default and enabled service tiers for a project.
15
+ sig {
16
+ params(project_id: String, request_options: OpenAI::RequestOptions::OrHash).returns(
17
+ OpenAI::Admin::Organization::Projects::ProjectServiceTierSettings
18
+ )
19
+ }
20
+ def retrieve(
21
+ # The ID of the project
22
+ project_id,
23
+ request_options: {}
24
+ )
25
+ end
26
+
27
+ # Update the default or enabled service tiers atomically. Supply at least one
28
+ # field. Omitted fields keep their current values.
29
+ sig {
30
+ params(
31
+ project_id: String,
32
+ default: OpenAI::Admin::Organization::Projects::ServiceTierSettingUpdateParams::Default::OrSymbol,
33
+ enabled_tiers: T.any(
34
+ Symbol,
35
+ T::Array[OpenAI::Admin::Organization::Projects::ProjectOptionalServiceTier::OrSymbol]
36
+ ),
37
+ request_options: OpenAI::RequestOptions::OrHash
38
+ )
39
+ .returns(OpenAI::Admin::Organization::Projects::ProjectServiceTierSettings)
40
+ }
41
+ def update(
42
+ # The ID of the project
43
+ project_id,
44
+ # Default tier for requests that omit service_tier or use auto.
45
+ default: nil,
46
+ # Additional service tiers enabled for this project. "all" includes future tiers.
47
+ # An empty array allows only Standard. Organization policy and eligibility still
48
+ # apply.
49
+ enabled_tiers: nil,
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ # @api private
55
+ sig { params(client: OpenAI::Client).returns(T.attached_class) }
56
+ def self.new(client:)
57
+ end
58
+ end
59
+
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+ end
@@ -24,6 +24,9 @@ module OpenAI
24
24
  sig { returns(OpenAI::Resources::Admin::Organization::Projects::ModelPermissions) }
25
25
  attr_reader :model_permissions
26
26
 
27
+ sig { returns(OpenAI::Resources::Admin::Organization::Projects::ServiceTierSettings) }
28
+ attr_reader :service_tier_settings
29
+
27
30
  sig { returns(OpenAI::Resources::Admin::Organization::Projects::HostedToolPermissions) }
28
31
  attr_reader :hosted_tool_permissions
29
32