diff --git a/src/resources/images.ts b/src/resources/images.ts index 6228b7232..f50eb3d13 100644 --- a/src/resources/images.ts +++ b/src/resources/images.ts @@ -400,7 +400,21 @@ export interface ImageGenPartialImageEvent { */ export type ImageGenStreamEvent = ImageGenPartialImageEvent | ImageGenCompletedEvent; -export type ImageModel = 'gpt-image-1.5' | 'dall-e-2' | 'dall-e-3' | 'gpt-image-1' | 'gpt-image-1-mini'; +export type ImageModel = 'gpt-image-1.5' | 'dall-e-2' | 'dall-e-3' | 'gpt-image-1' | 'gpt-image-1-mini' | 'gpt-image-2'; + +// Special case: gpt-image-2 does NOT support webp +type ImageGenerateParamsGptImage2 = { + /** + * The model to use for image generation. + * Note: gpt-image-2 does not support 'webp' + */ + model: 'gpt-image-2'; + /** + * The format in which the generated images are returned. + * For gpt-image-2, only 'png' and 'jpeg' are supported. + */ + output_format?: 'png' | 'jpeg' | null; +}; /** * The response from the image generation endpoint. @@ -691,125 +705,127 @@ export interface ImageEditParamsStreaming extends ImageEditParamsBase { export type ImageGenerateParams = ImageGenerateParamsNonStreaming | ImageGenerateParamsStreaming; -export interface ImageGenerateParamsBase { - /** - * A text description of the desired image(s). The maximum length is 32000 - * characters for the GPT image models, 1000 characters for `dall-e-2` and 4000 - * characters for `dall-e-3`. - */ - prompt: string; - - /** - * Allows to set transparency for the background of the generated image(s). This - * parameter is only supported for the GPT image models. 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`. - */ - background?: 'transparent' | 'opaque' | 'auto' | null; - - /** - * The model to use for image generation. One of `dall-e-2`, `dall-e-3`, or a GPT - * image model (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`). Defaults to - * `dall-e-2` unless a parameter specific to the GPT image models is used. - */ - model?: (string & {}) | ImageModel | null; - - /** - * Control the content-moderation level for images generated by the GPT image - * models. Must be either `low` for less restrictive filtering or `auto` (default - * value). - */ - moderation?: 'low' | 'auto' | null; +export type ImageGenerateParamsBase = + ( + | ImageGenerateParamsGptImage2 + | { + /** + * The model to use for image generation. + * One of `dall-e-2`, `dall-e-3`, or a GPT image model. + */ + model?: (string & {}) | ImageModel | null; + + /** + * The format in which the generated images are returned. + * For most models, 'webp' is supported. + */ + output_format?: 'png' | 'jpeg' | 'webp' | null; + } + ) & { + /** + * A text description of the desired image(s). The maximum length is 32000 + * characters for the GPT image models, 1000 characters for `dall-e-2` and 4000 + * characters for `dall-e-3`. + */ + prompt: string; - /** - * The number of images to generate. Must be between 1 and 10. For `dall-e-3`, only - * `n=1` is supported. - */ - n?: number | null; + /** + * Allows to set transparency for the background of the generated image(s). This + * parameter is only supported for the GPT image models. 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`. + */ + background?: 'transparent' | 'opaque' | 'auto' | null; - /** - * The compression level (0-100%) for the generated images. This parameter is only - * supported for the GPT image models with the `webp` or `jpeg` output formats, and - * defaults to 100. - */ - output_compression?: number | null; + /** + * Control the content-moderation level for images generated by the GPT image + * models. Must be either `low` for less restrictive filtering or `auto` (default + * value). + */ + moderation?: 'low' | 'auto' | null; - /** - * The format in which the generated images are returned. This parameter is only - * supported for the GPT image models. Must be one of `png`, `jpeg`, or `webp`. - */ - output_format?: 'png' | 'jpeg' | 'webp' | null; + /** + * The number of images to generate. Must be between 1 and 10. For `dall-e-3`, only + * `n=1` is supported. + */ + n?: number | null; - /** - * The number of partial images to generate. This parameter is used for streaming - * responses that return partial images. Value must be between 0 and 3. When set to - * 0, the response will be a single image sent in one streaming event. - * - * Note that the final image may be sent before the full number of partial images - * are generated if the full image is generated more quickly. - */ - partial_images?: number | null; + /** + * The compression level (0-100%) for the generated images. This parameter is only + * supported for the GPT image models with the `webp` or `jpeg` output formats, and + * defaults to 100. + */ + output_compression?: number | null; + /** + * The number of partial images to generate. This parameter is used for streaming + * responses that return partial images. Value must be between 0 and 3. When set to + * 0, the response will be a single image sent in one streaming event. + * + * Note that the final image may be sent before the full number of partial images + * are generated if the full image is generated more quickly. + */ + partial_images?: number | null; - /** - * 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 the GPT image models. - * - `hd` and `standard` are supported for `dall-e-3`. - * - `standard` is the only option for `dall-e-2`. - */ - quality?: 'standard' | 'hd' | 'low' | 'medium' | 'high' | 'auto' | null; + /** + * 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 the GPT image models. + * - `hd` and `standard` are supported for `dall-e-3`. + * - `standard` is the only option for `dall-e-2`. + */ + quality?: 'standard' | 'hd' | 'low' | 'medium' | 'high' | 'auto' | null; - /** - * 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 the GPT - * image models, which always return base64-encoded images. - */ - response_format?: 'url' | 'b64_json' | null; + /** + * 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 the GPT + * image models, which always return base64-encoded images. + */ + response_format?: 'url' | 'b64_json' | null; - /** - * The size of the generated images. Must be one of `1024x1024`, `1536x1024` - * (landscape), `1024x1536` (portrait), or `auto` (default value) for the GPT image - * models, one of `256x256`, `512x512`, or `1024x1024` for `dall-e-2`, and one of - * `1024x1024`, `1792x1024`, or `1024x1792` for `dall-e-3`. - */ - size?: - | 'auto' - | '1024x1024' - | '1536x1024' - | '1024x1536' - | '256x256' - | '512x512' - | '1792x1024' - | '1024x1792' - | null; + /** + * The size of the generated images. Must be one of `1024x1024`, `1536x1024` + * (landscape), `1024x1536` (portrait), or `auto` (default value) for the GPT image + * models, one of `256x256`, `512x512`, or `1024x1024` for `dall-e-2`, and one of + * `1024x1024`, `1792x1024`, or `1024x1792` for `dall-e-3`. + */ + size?: + | 'auto' + | '1024x1024' + | '1536x1024' + | '1024x1536' + | '256x256' + | '512x512' + | '1792x1024' + | '1024x1792' + | null; - /** - * Generate the image in streaming mode. Defaults to `false`. See the - * [Image generation guide](https://platform.openai.com/docs/guides/image-generation) - * for more information. This parameter is only supported for the GPT image models. - */ - stream?: boolean | null; + /** + * Generate the image in streaming mode. Defaults to `false`. See the + * [Image generation guide](https://platform.openai.com/docs/guides/image-generation) + * for more information. This parameter is only supported for the GPT image models. + */ + stream?: boolean | null; - /** - * 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. - */ - style?: 'vivid' | 'natural' | null; + /** + * 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. + */ + style?: 'vivid' | 'natural' | null; - /** - * A unique identifier representing your end-user, which can help OpenAI to monitor - * and detect abuse. - * [Learn more](https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids). - */ - user?: string; + /** + * A unique identifier representing your end-user, which can help OpenAI to monitor + * and detect abuse. + * [Learn more](https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids). + */ + user?: string; } export namespace ImageGenerateParams { @@ -817,7 +833,8 @@ export namespace ImageGenerateParams { export type ImageGenerateParamsStreaming = ImagesAPI.ImageGenerateParamsStreaming; } -export interface ImageGenerateParamsNonStreaming extends ImageGenerateParamsBase { +export type ImageGenerateParamsNonStreaming = + ImageGenerateParamsBase & { /** * Generate the image in streaming mode. Defaults to `false`. See the * [Image generation guide](https://platform.openai.com/docs/guides/image-generation) @@ -826,7 +843,8 @@ export interface ImageGenerateParamsNonStreaming extends ImageGenerateParamsBase stream?: false | null; } -export interface ImageGenerateParamsStreaming extends ImageGenerateParamsBase { +export type ImageGenerateParamsStreaming = + ImageGenerateParamsBase & { /** * Generate the image in streaming mode. Defaults to `false`. See the * [Image generation guide](https://platform.openai.com/docs/guides/image-generation)