SwiftOpenAI v4.1.0
This library supports latest OpenAI Image generation
- Parameters Create
/// 'Create Image':
/// https://platform.openai.com/docs/api-reference/images/create
public struct CreateImageParameters: Encodable {
/// A text description of the desired image(s).
/// The maximum length is 32000 characters for `gpt-image-1`, 1000 characters for `dall-e-2` and 4000 characters for `dall-e-3`.
public let prompt: String
// MARK: - Optional properties
/// Allows to set transparency for the background of the generated image(s).
/// This parameter is only supported for `gpt-image-1`.
/// Must be one of `transparent`, `opaque` or `auto` (default value).
/// When `auto` is used, the model will automatically determine the best background for the image.
/// If `transparent`, the output format needs to support transparency, so it should be set to either `png` (default value) or `webp`.
public let background: Background?
/// The model to use for image generation. One of `dall-e-2`, `dall-e-3`, or `gpt-image-1`.
/// Defaults to `dall-e-2` unless a parameter specific to `gpt-image-1` is used.
public let model: Model?
/// Control the content-moderation level for images generated by `gpt-image-1`.
/// Must be either low for less restrictive filtering or auto (default value).
public let moderation: Moderation?
/// The number of images to generate. Must be between 1 and 10. For `dall-e-3`, only `n=1` is supported.
/// Defaults to `1`
public let n: Int?
/// The compression level (0-100%) for the generated images.
/// This parameter is only supported for `gpt-image-1` with the `webp` or `jpeg` output formats, and defaults to 100.
public let outputCompression: Int?
/// The format in which the generated images are returned.
/// This parameter is only supported for `gpt-image-1`.
/// Must be one of `png`, `jpeg`, or `webp`.
public let outputFormat: OutputFormat?
/// The quality of the image that will be generated.
/// - `auto` (default value) will automatically select the best quality for the given model.
/// - `high`, `medium` and `low` are supported for gpt-image-1.
/// - `hd` and `standard` are supported for dall-e-3.
/// - `standard` is the only option for dall-e-2.
public let quality: Quality?
/// The format in which generated images with dall-e-2 and dall-e-3 are returned.
/// Must be one of `url` or `b64_json`.
/// URLs are only valid for 60 minutes after the image has been generated.
/// This parameter isn't supported for `gpt-image-1` which will always return base64-encoded images.
public let responseFormat: ResponseFormat?
/// The size of the generated images.
/// - For gpt-image-1, one of `1024x1024`, `1536x1024` (landscape), `1024x1536` (portrait), or `auto` (default value)
/// - For dall-e-3, one of `1024x1024`, `1792x1024`, or `1024x1792`
/// - For dall-e-2, one of `256x256`, `512x512`, or `1024x1024`
public let size: String?
/// The style of the generated images.
/// This parameter is only supported for `dall-e-3`.
/// Must be one of `vivid` or `natural`.
/// Vivid causes the model to lean towards generating hyper-real and dramatic images.
/// Natural causes the model to produce more natural, less hyper-real looking images.
public let style: Style?
/// A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.
public let user: String?
}- Parameters Edit
/// Creates an edited or extended image given one or more source images and a prompt.
/// This endpoint only supports `gpt-image-1` and `dall-e-2`.
public struct CreateImageEditParameters: Encodable {
/// The image(s) to edit.
/// For `gpt-image-1`, each image should be a `png`, `webp`, or `jpg` file less than 25MB.
/// For `dall-e-2`, you can only provide one image, and it should be a square `png` file less than 4MB.
let image: [Data]
/// A text description of the desired image(s).
/// The maximum length is 1000 characters for `dall-e-2`, and 32000 characters for `gpt-image-1`.
let prompt: String
/// An additional image whose fully transparent areas indicate where `image` should be edited.
/// If there are multiple images provided, the mask will be applied on the first image.
/// Must be a valid PNG file, less than 4MB, and have the same dimensions as `image`.
let mask: Data?
/// The model to use for image generation. Only `dall-e-2` and `gpt-image-1` are supported.
/// Defaults to `dall-e-2` unless a parameter specific to `gpt-image-1` is used.
let model: String?
/// The number of images to generate. Must be between 1 and 10.
/// Defaults to 1.
let n: Int?
/// The quality of the image that will be generated.
/// `high`, `medium` and `low` are only supported for `gpt-image-1`.
/// `dall-e-2` only supports `standard` quality.
/// Defaults to `auto`.
let quality: String?
/// The format in which the generated images are returned.
/// Must be one of `url` or `b64_json`.
/// URLs are only valid for 60 minutes after the image has been generated.
/// This parameter is only supported for `dall-e-2`, as `gpt-image-1` will always return base64-encoded images.
let responseFormat: String?
/// The size of the generated images.
/// Must be one of `1024x1024`, `1536x1024` (landscape), `1024x1536` (portrait), or `auto` (default value) for `gpt-image-1`,
/// and one of `256x256`, `512x512`, or `1024x1024` for `dall-e-2`.
let size: String?
/// A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.
let user: String?
}- Parameters Variations
/// Creates a variation of a given image.
/// This endpoint only supports `dall-e-2`.
public struct CreateImageVariationParameters: Encodable {
/// The image to use as the basis for the variation(s).
/// Must be a valid PNG file, less than 4MB, and square.
let image: Data
/// The model to use for image generation. Only `dall-e-2` is supported at this time.
/// Defaults to `dall-e-2`.
let model: String?
/// The number of images to generate. Must be between 1 and 10.
/// Defaults to 1.
let n: Int?
/// The format in which the generated images are returned.
/// Must be one of `url` or `b64_json`.
/// URLs are only valid for 60 minutes after the image has been generated.
/// Defaults to `url`.
let responseFormat: String?
/// The size of the generated images.
/// Must be one of `256x256`, `512x512`, or `1024x1024`.
/// Defaults to `1024x1024`.
let size: String?
/// A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.
let user: String?
}- Request example
import SwiftOpenAI
let service = OpenAIServiceFactory.service(apiKey: "<YOUR_KEY>")
// ❶ Describe the image you want
let prompt = "A watercolor dragon-unicorn hybrid flying above snowy mountains"
// ❷ Build parameters with the brand-new types (commit 880a15c)
let params = CreateImageParameters(
prompt: prompt,
model: .gptImage1, // .dallE3 / .dallE2 also valid
n: 1, // 1-10 (only 1 for DALL-E 3)
quality: .high, // .hd / .standard for DALL-E 3
size: "1024x1024" // use "1792x1024" or "1024x1792" for wide / tall
)
do {
// ❸ Fire the request – returns a `CreateImageResponse`
let result = try await service.createImages(parameters: params)
let url = result.data?.first?.url // or `b64Json` for base-64
print("Image URL:", url ?? "none")
} catch {
print("Generation failed:", error)
}For a sample app example go to the Examples/SwiftOpenAIExample project on this repo.