Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.13.1"
".": "0.14.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 109
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-79dcb0ae501ac17004f50aecb112a798290ab3727fbe7c7d1b34299e38ed4f8e.yml
openapi_spec_hash: c8d54bd1ae3d704f6b6f72ffd2f876d8
config_hash: 167ad0ca036d0f023c78e6496b4311e8
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-670ea0d2cc44f52a87dd3cadea45632953283e0636ba30788fdbdb22a232ccac.yml
openapi_spec_hash: d8b7d38911fead545adf3e4297956410
config_hash: 5525bda35e48ea6387c6175c4d1651fa
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 0.14.0 (2025-07-16)

Full Changelog: [v0.13.1...v0.14.0](https://github.com/openai/openai-ruby/compare/v0.13.1...v0.14.0)

### Features

* **api:** manual updates ([b749baf](https://github.com/openai/openai-ruby/commit/b749baf0d1b52c35ff6e50b889301aa7b8ee2ba1))

## 0.13.1 (2025-07-15)

Full Changelog: [v0.13.0...v0.13.1](https://github.com/openai/openai-ruby/compare/v0.13.0...v0.13.1)
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ GIT
PATH
remote: .
specs:
openai (0.13.1)
openai (0.14.0)
connection_pool

GEM
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
<!-- x-release-please-start-version -->

```ruby
gem "openai", "~> 0.13.1"
gem "openai", "~> 0.14.0"
```

<!-- x-release-please-end -->
Expand Down
44 changes: 44 additions & 0 deletions examples/image_stream.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
# typed: strong

require_relative "../lib/openai"
require "base64"

client = OpenAI::Client.new

puts "Starting image streaming example..."

stream = client.images.generate_stream_raw(
model: "gpt-image-1",
prompt: "A cute baby sea otter",
n: 1,
size: "1024x1024",
partial_images: 3
)

stream.each do |event|
case event
when OpenAI::Models::ImageGenPartialImageEvent
puts(" Partial image #{event.partial_image_index + 1}/3 received")
puts(" Size: #{event.b64_json.length} characters (base64)")

# Save partial image to file
filename = "partial_#{event.partial_image_index + 1}.png"
image_data = Base64.decode64(event.b64_json)
File.write(filename, image_data)
puts(" Saved to: #{File.expand_path(filename)}")

when OpenAI::Models::ImageGenCompletedEvent
puts("\n✅ Final image completed!")
puts(" Size: #{event.b64_json.length} characters (base64)")

# Save final image to file
filename = "final_image.png"
image_data = Base64.decode64(event.b64_json)
File.write(filename, image_data)
puts(" Saved to: #{File.expand_path(filename)}")
end
end

puts "Image streaming completed!"
6 changes: 6 additions & 0 deletions lib/openai.rb
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,14 @@
require_relative "openai/models/graders/string_check_grader"
require_relative "openai/models/image"
require_relative "openai/models/image_create_variation_params"
require_relative "openai/models/image_edit_completed_event"
require_relative "openai/models/image_edit_params"
require_relative "openai/models/image_edit_partial_image_event"
require_relative "openai/models/image_edit_stream_event"
require_relative "openai/models/image_gen_completed_event"
require_relative "openai/models/image_generate_params"
require_relative "openai/models/image_gen_partial_image_event"
require_relative "openai/models/image_gen_stream_event"
require_relative "openai/models/image_model"
require_relative "openai/models/images_response"
require_relative "openai/models/metadata"
Expand Down
12 changes: 12 additions & 0 deletions lib/openai/models.rb
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,22 @@ module OpenAI

ImageCreateVariationParams = OpenAI::Models::ImageCreateVariationParams

ImageEditCompletedEvent = OpenAI::Models::ImageEditCompletedEvent

ImageEditParams = OpenAI::Models::ImageEditParams

ImageEditPartialImageEvent = OpenAI::Models::ImageEditPartialImageEvent

ImageEditStreamEvent = OpenAI::Models::ImageEditStreamEvent

ImageGenCompletedEvent = OpenAI::Models::ImageGenCompletedEvent

ImageGenerateParams = OpenAI::Models::ImageGenerateParams

ImageGenPartialImageEvent = OpenAI::Models::ImageGenPartialImageEvent

ImageGenStreamEvent = OpenAI::Models::ImageGenStreamEvent

ImageModel = OpenAI::Models::ImageModel

ImagesResponse = OpenAI::Models::ImagesResponse
Expand Down
198 changes: 198 additions & 0 deletions lib/openai/models/image_edit_completed_event.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
# frozen_string_literal: true

module OpenAI
module Models
class ImageEditCompletedEvent < OpenAI::Internal::Type::BaseModel
# @!attribute b64_json
# Base64-encoded final edited image data, suitable for rendering as an image.
#
# @return [String]
required :b64_json, String

# @!attribute background
# The background setting for the edited image.
#
# @return [Symbol, OpenAI::Models::ImageEditCompletedEvent::Background]
required :background, enum: -> { OpenAI::ImageEditCompletedEvent::Background }

# @!attribute created_at
# The Unix timestamp when the event was created.
#
# @return [Integer]
required :created_at, Integer

# @!attribute output_format
# The output format for the edited image.
#
# @return [Symbol, OpenAI::Models::ImageEditCompletedEvent::OutputFormat]
required :output_format, enum: -> { OpenAI::ImageEditCompletedEvent::OutputFormat }

# @!attribute quality
# The quality setting for the edited image.
#
# @return [Symbol, OpenAI::Models::ImageEditCompletedEvent::Quality]
required :quality, enum: -> { OpenAI::ImageEditCompletedEvent::Quality }

# @!attribute size
# The size of the edited image.
#
# @return [Symbol, OpenAI::Models::ImageEditCompletedEvent::Size]
required :size, enum: -> { OpenAI::ImageEditCompletedEvent::Size }

# @!attribute type
# The type of the event. Always `image_edit.completed`.
#
# @return [Symbol, :"image_edit.completed"]
required :type, const: :"image_edit.completed"

# @!attribute usage
# For `gpt-image-1` only, the token usage information for the image generation.
#
# @return [OpenAI::Models::ImageEditCompletedEvent::Usage]
required :usage, -> { OpenAI::ImageEditCompletedEvent::Usage }

# @!method initialize(b64_json:, background:, created_at:, output_format:, quality:, size:, usage:, type: :"image_edit.completed")
# Some parameter documentations has been truncated, see
# {OpenAI::Models::ImageEditCompletedEvent} for more details.
#
# Emitted when image editing has completed and the final image is available.
#
# @param b64_json [String] Base64-encoded final edited image data, suitable for rendering as an image.
#
# @param background [Symbol, OpenAI::Models::ImageEditCompletedEvent::Background] The background setting for the edited image.
#
# @param created_at [Integer] The Unix timestamp when the event was created.
#
# @param output_format [Symbol, OpenAI::Models::ImageEditCompletedEvent::OutputFormat] The output format for the edited image.
#
# @param quality [Symbol, OpenAI::Models::ImageEditCompletedEvent::Quality] The quality setting for the edited image.
#
# @param size [Symbol, OpenAI::Models::ImageEditCompletedEvent::Size] The size of the edited image.
#
# @param usage [OpenAI::Models::ImageEditCompletedEvent::Usage] For `gpt-image-1` only, the token usage information for the image generation.
#
# @param type [Symbol, :"image_edit.completed"] The type of the event. Always `image_edit.completed`.

# The background setting for the edited image.
#
# @see OpenAI::Models::ImageEditCompletedEvent#background
module Background
extend OpenAI::Internal::Type::Enum

TRANSPARENT = :transparent
OPAQUE = :opaque
AUTO = :auto

# @!method self.values
# @return [Array<Symbol>]
end

# The output format for the edited image.
#
# @see OpenAI::Models::ImageEditCompletedEvent#output_format
module OutputFormat
extend OpenAI::Internal::Type::Enum

PNG = :png
WEBP = :webp
JPEG = :jpeg

# @!method self.values
# @return [Array<Symbol>]
end

# The quality setting for the edited image.
#
# @see OpenAI::Models::ImageEditCompletedEvent#quality
module Quality
extend OpenAI::Internal::Type::Enum

LOW = :low
MEDIUM = :medium
HIGH = :high
AUTO = :auto

# @!method self.values
# @return [Array<Symbol>]
end

# The size of the edited image.
#
# @see OpenAI::Models::ImageEditCompletedEvent#size
module Size
extend OpenAI::Internal::Type::Enum

SIZE_1024X1024 = :"1024x1024"
SIZE_1024X1536 = :"1024x1536"
SIZE_1536X1024 = :"1536x1024"
AUTO = :auto

# @!method self.values
# @return [Array<Symbol>]
end

# @see OpenAI::Models::ImageEditCompletedEvent#usage
class Usage < OpenAI::Internal::Type::BaseModel
# @!attribute input_tokens
# The number of tokens (images and text) in the input prompt.
#
# @return [Integer]
required :input_tokens, Integer

# @!attribute input_tokens_details
# The input tokens detailed information for the image generation.
#
# @return [OpenAI::Models::ImageEditCompletedEvent::Usage::InputTokensDetails]
required :input_tokens_details, -> { OpenAI::ImageEditCompletedEvent::Usage::InputTokensDetails }

# @!attribute output_tokens
# The number of image tokens in the output image.
#
# @return [Integer]
required :output_tokens, Integer

# @!attribute total_tokens
# The total number of tokens (images and text) used for the image generation.
#
# @return [Integer]
required :total_tokens, Integer

# @!method initialize(input_tokens:, input_tokens_details:, output_tokens:, total_tokens:)
# Some parameter documentations has been truncated, see
# {OpenAI::Models::ImageEditCompletedEvent::Usage} for more details.
#
# For `gpt-image-1` only, the token usage information for the image generation.
#
# @param input_tokens [Integer] The number of tokens (images and text) in the input prompt.
#
# @param input_tokens_details [OpenAI::Models::ImageEditCompletedEvent::Usage::InputTokensDetails] The input tokens detailed information for the image generation.
#
# @param output_tokens [Integer] The number of image tokens in the output image.
#
# @param total_tokens [Integer] The total number of tokens (images and text) used for the image generation.

# @see OpenAI::Models::ImageEditCompletedEvent::Usage#input_tokens_details
class InputTokensDetails < OpenAI::Internal::Type::BaseModel
# @!attribute image_tokens
# The number of image tokens in the input prompt.
#
# @return [Integer]
required :image_tokens, Integer

# @!attribute text_tokens
# The number of text tokens in the input prompt.
#
# @return [Integer]
required :text_tokens, Integer

# @!method initialize(image_tokens:, text_tokens:)
# The input tokens detailed information for the image generation.
#
# @param image_tokens [Integer] The number of image tokens in the input prompt.
#
# @param text_tokens [Integer] The number of text tokens in the input prompt.
end
end
end
end
end
Loading