openai 0.86.0 → 0.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +10 -1
  4. data/examples/audio/record_and_play.rb +19 -0
  5. data/examples/responses/websocket_workflows.rb +159 -0
  6. data/lib/openai/helpers/local_audio/errors.rb +27 -0
  7. data/lib/openai/helpers/local_audio/process.rb +158 -0
  8. data/lib/openai/helpers/local_audio.rb +157 -0
  9. data/lib/openai/helpers/realtime/connection.rb +20 -2
  10. data/lib/openai/helpers/realtime/errors.rb +18 -0
  11. data/lib/openai/helpers/realtime/recovery.rb +489 -0
  12. data/lib/openai/helpers/realtime/resources/realtime_extension.rb +26 -1
  13. data/lib/openai/helpers/realtime.rb +1 -0
  14. data/lib/openai/models/beta/beta_response_input_item.rb +84 -1
  15. data/lib/openai/models/beta/beta_response_item.rb +72 -1
  16. data/lib/openai/models/beta/beta_response_output_item.rb +84 -1
  17. data/lib/openai/models/beta/beta_responses_client_event.rb +3 -0
  18. data/lib/openai/models/beta/beta_tool.rb +69 -37
  19. data/lib/openai/models/beta/response_create_params.rb +3 -0
  20. data/lib/openai/models/conversations/conversation_item.rb +82 -1
  21. data/lib/openai/models/image_edit_completed_event.rb +34 -8
  22. data/lib/openai/models/image_edit_params.rb +64 -44
  23. data/lib/openai/models/image_edit_partial_image_event.rb +34 -8
  24. data/lib/openai/models/image_gen_completed_event.rb +34 -8
  25. data/lib/openai/models/image_gen_partial_image_event.rb +34 -8
  26. data/lib/openai/models/image_generate_params.rb +51 -35
  27. data/lib/openai/models/image_model.rb +4 -0
  28. data/lib/openai/models/images_response.rb +37 -13
  29. data/lib/openai/models/responses/response_create_params.rb +3 -0
  30. data/lib/openai/models/responses/response_input_item.rb +84 -1
  31. data/lib/openai/models/responses/response_item.rb +72 -1
  32. data/lib/openai/models/responses/response_output_item.rb +84 -1
  33. data/lib/openai/models/responses/responses_client_event.rb +3 -0
  34. data/lib/openai/models/responses/tool.rb +69 -37
  35. data/lib/openai/models/webhooks/live_call_incoming_webhook_event.rb +3 -3
  36. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +5 -3
  37. data/lib/openai/resources/images.rb +12 -14
  38. data/lib/openai/version.rb +1 -1
  39. data/local-audio.md +146 -0
  40. data/rbi/openai/helpers/local_audio/interface.rbi +110 -0
  41. data/rbi/openai/helpers/realtime/connection.rbi +18 -2
  42. data/rbi/openai/helpers/realtime/extensions.rbi +8 -0
  43. data/rbi/openai/helpers/realtime/recovery.rbi +27 -0
  44. data/rbi/openai/models/beta/beta_response_input_item.rbi +86 -1
  45. data/rbi/openai/models/beta/beta_response_item.rbi +78 -1
  46. data/rbi/openai/models/beta/beta_response_output_item.rbi +84 -1
  47. data/rbi/openai/models/beta/beta_responses_client_event.rbi +6 -0
  48. data/rbi/openai/models/beta/beta_tool.rbi +90 -51
  49. data/rbi/openai/models/beta/response_create_params.rbi +6 -0
  50. data/rbi/openai/models/conversations/conversation_item.rbi +88 -1
  51. data/rbi/openai/models/image_edit_completed_event.rbi +20 -9
  52. data/rbi/openai/models/image_edit_params.rbi +89 -60
  53. data/rbi/openai/models/image_edit_partial_image_event.rbi +20 -9
  54. data/rbi/openai/models/image_gen_completed_event.rbi +20 -9
  55. data/rbi/openai/models/image_gen_partial_image_event.rbi +20 -9
  56. data/rbi/openai/models/image_generate_params.rbi +71 -48
  57. data/rbi/openai/models/image_model.rbi +4 -0
  58. data/rbi/openai/models/images_response.rbi +27 -16
  59. data/rbi/openai/models/responses/response_create_params.rbi +6 -0
  60. data/rbi/openai/models/responses/response_input_item.rbi +88 -1
  61. data/rbi/openai/models/responses/response_item.rbi +80 -1
  62. data/rbi/openai/models/responses/response_output_item.rbi +84 -1
  63. data/rbi/openai/models/responses/responses_client_event.rbi +6 -0
  64. data/rbi/openai/models/responses/tool.rbi +90 -51
  65. data/rbi/openai/models/webhooks/live_call_incoming_webhook_event.rbi +4 -4
  66. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +8 -4
  67. data/rbi/openai/resources/beta/responses.rbi +6 -2
  68. data/rbi/openai/resources/images.rbi +106 -76
  69. data/rbi/openai/resources/responses.rbi +6 -0
  70. data/realtime.md +101 -0
  71. data/responses-websocket.md +182 -0
  72. data/sig/openai/helpers/local_audio/interface.rbs +62 -0
  73. data/sig/openai/helpers/realtime/connection.rbs +9 -1
  74. data/sig/openai/helpers/realtime/extensions.rbs +4 -0
  75. data/sig/openai/helpers/realtime/recovery.rbs +19 -0
  76. data/sig/openai/models/beta/beta_response_input_item.rbs +39 -2
  77. data/sig/openai/models/beta/beta_response_item.rbs +39 -2
  78. data/sig/openai/models/beta/beta_response_output_item.rbs +39 -2
  79. data/sig/openai/models/beta/beta_tool.rbs +11 -1
  80. data/sig/openai/models/conversations/conversation_item.rbs +39 -2
  81. data/sig/openai/models/image_edit_completed_event.rbs +11 -4
  82. data/sig/openai/models/image_edit_params.rbs +3 -1
  83. data/sig/openai/models/image_edit_partial_image_event.rbs +11 -4
  84. data/sig/openai/models/image_gen_completed_event.rbs +11 -4
  85. data/sig/openai/models/image_gen_partial_image_event.rbs +11 -4
  86. data/sig/openai/models/image_generate_params.rbs +4 -1
  87. data/sig/openai/models/image_model.rbs +8 -0
  88. data/sig/openai/models/images_response.rbs +10 -4
  89. data/sig/openai/models/responses/response_input_item.rbs +39 -2
  90. data/sig/openai/models/responses/response_item.rbs +39 -2
  91. data/sig/openai/models/responses/response_output_item.rbs +39 -2
  92. data/sig/openai/models/responses/tool.rbs +11 -1
  93. metadata +15 -1
@@ -0,0 +1,62 @@
1
+ module OpenAI
2
+ module LocalAudio
3
+ def self.record: (
4
+ duration: Numeric,
5
+ ?device: (String | Integer)?,
6
+ ?timeout: Numeric?
7
+ ) -> OpenAI::FilePart
8
+ def self.play: (
9
+ IO | StringIO | OpenAI::FilePart source,
10
+ ?format: :auto | :pcm,
11
+ ?timeout: Numeric?
12
+ ) -> nil
13
+
14
+ # @api private
15
+ def self.playback_source: (
16
+ IO | StringIO | OpenAI::FilePart source
17
+ ) -> (IO | StringIO)
18
+
19
+ # @api private
20
+ def self.capture_device: (
21
+ (String | Integer)? device,
22
+ ?platform: String
23
+ ) -> [String, String]
24
+
25
+ # @api private
26
+ def self.wav_header: (Integer bytes) -> String
27
+
28
+ # @api private
29
+ class MediaProcess
30
+ def self.environment: -> Hash[String, String]
31
+ def self.clock: -> Float
32
+ def self.duration: (Numeric value, name: String | Symbol) -> Float
33
+ def initialize: (
34
+ Array[String] argv,
35
+ input: IO | String,
36
+ output: IO | String,
37
+ timeout: Numeric?,
38
+ ?capture_errors: bool
39
+ ) -> void
40
+ def check_deadline: -> void
41
+ def errors?: -> bool
42
+ def read: (IO | StringIO io, ?stop_on_exit: bool) -> String?
43
+ def write: (IO io, String bytes) -> void
44
+ def wait: -> Process::Status
45
+ def close: -> void
46
+ end
47
+ class Error < OpenAI::Errors::Error
48
+ end
49
+ class DependencyError < OpenAI::LocalAudio::Error
50
+ end
51
+ class UnsupportedPlatformError < OpenAI::LocalAudio::Error
52
+ end
53
+ class DeviceError < OpenAI::LocalAudio::Error
54
+ end
55
+ class PlaybackError < OpenAI::LocalAudio::Error
56
+ end
57
+ class TimeoutError < OpenAI::LocalAudio::Error
58
+ end
59
+ class FormatError < OpenAI::LocalAudio::Error
60
+ end
61
+ end
62
+ end
@@ -19,7 +19,11 @@ module OpenAI
19
19
  attr_reader input_audio_buffer: OpenAI::Realtime::ConnectionResources::InputAudioBuffer
20
20
 
21
21
  # @api private
22
- def initialize: (socket: untyped, url: URI::Generic) -> void
22
+ def initialize: (
23
+ socket: untyped,
24
+ url: URI::Generic,
25
+ ?recovery: untyped
26
+ ) -> void
23
27
  def each:
24
28
  -> Enumerator[OpenAI::Models::Realtime::connection_server_event, self]
25
29
  | {
@@ -39,6 +43,10 @@ module OpenAI
39
43
  # @api private
40
44
  def abort: -> nil
41
45
  def closed?: -> bool
46
+ def reconnecting?: -> bool
47
+ def pending_messages: -> Array[String]
48
+ def take_pending_messages: -> Array[String]
49
+ def flush_pending: -> nil
42
50
  end
43
51
  end
44
52
  end
@@ -52,6 +52,10 @@ module OpenAI
52
52
  class Realtime
53
53
  def connect: (
54
54
  model: String,
55
+ ?reconnect: bool,
56
+ ?max_reconnect_attempts: Integer,
57
+ ?max_queue_bytes: Integer,
58
+ ?on_reconnected: (^(OpenAI::Realtime::Connection) -> void)?,
55
59
  ?websocket_base_url: String?,
56
60
  ?request_options: OpenAI::request_opts?,
57
61
  ?transport: untyped?,
@@ -0,0 +1,19 @@
1
+ module OpenAI
2
+ module Errors
3
+ class RealtimeQueueFullError < OpenAI::Errors::Error
4
+ def initialize: -> void
5
+ end
6
+
7
+ class RealtimeReconnectError < OpenAI::Errors::Error
8
+ attr_reader unsent_messages: Array[String]
9
+ attr_reader uncertain_message: String?
10
+
11
+ # @api private
12
+ def initialize: (
13
+ message: String,
14
+ ?unsent_messages: Array[String],
15
+ ?uncertain_message: String?
16
+ ) -> void
17
+ end
18
+ end
19
+ end
@@ -860,7 +860,9 @@ module OpenAI
860
860
  result: String?,
861
861
  status: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::status,
862
862
  ?type: :image_generation_call,
863
- ?agent: OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall::Agent?
863
+ ?agent: OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall::Agent?,
864
+ ?quality: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::quality?,
865
+ ?size: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::size?
864
866
  }
865
867
 
866
868
  class ImageGenerationCall < OpenAI::Internal::Type::BaseModel
@@ -874,11 +876,17 @@ module OpenAI
874
876
 
875
877
  attr_accessor agent: OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall::Agent?
876
878
 
879
+ attr_accessor quality: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::quality?
880
+
881
+ attr_accessor size: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::size?
882
+
877
883
  def initialize: (
878
884
  id: String,
879
885
  result: String?,
880
886
  status: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::status,
881
887
  ?agent: OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall::Agent?,
888
+ ?quality: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::quality?,
889
+ ?size: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::size?,
882
890
  ?type: :image_generation_call
883
891
  ) -> void
884
892
 
@@ -887,7 +895,9 @@ module OpenAI
887
895
  result: String?,
888
896
  status: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::status,
889
897
  ?type: :image_generation_call,
890
- ?agent: OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall::Agent?
898
+ ?agent: OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall::Agent?,
899
+ ?quality: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::quality?,
900
+ ?size: OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::size?
891
901
  }
892
902
 
893
903
  type status = :in_progress | :completed | :generating | :failed
@@ -912,6 +922,33 @@ module OpenAI
912
922
 
913
923
  def to_hash: -> { agent_name: String }
914
924
  end
925
+
926
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
927
+
928
+ module Quality
929
+ extend OpenAI::Internal::Type::Enum
930
+
931
+ LOW: :low
932
+ MEDIUM: :medium
933
+ HIGH: :high
934
+ XHIGH: :xhigh
935
+ MAX: :max
936
+ AUTO: :auto
937
+
938
+ def self?.values: -> ::Array[OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::quality]
939
+ end
940
+
941
+ type size = String | :"1024x1024" | :"1024x1536" | :"1536x1024"
942
+
943
+ module Size
944
+ extend OpenAI::Internal::Type::Union
945
+
946
+ def self?.variants: -> ::Array[OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall::size]
947
+
948
+ SIZE_1024X1024: :"1024x1024"
949
+ SIZE_1024X1536: :"1024x1536"
950
+ SIZE_1536X1024: :"1536x1024"
951
+ end
915
952
  end
916
953
 
917
954
  type local_shell_call =
@@ -593,7 +593,9 @@ module OpenAI
593
593
  result: String?,
594
594
  status: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::status,
595
595
  ?type: :image_generation_call,
596
- ?agent: OpenAI::Beta::BetaResponseItem::ImageGenerationCall::Agent?
596
+ ?agent: OpenAI::Beta::BetaResponseItem::ImageGenerationCall::Agent?,
597
+ ?quality: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::quality?,
598
+ ?size: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::size?
597
599
  }
598
600
 
599
601
  class ImageGenerationCall < OpenAI::Internal::Type::BaseModel
@@ -607,11 +609,17 @@ module OpenAI
607
609
 
608
610
  attr_accessor agent: OpenAI::Beta::BetaResponseItem::ImageGenerationCall::Agent?
609
611
 
612
+ attr_accessor quality: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::quality?
613
+
614
+ attr_accessor size: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::size?
615
+
610
616
  def initialize: (
611
617
  id: String,
612
618
  result: String?,
613
619
  status: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::status,
614
620
  ?agent: OpenAI::Beta::BetaResponseItem::ImageGenerationCall::Agent?,
621
+ ?quality: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::quality?,
622
+ ?size: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::size?,
615
623
  ?type: :image_generation_call
616
624
  ) -> void
617
625
 
@@ -620,7 +628,9 @@ module OpenAI
620
628
  result: String?,
621
629
  status: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::status,
622
630
  ?type: :image_generation_call,
623
- ?agent: OpenAI::Beta::BetaResponseItem::ImageGenerationCall::Agent?
631
+ ?agent: OpenAI::Beta::BetaResponseItem::ImageGenerationCall::Agent?,
632
+ ?quality: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::quality?,
633
+ ?size: OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::size?
624
634
  }
625
635
 
626
636
  type status = :in_progress | :completed | :generating | :failed
@@ -645,6 +655,33 @@ module OpenAI
645
655
 
646
656
  def to_hash: -> { agent_name: String }
647
657
  end
658
+
659
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
660
+
661
+ module Quality
662
+ extend OpenAI::Internal::Type::Enum
663
+
664
+ LOW: :low
665
+ MEDIUM: :medium
666
+ HIGH: :high
667
+ XHIGH: :xhigh
668
+ MAX: :max
669
+ AUTO: :auto
670
+
671
+ def self?.values: -> ::Array[OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::quality]
672
+ end
673
+
674
+ type size = String | :"1024x1024" | :"1024x1536" | :"1536x1024"
675
+
676
+ module Size
677
+ extend OpenAI::Internal::Type::Union
678
+
679
+ def self?.variants: -> ::Array[OpenAI::Models::Beta::BetaResponseItem::ImageGenerationCall::size]
680
+
681
+ SIZE_1024X1024: :"1024x1024"
682
+ SIZE_1024X1536: :"1024x1536"
683
+ SIZE_1536X1024: :"1536x1024"
684
+ end
648
685
  end
649
686
 
650
687
  type local_shell_call =
@@ -591,7 +591,9 @@ module OpenAI
591
591
  result: String?,
592
592
  status: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::status,
593
593
  ?type: :image_generation_call,
594
- ?agent: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Agent?
594
+ ?agent: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Agent?,
595
+ ?quality: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::quality?,
596
+ ?size: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::size?
595
597
  }
596
598
 
597
599
  class ImageGenerationCall < OpenAI::Internal::Type::BaseModel
@@ -605,11 +607,17 @@ module OpenAI
605
607
 
606
608
  attr_accessor agent: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Agent?
607
609
 
610
+ attr_accessor quality: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::quality?
611
+
612
+ attr_accessor size: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::size?
613
+
608
614
  def initialize: (
609
615
  id: String,
610
616
  result: String?,
611
617
  status: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::status,
612
618
  ?agent: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Agent?,
619
+ ?quality: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::quality?,
620
+ ?size: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::size?,
613
621
  ?type: :image_generation_call
614
622
  ) -> void
615
623
 
@@ -618,7 +626,9 @@ module OpenAI
618
626
  result: String?,
619
627
  status: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::status,
620
628
  ?type: :image_generation_call,
621
- ?agent: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Agent?
629
+ ?agent: OpenAI::Beta::BetaResponseOutputItem::ImageGenerationCall::Agent?,
630
+ ?quality: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::quality?,
631
+ ?size: OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::size?
622
632
  }
623
633
 
624
634
  type status = :in_progress | :completed | :generating | :failed
@@ -643,6 +653,33 @@ module OpenAI
643
653
 
644
654
  def to_hash: -> { agent_name: String }
645
655
  end
656
+
657
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
658
+
659
+ module Quality
660
+ extend OpenAI::Internal::Type::Enum
661
+
662
+ LOW: :low
663
+ MEDIUM: :medium
664
+ HIGH: :high
665
+ XHIGH: :xhigh
666
+ MAX: :max
667
+ AUTO: :auto
668
+
669
+ def self?.values: -> ::Array[OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::quality]
670
+ end
671
+
672
+ type size = String | :"1024x1024" | :"1024x1536" | :"1536x1024"
673
+
674
+ module Size
675
+ extend OpenAI::Internal::Type::Union
676
+
677
+ def self?.variants: -> ::Array[OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall::size]
678
+
679
+ SIZE_1024X1024: :"1024x1024"
680
+ SIZE_1024X1536: :"1024x1536"
681
+ SIZE_1536X1024: :"1536x1024"
682
+ end
646
683
  end
647
684
 
648
685
  type local_shell_call =
@@ -556,6 +556,10 @@ module OpenAI
556
556
  | :"gpt-image-1-mini"
557
557
  | :"gpt-image-2"
558
558
  | :"gpt-image-2-2026-04-21"
559
+ | :"gpt-image-2.5-sunburst"
560
+ | :"gpt-image-2.5-sunburst-2026-09-08"
561
+ | :"gpt-image-2.5-flare"
562
+ | :"gpt-image-2.5-flare-2026-09-08"
559
563
  | :"gpt-image-1.5"
560
564
  | :"chatgpt-image-latest"
561
565
 
@@ -568,6 +572,10 @@ module OpenAI
568
572
  GPT_IMAGE_1_MINI: :"gpt-image-1-mini"
569
573
  GPT_IMAGE_2: :"gpt-image-2"
570
574
  GPT_IMAGE_2_2026_04_21: :"gpt-image-2-2026-04-21"
575
+ GPT_IMAGE_2_5_SUNBURST: :"gpt-image-2.5-sunburst"
576
+ GPT_IMAGE_2_5_SUNBURST_2026_09_08: :"gpt-image-2.5-sunburst-2026-09-08"
577
+ GPT_IMAGE_2_5_FLARE: :"gpt-image-2.5-flare"
578
+ GPT_IMAGE_2_5_FLARE_2026_09_08: :"gpt-image-2.5-flare-2026-09-08"
571
579
  GPT_IMAGE_1_5: :"gpt-image-1.5"
572
580
  CHATGPT_IMAGE_LATEST: :"chatgpt-image-latest"
573
581
  end
@@ -595,7 +603,7 @@ module OpenAI
595
603
  def self?.values: -> ::Array[OpenAI::Models::Beta::BetaTool::ImageGeneration::output_format]
596
604
  end
597
605
 
598
- type quality = :low | :medium | :high | :auto
606
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
599
607
 
600
608
  module Quality
601
609
  extend OpenAI::Internal::Type::Enum
@@ -603,6 +611,8 @@ module OpenAI
603
611
  LOW: :low
604
612
  MEDIUM: :medium
605
613
  HIGH: :high
614
+ XHIGH: :xhigh
615
+ MAX: :max
606
616
  AUTO: :auto
607
617
 
608
618
  def self?.values: -> ::Array[OpenAI::Models::Beta::BetaTool::ImageGeneration::quality]
@@ -42,7 +42,9 @@ module OpenAI
42
42
  id: String,
43
43
  result: String?,
44
44
  status: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::status,
45
- ?type: :image_generation_call
45
+ ?type: :image_generation_call,
46
+ ?quality: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::quality?,
47
+ ?size: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::size?
46
48
  }
47
49
 
48
50
  class ImageGenerationCall < OpenAI::Internal::Type::BaseModel
@@ -54,10 +56,16 @@ module OpenAI
54
56
 
55
57
  attr_accessor type: :image_generation_call
56
58
 
59
+ attr_accessor quality: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::quality?
60
+
61
+ attr_accessor size: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::size?
62
+
57
63
  def initialize: (
58
64
  id: String,
59
65
  result: String?,
60
66
  status: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::status,
67
+ ?quality: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::quality?,
68
+ ?size: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::size?,
61
69
  ?type: :image_generation_call
62
70
  ) -> void
63
71
 
@@ -65,7 +73,9 @@ module OpenAI
65
73
  id: String,
66
74
  result: String?,
67
75
  status: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::status,
68
- ?type: :image_generation_call
76
+ ?type: :image_generation_call,
77
+ ?quality: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::quality?,
78
+ ?size: OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::size?
69
79
  }
70
80
 
71
81
  type status = :in_progress | :completed | :generating | :failed
@@ -80,6 +90,33 @@ module OpenAI
80
90
 
81
91
  def self?.values: -> ::Array[OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::status]
82
92
  end
93
+
94
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
95
+
96
+ module Quality
97
+ extend OpenAI::Internal::Type::Enum
98
+
99
+ LOW: :low
100
+ MEDIUM: :medium
101
+ HIGH: :high
102
+ XHIGH: :xhigh
103
+ MAX: :max
104
+ AUTO: :auto
105
+
106
+ def self?.values: -> ::Array[OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::quality]
107
+ end
108
+
109
+ type size = String | :"1024x1024" | :"1024x1536" | :"1536x1024"
110
+
111
+ module Size
112
+ extend OpenAI::Internal::Type::Union
113
+
114
+ def self?.variants: -> ::Array[OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall::size]
115
+
116
+ SIZE_1024X1024: :"1024x1024"
117
+ SIZE_1024X1536: :"1024x1536"
118
+ SIZE_1536X1024: :"1536x1024"
119
+ end
83
120
  end
84
121
 
85
122
  type additional_tools =
@@ -75,7 +75,7 @@ module OpenAI
75
75
  def self?.values: -> ::Array[OpenAI::Models::ImageEditCompletedEvent::output_format]
76
76
  end
77
77
 
78
- type quality = :low | :medium | :high | :auto
78
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
79
79
 
80
80
  module Quality
81
81
  extend OpenAI::Internal::Type::Enum
@@ -83,22 +83,29 @@ module OpenAI
83
83
  LOW: :low
84
84
  MEDIUM: :medium
85
85
  HIGH: :high
86
+ XHIGH: :xhigh
87
+ MAX: :max
86
88
  AUTO: :auto
87
89
 
88
90
  def self?.values: -> ::Array[OpenAI::Models::ImageEditCompletedEvent::quality]
89
91
  end
90
92
 
91
- type size = :"1024x1024" | :"1024x1536" | :"1536x1024" | :auto
93
+ type size = String | :"1024x1024" | :"1024x1536" | :"1536x1024" | :auto
92
94
 
93
95
  module Size
94
- extend OpenAI::Internal::Type::Enum
96
+ extend OpenAI::Internal::Type::Union
97
+
98
+ def self?.variants: -> ::Array[OpenAI::Models::ImageEditCompletedEvent::size]
95
99
 
96
100
  SIZE_1024X1024: :"1024x1024"
97
101
  SIZE_1024X1536: :"1024x1536"
98
102
  SIZE_1536X1024: :"1536x1024"
99
103
  AUTO: :auto
100
104
 
101
- def self?.values: -> ::Array[OpenAI::Models::ImageEditCompletedEvent::size]
105
+ def self?.values: -> ::Array[(:"1024x1024"
106
+ | :"1024x1536"
107
+ | :"1536x1024"
108
+ | :auto)]
102
109
  end
103
110
 
104
111
  type usage =
@@ -145,7 +145,7 @@ module OpenAI
145
145
  def self?.values: -> ::Array[OpenAI::Models::ImageEditParams::output_format]
146
146
  end
147
147
 
148
- type quality = :standard | :low | :medium | :high | :auto
148
+ type quality = :standard | :low | :medium | :high | :xhigh | :max | :auto
149
149
 
150
150
  module Quality
151
151
  extend OpenAI::Internal::Type::Enum
@@ -154,6 +154,8 @@ module OpenAI
154
154
  LOW: :low
155
155
  MEDIUM: :medium
156
156
  HIGH: :high
157
+ XHIGH: :xhigh
158
+ MAX: :max
157
159
  AUTO: :auto
158
160
 
159
161
  def self?.values: -> ::Array[OpenAI::Models::ImageEditParams::quality]
@@ -75,7 +75,7 @@ module OpenAI
75
75
  def self?.values: -> ::Array[OpenAI::Models::ImageEditPartialImageEvent::output_format]
76
76
  end
77
77
 
78
- type quality = :low | :medium | :high | :auto
78
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
79
79
 
80
80
  module Quality
81
81
  extend OpenAI::Internal::Type::Enum
@@ -83,22 +83,29 @@ module OpenAI
83
83
  LOW: :low
84
84
  MEDIUM: :medium
85
85
  HIGH: :high
86
+ XHIGH: :xhigh
87
+ MAX: :max
86
88
  AUTO: :auto
87
89
 
88
90
  def self?.values: -> ::Array[OpenAI::Models::ImageEditPartialImageEvent::quality]
89
91
  end
90
92
 
91
- type size = :"1024x1024" | :"1024x1536" | :"1536x1024" | :auto
93
+ type size = String | :"1024x1024" | :"1024x1536" | :"1536x1024" | :auto
92
94
 
93
95
  module Size
94
- extend OpenAI::Internal::Type::Enum
96
+ extend OpenAI::Internal::Type::Union
97
+
98
+ def self?.variants: -> ::Array[OpenAI::Models::ImageEditPartialImageEvent::size]
95
99
 
96
100
  SIZE_1024X1024: :"1024x1024"
97
101
  SIZE_1024X1536: :"1024x1536"
98
102
  SIZE_1536X1024: :"1536x1024"
99
103
  AUTO: :auto
100
104
 
101
- def self?.values: -> ::Array[OpenAI::Models::ImageEditPartialImageEvent::size]
105
+ def self?.values: -> ::Array[(:"1024x1024"
106
+ | :"1024x1536"
107
+ | :"1536x1024"
108
+ | :auto)]
102
109
  end
103
110
  end
104
111
  end
@@ -75,7 +75,7 @@ module OpenAI
75
75
  def self?.values: -> ::Array[OpenAI::Models::ImageGenCompletedEvent::output_format]
76
76
  end
77
77
 
78
- type quality = :low | :medium | :high | :auto
78
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
79
79
 
80
80
  module Quality
81
81
  extend OpenAI::Internal::Type::Enum
@@ -83,22 +83,29 @@ module OpenAI
83
83
  LOW: :low
84
84
  MEDIUM: :medium
85
85
  HIGH: :high
86
+ XHIGH: :xhigh
87
+ MAX: :max
86
88
  AUTO: :auto
87
89
 
88
90
  def self?.values: -> ::Array[OpenAI::Models::ImageGenCompletedEvent::quality]
89
91
  end
90
92
 
91
- type size = :"1024x1024" | :"1024x1536" | :"1536x1024" | :auto
93
+ type size = String | :"1024x1024" | :"1024x1536" | :"1536x1024" | :auto
92
94
 
93
95
  module Size
94
- extend OpenAI::Internal::Type::Enum
96
+ extend OpenAI::Internal::Type::Union
97
+
98
+ def self?.variants: -> ::Array[OpenAI::Models::ImageGenCompletedEvent::size]
95
99
 
96
100
  SIZE_1024X1024: :"1024x1024"
97
101
  SIZE_1024X1536: :"1024x1536"
98
102
  SIZE_1536X1024: :"1536x1024"
99
103
  AUTO: :auto
100
104
 
101
- def self?.values: -> ::Array[OpenAI::Models::ImageGenCompletedEvent::size]
105
+ def self?.values: -> ::Array[(:"1024x1024"
106
+ | :"1024x1536"
107
+ | :"1536x1024"
108
+ | :auto)]
102
109
  end
103
110
 
104
111
  type usage =
@@ -75,7 +75,7 @@ module OpenAI
75
75
  def self?.values: -> ::Array[OpenAI::Models::ImageGenPartialImageEvent::output_format]
76
76
  end
77
77
 
78
- type quality = :low | :medium | :high | :auto
78
+ type quality = :low | :medium | :high | :xhigh | :max | :auto
79
79
 
80
80
  module Quality
81
81
  extend OpenAI::Internal::Type::Enum
@@ -83,22 +83,29 @@ module OpenAI
83
83
  LOW: :low
84
84
  MEDIUM: :medium
85
85
  HIGH: :high
86
+ XHIGH: :xhigh
87
+ MAX: :max
86
88
  AUTO: :auto
87
89
 
88
90
  def self?.values: -> ::Array[OpenAI::Models::ImageGenPartialImageEvent::quality]
89
91
  end
90
92
 
91
- type size = :"1024x1024" | :"1024x1536" | :"1536x1024" | :auto
93
+ type size = String | :"1024x1024" | :"1024x1536" | :"1536x1024" | :auto
92
94
 
93
95
  module Size
94
- extend OpenAI::Internal::Type::Enum
96
+ extend OpenAI::Internal::Type::Union
97
+
98
+ def self?.variants: -> ::Array[OpenAI::Models::ImageGenPartialImageEvent::size]
95
99
 
96
100
  SIZE_1024X1024: :"1024x1024"
97
101
  SIZE_1024X1536: :"1024x1536"
98
102
  SIZE_1536X1024: :"1536x1024"
99
103
  AUTO: :auto
100
104
 
101
- def self?.values: -> ::Array[OpenAI::Models::ImageGenPartialImageEvent::size]
105
+ def self?.values: -> ::Array[(:"1024x1024"
106
+ | :"1024x1536"
107
+ | :"1536x1024"
108
+ | :auto)]
102
109
  end
103
110
  end
104
111
  end
@@ -127,7 +127,8 @@ module OpenAI
127
127
  def self?.values: -> ::Array[OpenAI::Models::ImageGenerateParams::output_format]
128
128
  end
129
129
 
130
- type quality = :standard | :hd | :low | :medium | :high | :auto
130
+ type quality =
131
+ :standard | :hd | :low | :medium | :high | :xhigh | :max | :auto
131
132
 
132
133
  module Quality
133
134
  extend OpenAI::Internal::Type::Enum
@@ -137,6 +138,8 @@ module OpenAI
137
138
  LOW: :low
138
139
  MEDIUM: :medium
139
140
  HIGH: :high
141
+ XHIGH: :xhigh
142
+ MAX: :max
140
143
  AUTO: :auto
141
144
 
142
145
  def self?.values: -> ::Array[OpenAI::Models::ImageGenerateParams::quality]
@@ -5,6 +5,10 @@ module OpenAI
5
5
  | :"gpt-image-1-mini"
6
6
  | :"gpt-image-2"
7
7
  | :"gpt-image-2-2026-04-21"
8
+ | :"gpt-image-2.5-sunburst"
9
+ | :"gpt-image-2.5-sunburst-2026-09-08"
10
+ | :"gpt-image-2.5-flare"
11
+ | :"gpt-image-2.5-flare-2026-09-08"
8
12
  | :"gpt-image-1.5"
9
13
  | :"chatgpt-image-latest"
10
14
  | :"dall-e-2"
@@ -17,6 +21,10 @@ module OpenAI
17
21
  GPT_IMAGE_1_MINI: :"gpt-image-1-mini"
18
22
  GPT_IMAGE_2: :"gpt-image-2"
19
23
  GPT_IMAGE_2_2026_04_21: :"gpt-image-2-2026-04-21"
24
+ GPT_IMAGE_2_5_SUNBURST: :"gpt-image-2.5-sunburst"
25
+ GPT_IMAGE_2_5_SUNBURST_2026_09_08: :"gpt-image-2.5-sunburst-2026-09-08"
26
+ GPT_IMAGE_2_5_FLARE: :"gpt-image-2.5-flare"
27
+ GPT_IMAGE_2_5_FLARE_2026_09_08: :"gpt-image-2.5-flare-2026-09-08"
20
28
  GPT_IMAGE_1_5: :"gpt-image-1.5"
21
29
  CHATGPT_IMAGE_LATEST: :"chatgpt-image-latest"
22
30
  DALL_E_2: :"dall-e-2"