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
@@ -1483,6 +1483,12 @@ module OpenAI
1483
1483
  sig { returns(T.nilable(OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Size::Variants)) }
1484
1484
  attr_accessor :size
1485
1485
 
1486
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::SvgUsage)) }
1487
+ attr_reader :svg_usage
1488
+
1489
+ sig { params(svg_usage: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::SvgUsage::OrHash).void }
1490
+ attr_writer :svg_usage
1491
+
1486
1492
  # An image generation request made by the model.
1487
1493
  sig do
1488
1494
  params(
@@ -1511,6 +1517,8 @@ module OpenAI
1511
1517
 
1512
1518
  size: T.nilable(T.any(String, OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Size::OrSymbol)),
1513
1519
 
1520
+ svg_usage: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::SvgUsage::OrHash,
1521
+
1514
1522
  type: Symbol
1515
1523
  )
1516
1524
  .returns(T.attached_class)
@@ -1551,6 +1559,8 @@ module OpenAI
1551
1559
  # The image dimensions as a `WIDTHxHEIGHT` string, for example `1536x864`.
1552
1560
  size: nil,
1553
1561
 
1562
+ svg_usage: nil,
1563
+
1554
1564
  # The type of the image generation call. Always `image_generation_call`.
1555
1565
 
1556
1566
  type: :image_generation_call
@@ -1575,7 +1585,8 @@ module OpenAI
1575
1585
  ),
1576
1586
  quality: T.nilable(OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Quality::TaggedSymbol),
1577
1587
  revised_prompt: T.nilable(String),
1578
- size: T.nilable(OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Size::Variants)
1588
+ size: T.nilable(OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Size::Variants),
1589
+ svg_usage: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::SvgUsage
1579
1590
  }
1580
1591
  )
1581
1592
  end
@@ -1889,6 +1900,8 @@ module OpenAI
1889
1900
  PNG = T.let(:png, OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::OutputFormat::TaggedSymbol)
1890
1901
  WEBP = T.let(:webp, OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::OutputFormat::TaggedSymbol)
1891
1902
  JPEG = T.let(:jpeg, OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::OutputFormat::TaggedSymbol)
1903
+ GIF = T.let(:gif, OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::OutputFormat::TaggedSymbol)
1904
+ SVG = T.let(:svg, OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::OutputFormat::TaggedSymbol)
1892
1905
 
1893
1906
  sig {
1894
1907
  override.returns(
@@ -1959,6 +1972,74 @@ module OpenAI
1959
1972
  )
1960
1973
 
1961
1974
  end
1975
+
1976
+ class SvgUsage < OpenAI::Internal::Type::BaseModel
1977
+ OrHash = T.type_alias do
1978
+ T.any(
1979
+ OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::SvgUsage,
1980
+ OpenAI::Internal::AnyHash
1981
+ )
1982
+ end
1983
+
1984
+ sig { returns(Integer) }
1985
+ attr_accessor :input_tokens
1986
+
1987
+ sig { returns(String) }
1988
+ attr_accessor :model
1989
+
1990
+ sig { returns(Integer) }
1991
+ attr_accessor :output_tokens
1992
+
1993
+ sig { returns(Integer) }
1994
+ attr_accessor :reasoning_tokens
1995
+
1996
+ sig { returns(Integer) }
1997
+ attr_accessor :total_tokens
1998
+
1999
+ sig do
2000
+ params(
2001
+
2002
+ input_tokens: Integer,
2003
+
2004
+ model: String,
2005
+
2006
+ output_tokens: Integer,
2007
+
2008
+ reasoning_tokens: Integer,
2009
+
2010
+ total_tokens: Integer
2011
+ )
2012
+ .returns(T.attached_class)
2013
+ end
2014
+ def self.new(
2015
+
2016
+ input_tokens:,
2017
+
2018
+ model:,
2019
+
2020
+ output_tokens:,
2021
+
2022
+ reasoning_tokens:,
2023
+
2024
+ total_tokens:
2025
+ )
2026
+ end
2027
+
2028
+ sig do
2029
+ override.returns(
2030
+ {
2031
+ input_tokens: Integer,
2032
+ model: String,
2033
+ output_tokens: Integer,
2034
+ reasoning_tokens: Integer,
2035
+ total_tokens: Integer
2036
+ }
2037
+ )
2038
+ end
2039
+ def to_hash
2040
+ end
2041
+
2042
+ end
1962
2043
  end
1963
2044
 
1964
2045
  class LocalShellCall < OpenAI::Internal::Type::BaseModel
@@ -1306,6 +1306,43 @@ module OpenAI
1306
1306
  }
1307
1307
  attr_writer :background
1308
1308
 
1309
+ # Computation spent planning the image, independently of rendering quality.
1310
+ # Overrides the outer response's `reasoning.effort` for image generation. When
1311
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
1312
+ # configured default. For SVG output, controls the reference image, not the SVG
1313
+ # author's reasoning.
1314
+ sig {
1315
+ returns(
1316
+ T.nilable(
1317
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity::OrSymbol
1318
+ )
1319
+ )
1320
+ }
1321
+ attr_reader :complexity
1322
+
1323
+ sig {
1324
+ params(
1325
+ complexity: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity::OrSymbol
1326
+ )
1327
+ .void
1328
+ }
1329
+ attr_writer :complexity
1330
+
1331
+ # Number of GIF frames. Requires `output_format` to be `gif`. Default: 9.
1332
+ sig { returns(T.nilable(Integer)) }
1333
+ attr_reader :frame_count
1334
+
1335
+ sig { params(frame_count: Integer).void }
1336
+ attr_writer :frame_count
1337
+
1338
+ # Duration of each GIF frame in milliseconds, rounded to 10 ms. Requires
1339
+ # `output_format` to be `gif`. Default: 200.
1340
+ sig { returns(T.nilable(Integer)) }
1341
+ attr_reader :frame_duration_ms
1342
+
1343
+ sig { params(frame_duration_ms: Integer).void }
1344
+ attr_writer :frame_duration_ms
1345
+
1309
1346
  # Control how much effort the model will exert to match the style and features,
1310
1347
  # especially facial features, of input images. Supports `high` and `low` on
1311
1348
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -1339,8 +1376,8 @@ module OpenAI
1339
1376
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
1340
1377
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
1341
1378
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
1342
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
1343
- # `gpt-image-2`.
1379
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1380
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
1344
1381
  #
1345
1382
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1346
1383
  # `gpt-image-2.5-flare` instead.
@@ -1392,8 +1429,12 @@ module OpenAI
1392
1429
  sig { params(output_compression: Integer).void }
1393
1430
  attr_writer :output_compression
1394
1431
 
1395
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1396
- # Default: `png`.
1432
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
1433
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
1434
+ # selected format. GIF output does not support partial image streaming
1435
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
1436
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
1437
+ # output.
1397
1438
  sig {
1398
1439
  returns(
1399
1440
  T.nilable(
@@ -1471,6 +1512,18 @@ module OpenAI
1471
1512
  }
1472
1513
  attr_writer :size
1473
1514
 
1515
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
1516
+ # selection is enabled, omitting this object uses the outer response model.
1517
+ # Otherwise, the default SVG author is used and explicit model overrides are
1518
+ # unavailable.
1519
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg)) }
1520
+ attr_reader :svg
1521
+
1522
+ sig {
1523
+ params(svg: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::OrHash).void
1524
+ }
1525
+ attr_writer :svg
1526
+
1474
1527
  # A tool that generates images using the GPT image models.
1475
1528
  sig do
1476
1529
  params(
@@ -1479,6 +1532,12 @@ module OpenAI
1479
1532
 
1480
1533
  background: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Background::OrSymbol,
1481
1534
 
1535
+ complexity: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity::OrSymbol,
1536
+
1537
+ frame_count: Integer,
1538
+
1539
+ frame_duration_ms: Integer,
1540
+
1482
1541
  input_fidelity: T.nilable(
1483
1542
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::InputFidelity::OrSymbol
1484
1543
  ),
@@ -1505,6 +1564,8 @@ module OpenAI
1505
1564
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size::OrSymbol
1506
1565
  ),
1507
1566
 
1567
+ svg: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::OrHash,
1568
+
1508
1569
  type: Symbol
1509
1570
  )
1510
1571
  .returns(T.attached_class)
@@ -1525,6 +1586,20 @@ module OpenAI
1525
1586
  # set the output format to `png` or `webp`.
1526
1587
  background: nil,
1527
1588
 
1589
+ # Computation spent planning the image, independently of rendering quality.
1590
+ # Overrides the outer response's `reasoning.effort` for image generation. When
1591
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
1592
+ # configured default. For SVG output, controls the reference image, not the SVG
1593
+ # author's reasoning.
1594
+ complexity: nil,
1595
+
1596
+ # Number of GIF frames. Requires `output_format` to be `gif`. Default: 9.
1597
+ frame_count: nil,
1598
+
1599
+ # Duration of each GIF frame in milliseconds, rounded to 10 ms. Requires
1600
+ # `output_format` to be `gif`. Default: 200.
1601
+ frame_duration_ms: nil,
1602
+
1528
1603
  # Control how much effort the model will exert to match the style and features,
1529
1604
  # especially facial features, of input images. Supports `high` and `low` on
1530
1605
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -1538,8 +1613,8 @@ module OpenAI
1538
1613
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
1539
1614
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
1540
1615
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
1541
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
1542
- # `gpt-image-2`.
1616
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1617
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
1543
1618
  #
1544
1619
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1545
1620
  # `gpt-image-2.5-flare` instead.
@@ -1551,8 +1626,12 @@ module OpenAI
1551
1626
  # Compression level for the output image. Default: 100.
1552
1627
  output_compression: nil,
1553
1628
 
1554
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1555
- # Default: `png`.
1629
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
1630
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
1631
+ # selected format. GIF output does not support partial image streaming
1632
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
1633
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
1634
+ # output.
1556
1635
  output_format: nil,
1557
1636
 
1558
1637
  # Number of partial images to generate in streaming mode, from 0 (default value)
@@ -1577,6 +1656,12 @@ module OpenAI
1577
1656
  # `auto` is supported for models that allow automatic sizing.
1578
1657
  size: nil,
1579
1658
 
1659
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
1660
+ # selection is enabled, omitting this object uses the outer response model.
1661
+ # Otherwise, the default SVG author is used and explicit model overrides are
1662
+ # unavailable.
1663
+ svg: nil,
1664
+
1580
1665
  # The type of the image generation tool. Always `image_generation`.
1581
1666
 
1582
1667
  type: :image_generation
@@ -1589,6 +1674,9 @@ module OpenAI
1589
1674
  type: Symbol,
1590
1675
  action: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Action::OrSymbol,
1591
1676
  background: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Background::OrSymbol,
1677
+ complexity: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity::OrSymbol,
1678
+ frame_count: Integer,
1679
+ frame_duration_ms: Integer,
1592
1680
  input_fidelity: T.nilable(
1593
1681
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::InputFidelity::OrSymbol
1594
1682
  ),
@@ -1605,7 +1693,8 @@ module OpenAI
1605
1693
  size: T.any(
1606
1694
  String,
1607
1695
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Size::OrSymbol
1608
- )
1696
+ ),
1697
+ svg: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg
1609
1698
  }
1610
1699
  )
1611
1700
  end
@@ -1686,6 +1775,43 @@ module OpenAI
1686
1775
  end
1687
1776
  end
1688
1777
 
1778
+ # Computation spent planning the image, independently of rendering quality.
1779
+ # Overrides the outer response's `reasoning.effort` for image generation. When
1780
+ # omitted, inherits a supported outer reasoning effort or uses the image model's
1781
+ # configured default. For SVG output, controls the reference image, not the SVG
1782
+ # author's reasoning.
1783
+ module Complexity
1784
+ extend OpenAI::Internal::Type::Enum
1785
+
1786
+ TaggedSymbol = T.type_alias {
1787
+ T.all(Symbol, OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity)
1788
+ }
1789
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1790
+
1791
+ LOW = T.let(
1792
+ :low,
1793
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity::TaggedSymbol
1794
+ )
1795
+ MEDIUM = T.let(
1796
+ :medium,
1797
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity::TaggedSymbol
1798
+ )
1799
+ HIGH = T.let(
1800
+ :high,
1801
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity::TaggedSymbol
1802
+ )
1803
+
1804
+ sig {
1805
+ override.returns(
1806
+ T::Array[
1807
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Complexity::TaggedSymbol
1808
+ ]
1809
+ )
1810
+ }
1811
+ def self.values
1812
+ end
1813
+ end
1814
+
1689
1815
  # Control how much effort the model will exert to match the style and features,
1690
1816
  # especially facial features, of input images. Supports `high` and `low` on
1691
1817
  # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
@@ -1775,8 +1901,8 @@ module OpenAI
1775
1901
  # The image generation model to use. One of `gpt-image-1-mini`, `gpt-image-1.5`,
1776
1902
  # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
1777
1903
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
1778
- # `gpt-image-2.5-flare-2026-09-08`, or `chatgpt-image-latest`. Default:
1779
- # `gpt-image-2`.
1904
+ # `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2.6-sunburst`,
1905
+ # `gpt-image-2.6-flare`, or `chatgpt-image-latest`. Default: `gpt-image-2`.
1780
1906
  #
1781
1907
  # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
1782
1908
  # `gpt-image-2.5-flare` instead.
@@ -1836,6 +1962,14 @@ module OpenAI
1836
1962
  :"gpt-image-2.5-flare-2026-09-08",
1837
1963
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::TaggedSymbol
1838
1964
  )
1965
+ GPT_IMAGE_2_6_SUNBURST = T.let(
1966
+ :"gpt-image-2.6-sunburst",
1967
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::TaggedSymbol
1968
+ )
1969
+ GPT_IMAGE_2_6_FLARE = T.let(
1970
+ :"gpt-image-2.6-flare",
1971
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::TaggedSymbol
1972
+ )
1839
1973
  GPT_IMAGE_1_5 = T.let(
1840
1974
  :"gpt-image-1.5",
1841
1975
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Model::TaggedSymbol
@@ -1876,8 +2010,12 @@ module OpenAI
1876
2010
  end
1877
2011
  end
1878
2012
 
1879
- # The output format of the generated image. One of `png`, `webp`, or `jpeg`.
1880
- # Default: `png`.
2013
+ # The output format of the generated image. One of `png`, `webp`, `jpeg`, `gif`,
2014
+ # or `svg`. Default: `png`. GIF and SVG output require a model that supports the
2015
+ # selected format. GIF output does not support partial image streaming
2016
+ # (`partial_images` greater than `0`), `input_image_mask`, or custom
2017
+ # `output_compression`. Responses lifecycle events can still be streamed for GIF
2018
+ # output.
1881
2019
  module OutputFormat
1882
2020
  extend OpenAI::Internal::Type::Enum
1883
2021
 
@@ -1898,6 +2036,14 @@ module OpenAI
1898
2036
  :jpeg,
1899
2037
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::OutputFormat::TaggedSymbol
1900
2038
  )
2039
+ GIF = T.let(
2040
+ :gif,
2041
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::OutputFormat::TaggedSymbol
2042
+ )
2043
+ SVG = T.let(
2044
+ :svg,
2045
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::OutputFormat::TaggedSymbol
2046
+ )
1901
2047
 
1902
2048
  sig {
1903
2049
  override.returns(
@@ -2010,6 +2156,185 @@ module OpenAI
2010
2156
  )
2011
2157
 
2012
2158
  end
2159
+
2160
+ class Svg < OpenAI::Internal::Type::BaseModel
2161
+ OrHash = T.type_alias do
2162
+ T.any(
2163
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg,
2164
+ OpenAI::Internal::AnyHash
2165
+ )
2166
+ end
2167
+
2168
+ sig { returns(T.nilable(String)) }
2169
+ attr_reader :model
2170
+
2171
+ sig { params(model: String).void }
2172
+ attr_writer :model
2173
+
2174
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
2175
+ # default in both Images and Responses.
2176
+ sig {
2177
+ returns(
2178
+ T.nilable(OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning)
2179
+ )
2180
+ }
2181
+ attr_reader :reasoning
2182
+
2183
+ sig {
2184
+ params(
2185
+ reasoning: T.nilable(
2186
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::OrHash
2187
+ )
2188
+ )
2189
+ .void
2190
+ }
2191
+ attr_writer :reasoning
2192
+
2193
+ # SVG author model settings. Requires `output_format` to be `svg`. When SVG model
2194
+ # selection is enabled, omitting this object uses the outer response model.
2195
+ # Otherwise, the default SVG author is used and explicit model overrides are
2196
+ # unavailable.
2197
+ sig do
2198
+ params(
2199
+
2200
+ model: String,
2201
+
2202
+ reasoning: T.nilable(
2203
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::OrHash
2204
+ )
2205
+ )
2206
+ .returns(T.attached_class)
2207
+ end
2208
+ def self.new(
2209
+
2210
+ model: nil,
2211
+
2212
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
2213
+ # default in both Images and Responses.
2214
+
2215
+ reasoning: nil
2216
+ )
2217
+ end
2218
+
2219
+ sig do
2220
+ override.returns(
2221
+ {
2222
+ model: String,
2223
+ reasoning: T.nilable(
2224
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning
2225
+ )
2226
+ }
2227
+ )
2228
+ end
2229
+ def to_hash
2230
+ end
2231
+
2232
+ class Reasoning < OpenAI::Internal::Type::BaseModel
2233
+ OrHash = T.type_alias do
2234
+ T.any(
2235
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning,
2236
+ OpenAI::Internal::AnyHash
2237
+ )
2238
+ end
2239
+
2240
+ # Controls how much effort the model should spend on reasoning for this request.
2241
+ sig {
2242
+ returns(
2243
+ T.nilable(
2244
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol
2245
+ )
2246
+ )
2247
+ }
2248
+ attr_reader :effort
2249
+
2250
+ sig {
2251
+ params(
2252
+ effort: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol
2253
+ )
2254
+ .void
2255
+ }
2256
+ attr_writer :effort
2257
+
2258
+ # Reasoning effort for SVG authoring. When omitted, uses the author model's
2259
+ # default in both Images and Responses.
2260
+ sig do
2261
+ params(
2262
+
2263
+ effort: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol
2264
+ )
2265
+ .returns(T.attached_class)
2266
+ end
2267
+ def self.new(
2268
+
2269
+ # Controls how much effort the model should spend on reasoning for this request.
2270
+
2271
+ effort: nil
2272
+ )
2273
+ end
2274
+
2275
+ sig do
2276
+ override.returns(
2277
+ {
2278
+ effort: OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::OrSymbol
2279
+ }
2280
+ )
2281
+ end
2282
+ def to_hash
2283
+ end
2284
+
2285
+ # Controls how much effort the model should spend on reasoning for this request.
2286
+ module Effort
2287
+ extend OpenAI::Internal::Type::Enum
2288
+
2289
+ TaggedSymbol = T.type_alias {
2290
+ T.all(
2291
+ Symbol,
2292
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort
2293
+ )
2294
+ }
2295
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2296
+
2297
+ NONE = T.let(
2298
+ :none,
2299
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
2300
+ )
2301
+ MINIMAL = T.let(
2302
+ :minimal,
2303
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
2304
+ )
2305
+ LOW = T.let(
2306
+ :low,
2307
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
2308
+ )
2309
+ MEDIUM = T.let(
2310
+ :medium,
2311
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
2312
+ )
2313
+ HIGH = T.let(
2314
+ :high,
2315
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
2316
+ )
2317
+ XHIGH = T.let(
2318
+ :xhigh,
2319
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
2320
+ )
2321
+ MAX = T.let(
2322
+ :max,
2323
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
2324
+ )
2325
+
2326
+ sig {
2327
+ override.returns(
2328
+ T::Array[
2329
+ OpenAI::Beta::BetaResponseToolSearchOutputItemParam::Tool::ImageGeneration::Svg::Reasoning::Effort::TaggedSymbol
2330
+ ]
2331
+ )
2332
+ }
2333
+ def self.values
2334
+ end
2335
+ end
2336
+ end
2337
+ end
2013
2338
  end
2014
2339
 
2015
2340
  class LocalShell < OpenAI::Internal::Type::BaseModel
@@ -110,13 +110,26 @@ module OpenAI
110
110
  sig { returns(Integer) }
111
111
  attr_accessor :cached_tokens
112
112
 
113
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseUsage::InputTokensDetails::CacheWriteTokensDetails)) }
114
+ attr_reader :cache_write_tokens_details
115
+
116
+ sig {
117
+ params(
118
+ cache_write_tokens_details: OpenAI::Beta::BetaResponseUsage::InputTokensDetails::CacheWriteTokensDetails::OrHash
119
+ )
120
+ .void
121
+ }
122
+ attr_writer :cache_write_tokens_details
123
+
113
124
  # A detailed breakdown of the input tokens.
114
125
  sig do
115
126
  params(
116
127
 
117
128
  cache_write_tokens: Integer,
118
129
 
119
- cached_tokens: Integer
130
+ cached_tokens: Integer,
131
+
132
+ cache_write_tokens_details: OpenAI::Beta::BetaResponseUsage::InputTokensDetails::CacheWriteTokensDetails::OrHash
120
133
  )
121
134
  .returns(T.attached_class)
122
135
  end
@@ -127,19 +140,69 @@ module OpenAI
127
140
 
128
141
  # The number of tokens that were retrieved from the cache.
129
142
  # [More on prompt caching](https://developers.openai.com/api/docs/guides/prompt-caching).
143
+ cached_tokens:,
130
144
 
131
- cached_tokens:
145
+ cache_write_tokens_details: nil
132
146
  )
133
147
  end
134
148
 
135
149
  sig do
136
150
  override.returns(
137
- {cache_write_tokens: Integer, cached_tokens: Integer}
151
+ {
152
+ cache_write_tokens: Integer,
153
+ cached_tokens: Integer,
154
+ cache_write_tokens_details: OpenAI::Beta::BetaResponseUsage::InputTokensDetails::CacheWriteTokensDetails
155
+ }
138
156
  )
139
157
  end
140
158
  def to_hash
141
159
  end
142
160
 
161
+ class CacheWriteTokensDetails < OpenAI::Internal::Type::BaseModel
162
+ OrHash = T.type_alias do
163
+ T.any(
164
+ OpenAI::Beta::BetaResponseUsage::InputTokensDetails::CacheWriteTokensDetails,
165
+ OpenAI::Internal::AnyHash
166
+ )
167
+ end
168
+
169
+ # The number of input tokens written with 12-hour retention.
170
+ sig { returns(Integer) }
171
+ attr_accessor :ttl_12h_tokens
172
+
173
+ # The number of input tokens written with 30-minute retention.
174
+ sig { returns(Integer) }
175
+ attr_accessor :ttl_30m_tokens
176
+
177
+ sig do
178
+ params(
179
+
180
+ ttl_12h_tokens: Integer,
181
+
182
+ ttl_30m_tokens: Integer
183
+ )
184
+ .returns(T.attached_class)
185
+ end
186
+ def self.new(
187
+
188
+ # The number of input tokens written with 12-hour retention.
189
+ ttl_12h_tokens:,
190
+
191
+ # The number of input tokens written with 30-minute retention.
192
+
193
+ ttl_30m_tokens:
194
+ )
195
+ end
196
+
197
+ sig do
198
+ override.returns(
199
+ {ttl_12h_tokens: Integer, ttl_30m_tokens: Integer}
200
+ )
201
+ end
202
+ def to_hash
203
+ end
204
+
205
+ end
143
206
  end
144
207
 
145
208
  class OutputTokensDetails < OpenAI::Internal::Type::BaseModel