diff --git a/src/libs/Ideogram/Generated/Ideogram.Design.JsonSerializerContext.g.cs b/src/libs/Ideogram/Generated/Ideogram.Design.JsonSerializerContext.g.cs index c173f58..37713dc 100644 --- a/src/libs/Ideogram/Generated/Ideogram.Design.JsonSerializerContext.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.Design.JsonSerializerContext.g.cs @@ -36,6 +36,7 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.LayerizeDesignIdeogramV3Request))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObject))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObject))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObject))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockAlignment), TypeInfoPropertyName = "DetectedTextBlockAlignment2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockFormattingItem), TypeInfoPropertyName = "DetectedTextBlockFormattingItem2")] diff --git a/src/libs/Ideogram/Generated/Ideogram.EditWorkflow.JsonSerializerContext.g.cs b/src/libs/Ideogram/Generated/Ideogram.EditWorkflow.JsonSerializerContext.g.cs index 043bae9..ae00dba 100644 --- a/src/libs/Ideogram/Generated/Ideogram.EditWorkflow.JsonSerializerContext.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.EditWorkflow.JsonSerializerContext.g.cs @@ -58,6 +58,8 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.AdLocalizerQuality), TypeInfoPropertyName = "AdLocalizerQuality2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VectorizerResponse))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VectorizerRequest))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResponse))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerRequest))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.AdResizerResponse))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.AdResizerRequest))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.AdResizerRequestResolution), TypeInfoPropertyName = "AdResizerRequestResolution2")] diff --git a/src/libs/Ideogram/Generated/Ideogram.EditWorkflowClient.PostTextLayerizer.g.cs b/src/libs/Ideogram/Generated/Ideogram.EditWorkflowClient.PostTextLayerizer.g.cs new file mode 100644 index 0000000..859aa6b --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.EditWorkflowClient.PostTextLayerizer.g.cs @@ -0,0 +1,886 @@ + +#nullable enable + +namespace Ideogram +{ + public partial class EditWorkflowClient + { + + + private static readonly global::Ideogram.EndPointSecurityRequirement s_PostTextLayerizerSecurityRequirement0 = + new global::Ideogram.EndPointSecurityRequirement + { + Authorizations = new global::Ideogram.EndPointAuthorizationRequirement[] + { new global::Ideogram.EndPointAuthorizationRequirement + { + Type = "Http", + SchemeId = "HttpBearer", + Location = "Header", + Name = "Bearer", + FriendlyName = "Bearer", + }, + }, + }; + private static readonly global::Ideogram.EndPointSecurityRequirement[] s_PostTextLayerizerSecurityRequirements = + new global::Ideogram.EndPointSecurityRequirement[] + { s_PostTextLayerizerSecurityRequirement0, + }; + partial void PreparePostTextLayerizerArguments( + global::System.Net.Http.HttpClient httpClient, + ref bool? dryRun, + global::Ideogram.TextLayerizerRequest request); + partial void PreparePostTextLayerizerRequest( + global::System.Net.Http.HttpClient httpClient, + global::System.Net.Http.HttpRequestMessage httpRequestMessage, + bool? dryRun, + global::Ideogram.TextLayerizerRequest request); + partial void ProcessPostTextLayerizerResponse( + global::System.Net.Http.HttpClient httpClient, + global::System.Net.Http.HttpResponseMessage httpResponseMessage); + + partial void ProcessPostTextLayerizerResponseContent( + global::System.Net.Http.HttpClient httpClient, + global::System.Net.Http.HttpResponseMessage httpResponseMessage, + ref string content); + + /// + /// Text Layerizer
+ /// Turns a flat image into an editable design asynchronously: detected text
+ /// is returned as positioned text blocks with matched fonts, sizes, and
+ /// colors, alongside a text-free base image and a standalone HTML page of
+ /// the editable design. Returns a `generation_id`; poll
+ /// `GET /v2/generations/{generation_id}` or supply a `webhook_url`. + ///
+ /// + /// Default Value: false + /// + /// + /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering. + /// The token to cancel the operation with + /// + public async global::System.Threading.Tasks.Task PostTextLayerizerAsync( + + global::Ideogram.TextLayerizerRequest request, + bool? dryRun = default, + global::Ideogram.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default) + { + var __response = await PostTextLayerizerAsResponseAsync( + + request: request, + dryRun: dryRun, + requestOptions: requestOptions, + cancellationToken: cancellationToken + ).ConfigureAwait(false); + + return __response.Body; + } + /// + /// Text Layerizer
+ /// Turns a flat image into an editable design asynchronously: detected text
+ /// is returned as positioned text blocks with matched fonts, sizes, and
+ /// colors, alongside a text-free base image and a standalone HTML page of
+ /// the editable design. Returns a `generation_id`; poll
+ /// `GET /v2/generations/{generation_id}` or supply a `webhook_url`. + ///
+ /// + /// Default Value: false + /// + /// + /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering. + /// The token to cancel the operation with + /// + public async global::System.Threading.Tasks.Task> PostTextLayerizerAsResponseAsync( + + global::Ideogram.TextLayerizerRequest request, + bool? dryRun = default, + global::Ideogram.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default) + { + request = request ?? throw new global::System.ArgumentNullException(nameof(request)); + + PrepareArguments( + client: HttpClient); + PreparePostTextLayerizerArguments( + httpClient: HttpClient, + dryRun: ref dryRun, + request: request); + + + var __authorizations = global::Ideogram.EndPointSecurityResolver.ResolveAuthorizations( + availableAuthorizations: Authorizations, + securityRequirements: s_PostTextLayerizerSecurityRequirements, + operationName: "PostTextLayerizerAsync"); + + using var __timeoutCancellationTokenSource = global::Ideogram.AutoSDKRequestOptionsSupport.CreateTimeoutCancellationTokenSource( + clientOptions: Options, + requestOptions: requestOptions, + cancellationToken: cancellationToken); + var __effectiveCancellationToken = __timeoutCancellationTokenSource?.Token ?? cancellationToken; + var __effectiveReadResponseAsString = global::Ideogram.AutoSDKRequestOptionsSupport.GetReadResponseAsString( + clientOptions: Options, + requestOptions: requestOptions, + fallbackValue: ReadResponseAsString); + var __maxAttempts = global::Ideogram.AutoSDKRequestOptionsSupport.GetMaxAttempts( + clientOptions: Options, + requestOptions: requestOptions, + supportsRetry: false); + + global::System.Net.Http.HttpRequestMessage __CreateHttpRequest() + { + + var __pathBuilder = new global::Ideogram.PathBuilder( + path: "/v2/tool/text-layerizer", + baseUri: HttpClient.BaseAddress); + __pathBuilder + .AddOptionalParameter("dry_run", dryRun?.ToString().ToLowerInvariant()) + ; + var __path = __pathBuilder.ToString(); + __path = global::Ideogram.AutoSDKRequestOptionsSupport.AppendQueryParameters( + path: __path, + clientParameters: Options.QueryParameters, + requestParameters: requestOptions?.QueryParameters); + var __httpRequest = new global::System.Net.Http.HttpRequestMessage( + method: global::System.Net.Http.HttpMethod.Post, + requestUri: new global::System.Uri(__path, global::System.UriKind.RelativeOrAbsolute)); +#if NET6_0_OR_GREATER + __httpRequest.Version = global::System.Net.HttpVersion.Version11; + __httpRequest.VersionPolicy = global::System.Net.Http.HttpVersionPolicy.RequestVersionOrHigher; +#endif + + foreach (var __authorization in __authorizations) + { + if (__authorization.Type == "Http" || + __authorization.Type == "OAuth2" || + __authorization.Type == "OpenIdConnect") + { + __httpRequest.Headers.Authorization = new global::System.Net.Http.Headers.AuthenticationHeaderValue( + scheme: __authorization.Name, + parameter: __authorization.Value); + } + else if (__authorization.Type == "ApiKey" && + __authorization.Location == "Header") + { + __httpRequest.Headers.Add(__authorization.Name, __authorization.Value); + } + } + + var __httpRequestContent = new global::System.Net.Http.MultipartFormDataContent(); + if (request.Image != default) + { + + var __contentImage = new global::System.Net.Http.ByteArrayContent(request.Image ?? global::System.Array.Empty()); + __contentImage.Headers.ContentType = new global::System.Net.Http.Headers.MediaTypeHeaderValue( + request.Imagename is null + ? "application/octet-stream" + : (global::System.IO.Path.GetExtension(request.Imagename) ?? string.Empty).ToLowerInvariant() switch + { + ".aac" => "audio/aac", + ".flac" => "audio/flac", + ".gif" => "image/gif", + ".jpeg" => "image/jpeg", + ".jpg" => "image/jpeg", + ".json" => "application/json", + ".m4a" => "audio/mp4", + ".mp3" => "audio/mpeg", + ".mp4" => "video/mp4", + ".mpeg" => "audio/mpeg", + ".mpga" => "audio/mpeg", + ".oga" => "audio/ogg", + ".ogg" => "audio/ogg", + ".opus" => "audio/ogg", + ".pdf" => "application/pdf", + ".png" => "image/png", + ".txt" => "text/plain", + ".wav" => "audio/wav", + ".weba" => "audio/webm", + ".webm" => "video/webm", + ".webp" => "image/webp", + _ => "application/octet-stream", + }); + __httpRequestContent.Add( + content: __contentImage, + name: "\"image\"", + fileName: request.Imagename != null ? $"\"{request.Imagename}\"" : string.Empty); + if (__contentImage.Headers.ContentDisposition != null) + { + __contentImage.Headers.ContentDisposition.FileNameStar = null; + } + + } + if (request.ImageAssetIdentifier != default) + { + + __httpRequestContent.Add( + content: new global::System.Net.Http.StringContent(request.ImageAssetIdentifier.ToJson(JsonSerializerContext)), + name: "\"image_asset_identifier\""); + + } + if (request.Prompt != default) + { + + __httpRequestContent.Add( + content: new global::System.Net.Http.StringContent(request.Prompt ?? string.Empty), + name: "\"prompt\""); + + } + if (request.Seed != default) + { + + __httpRequestContent.Add( + content: new global::System.Net.Http.StringContent(global::System.Convert.ToString(request.Seed, global::System.Globalization.CultureInfo.InvariantCulture) ?? string.Empty), + name: "\"seed\""); + + } + if (request.FontCandidateFiles != default) + { + + for (var __iFontCandidateFiles = 0; __iFontCandidateFiles < request.FontCandidateFiles.Count; __iFontCandidateFiles++) + { + var __contentFontCandidateFiles = new global::System.Net.Http.ByteArrayContent(request.FontCandidateFiles[__iFontCandidateFiles]); + __contentFontCandidateFiles.Headers.ContentType = new global::System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); + __httpRequestContent.Add( + content: __contentFontCandidateFiles, + name: "\"font_candidate_files\"", + fileName: $"\"file{__iFontCandidateFiles}.bin\""); + if (__contentFontCandidateFiles.Headers.ContentDisposition != null) + { + __contentFontCandidateFiles.Headers.ContentDisposition.FileNameStar = null; + } + } + + } + if (request.Private != default) + { + + __httpRequestContent.Add( + content: new global::System.Net.Http.StringContent((global::System.Convert.ToString(request.Private, global::System.Globalization.CultureInfo.InvariantCulture) ?? string.Empty).ToLowerInvariant()), + name: "\"private\""); + + } + if (request.TargetCollectionId != default) + { + + __httpRequestContent.Add( + content: new global::System.Net.Http.StringContent(request.TargetCollectionId ?? string.Empty), + name: "\"target_collection_id\""); + + } + if (request.WebhookUrl != default) + { + + __httpRequestContent.Add( + content: new global::System.Net.Http.StringContent(request.WebhookUrl ?? string.Empty), + name: "\"webhook_url\""); + + } + + __httpRequest.Content = __httpRequestContent; + + global::Ideogram.AutoSDKRequestOptionsSupport.ApplyHeaders( + request: __httpRequest, + clientHeaders: Options.Headers, + requestHeaders: requestOptions?.Headers); + + PrepareRequest( + client: HttpClient, + request: __httpRequest); + PreparePostTextLayerizerRequest( + httpClient: HttpClient, + httpRequestMessage: __httpRequest, + dryRun: dryRun, + request: request); + + return __httpRequest; + } + + global::System.Net.Http.HttpRequestMessage? __httpRequest = null; + global::System.Net.Http.HttpResponseMessage? __response = null; + var __attemptNumber = 0; + try + { + for (var __attempt = 1; __attempt <= __maxAttempts; __attempt++) + { + __attemptNumber = __attempt; + __httpRequest = __CreateHttpRequest(); + await global::Ideogram.AutoSDKRequestOptionsSupport.OnBeforeRequestAsync( + clientOptions: Options, + context: global::Ideogram.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "PostTextLayerizer", + methodName: "PostTextLayerizerAsync", + pathTemplate: "\"/v2/tool/text-layerizer\"", + httpMethod: "POST", + baseUri: BaseUri, + request: __httpRequest ?? throw new global::System.InvalidOperationException("The HTTP request was not created before invoking a request hook."), + response: null, + exception: null, + clientOptions: Options, + requestOptions: requestOptions, + attempt: __attempt, + maxAttempts: __maxAttempts, + willRetry: false, + retryDelay: null, + retryReason: global::System.String.Empty, + cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false); + try + { + __response = await HttpClient.SendAsync( + request: __httpRequest, + completionOption: global::System.Net.Http.HttpCompletionOption.ResponseContentRead, + cancellationToken: __effectiveCancellationToken).ConfigureAwait(false); + } + catch (global::System.Net.Http.HttpRequestException __exception) + { + var __retryDelay = global::Ideogram.AutoSDKRequestOptionsSupport.GetRetryDelay( + clientOptions: Options, + requestOptions: requestOptions, + response: null, + attempt: __attempt); + var __willRetry = __attempt < __maxAttempts && !__effectiveCancellationToken.IsCancellationRequested; + await global::Ideogram.AutoSDKRequestOptionsSupport.OnAfterErrorAsync( + clientOptions: Options, + context: global::Ideogram.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "PostTextLayerizer", + methodName: "PostTextLayerizerAsync", + pathTemplate: "\"/v2/tool/text-layerizer\"", + httpMethod: "POST", + baseUri: BaseUri, + request: __httpRequest ?? throw new global::System.InvalidOperationException("The HTTP request was not created before invoking a request hook."), + response: null, + exception: __exception, + clientOptions: Options, + requestOptions: requestOptions, + attempt: __attempt, + maxAttempts: __maxAttempts, + willRetry: __willRetry, + retryDelay: __willRetry ? __retryDelay : (global::System.TimeSpan?)null, + retryReason: "exception", + cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false); + if (!__willRetry) + { + throw; + } + + __httpRequest.Dispose(); + __httpRequest = null; + await global::Ideogram.AutoSDKRequestOptionsSupport.DelayBeforeRetryAsync( + retryDelay: __retryDelay, + cancellationToken: __effectiveCancellationToken).ConfigureAwait(false); + continue; + } + + if (__response != null && + __attempt < __maxAttempts && + global::Ideogram.AutoSDKRequestOptionsSupport.ShouldRetryStatusCode(__response.StatusCode)) + { + var __retryDelay = global::Ideogram.AutoSDKRequestOptionsSupport.GetRetryDelay( + clientOptions: Options, + requestOptions: requestOptions, + response: __response, + attempt: __attempt); + await global::Ideogram.AutoSDKRequestOptionsSupport.OnAfterErrorAsync( + clientOptions: Options, + context: global::Ideogram.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "PostTextLayerizer", + methodName: "PostTextLayerizerAsync", + pathTemplate: "\"/v2/tool/text-layerizer\"", + httpMethod: "POST", + baseUri: BaseUri, + request: __httpRequest ?? throw new global::System.InvalidOperationException("The HTTP request was not created before invoking a request hook."), + response: __response, + exception: null, + clientOptions: Options, + requestOptions: requestOptions, + attempt: __attempt, + maxAttempts: __maxAttempts, + willRetry: true, + retryDelay: __retryDelay, + retryReason: "status:" + ((int)__response.StatusCode).ToString(global::System.Globalization.CultureInfo.InvariantCulture), + cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false); + __response.Dispose(); + __response = null; + __httpRequest.Dispose(); + __httpRequest = null; + await global::Ideogram.AutoSDKRequestOptionsSupport.DelayBeforeRetryAsync( + retryDelay: __retryDelay, + cancellationToken: __effectiveCancellationToken).ConfigureAwait(false); + continue; + } + + break; + } + + if (__response == null) + { + throw new global::System.InvalidOperationException("No response received."); + } + + using (__response) + { + + ProcessResponse( + client: HttpClient, + response: __response); + ProcessPostTextLayerizerResponse( + httpClient: HttpClient, + httpResponseMessage: __response); + if (__response.IsSuccessStatusCode) + { + await global::Ideogram.AutoSDKRequestOptionsSupport.OnAfterSuccessAsync( + clientOptions: Options, + context: global::Ideogram.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "PostTextLayerizer", + methodName: "PostTextLayerizerAsync", + pathTemplate: "\"/v2/tool/text-layerizer\"", + httpMethod: "POST", + baseUri: BaseUri, + request: __httpRequest ?? throw new global::System.InvalidOperationException("The HTTP request was not created before invoking a request hook."), + response: __response, + exception: null, + clientOptions: Options, + requestOptions: requestOptions, + attempt: __attemptNumber, + maxAttempts: __maxAttempts, + willRetry: false, + retryDelay: null, + retryReason: global::System.String.Empty, + cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false); + } + else + { + await global::Ideogram.AutoSDKRequestOptionsSupport.OnAfterErrorAsync( + clientOptions: Options, + context: global::Ideogram.AutoSDKRequestOptionsSupport.CreateHookContext( + operationId: "PostTextLayerizer", + methodName: "PostTextLayerizerAsync", + pathTemplate: "\"/v2/tool/text-layerizer\"", + httpMethod: "POST", + baseUri: BaseUri, + request: __httpRequest ?? throw new global::System.InvalidOperationException("The HTTP request was not created before invoking a request hook."), + response: __response, + exception: null, + clientOptions: Options, + requestOptions: requestOptions, + attempt: __attemptNumber, + maxAttempts: __maxAttempts, + willRetry: false, + retryDelay: null, + retryReason: global::System.String.Empty, + cancellationToken: __effectiveCancellationToken)).ConfigureAwait(false); + } + // + if ((int)__response.StatusCode == 400) + { + string? __content_400 = null; + global::System.Exception? __exception_400 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_400 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + else + { + __content_400 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + } + catch (global::System.Exception __ex) + { + __exception_400 = __ex; + } + + + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_400 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_400, + responseBody: __content_400, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // + if ((int)__response.StatusCode == 401) + { + string? __content_401 = null; + global::System.Exception? __exception_401 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_401 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + else + { + __content_401 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + } + catch (global::System.Exception __ex) + { + __exception_401 = __ex; + } + + + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_401 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_401, + responseBody: __content_401, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // Insufficient credits. + if ((int)__response.StatusCode == 402) + { + string? __content_402 = null; + global::System.Exception? __exception_402 = null; + global::Ideogram.GenerationErrorResponse? __value_402 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_402 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_402 = global::Ideogram.GenerationErrorResponse.FromJson(__content_402, JsonSerializerContext); + } + else + { + __content_402 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_402 = global::Ideogram.GenerationErrorResponse.FromJson(__content_402, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_402 = __ex; + } + + + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_402 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_402, + responseBody: __content_402, + responseObject: __value_402, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // + if ((int)__response.StatusCode == 403) + { + string? __content_403 = null; + global::System.Exception? __exception_403 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_403 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + else + { + __content_403 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + } + catch (global::System.Exception __ex) + { + __exception_403 = __ex; + } + + + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_403 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_403, + responseBody: __content_403, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // + if ((int)__response.StatusCode == 404) + { + string? __content_404 = null; + global::System.Exception? __exception_404 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_404 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + else + { + __content_404 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + } + catch (global::System.Exception __ex) + { + __exception_404 = __ex; + } + + + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_404 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_404, + responseBody: __content_404, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // Too many requests. + if ((int)__response.StatusCode == 429) + { + string? __content_429 = null; + global::System.Exception? __exception_429 = null; + global::Ideogram.GenerationErrorResponse? __value_429 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_429 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + __value_429 = global::Ideogram.GenerationErrorResponse.FromJson(__content_429, JsonSerializerContext); + } + else + { + __content_429 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + + __value_429 = global::Ideogram.GenerationErrorResponse.FromJson(__content_429, JsonSerializerContext); + } + } + catch (global::System.Exception __ex) + { + __exception_429 = __ex; + } + + + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_429 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_429, + responseBody: __content_429, + responseObject: __value_429, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + // + if ((int)__response.StatusCode == 503) + { + string? __content_503 = null; + global::System.Exception? __exception_503 = null; + try + { + if (__effectiveReadResponseAsString) + { + __content_503 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + else + { + __content_503 = await __response.Content.ReadAsStringAsync(__effectiveCancellationToken).ConfigureAwait(false); + } + } + catch (global::System.Exception __ex) + { + __exception_503 = __ex; + } + + + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content_503 ?? __response.ReasonPhrase ?? string.Empty, + innerException: __exception_503, + responseBody: __content_503, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + + if (__effectiveReadResponseAsString) + { + var __content = await __response.Content.ReadAsStringAsync( + #if NET5_0_OR_GREATER + __effectiveCancellationToken + #endif + ).ConfigureAwait(false); + + ProcessResponseContent( + client: HttpClient, + response: __response, + content: ref __content); + ProcessPostTextLayerizerResponseContent( + httpClient: HttpClient, + httpResponseMessage: __response, + content: ref __content); + + try + { + __response.EnsureSuccessStatusCode(); + + var __value = global::Ideogram.TextLayerizerResponse.FromJson(__content, JsonSerializerContext) ?? + throw new global::System.InvalidOperationException($"Response deserialization failed for \"{__content}\" "); + return new global::Ideogram.AutoSDKHttpResponse( + statusCode: __response.StatusCode, + headers: global::Ideogram.AutoSDKHttpResponse.CreateHeaders(__response), + requestUri: __response.RequestMessage?.RequestUri, + body: __value); + } + catch (global::System.Exception __ex) + { + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content ?? __response.ReasonPhrase ?? string.Empty, + innerException: __ex, + responseBody: __content, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + } + else + { + try + { + __response.EnsureSuccessStatusCode(); + using var __content = await __response.Content.ReadAsStreamAsync( + #if NET5_0_OR_GREATER + __effectiveCancellationToken + #endif + ).ConfigureAwait(false); + + var __value = await global::Ideogram.TextLayerizerResponse.FromJsonStreamAsync(__content, JsonSerializerContext).ConfigureAwait(false) ?? + throw new global::System.InvalidOperationException("Response deserialization failed."); + return new global::Ideogram.AutoSDKHttpResponse( + statusCode: __response.StatusCode, + headers: global::Ideogram.AutoSDKHttpResponse.CreateHeaders(__response), + requestUri: __response.RequestMessage?.RequestUri, + body: __value); + } + catch (global::System.Exception __ex) + { + string? __content = null; + try + { + __content = await __response.Content.ReadAsStringAsync( + #if NET5_0_OR_GREATER + __effectiveCancellationToken + #endif + ).ConfigureAwait(false); + } + catch (global::System.Exception) + { + } + + throw global::Ideogram.ApiException.Create( + statusCode: __response.StatusCode, + message: __content ?? __response.ReasonPhrase ?? string.Empty, + innerException: __ex, + responseBody: __content, + responseHeaders: global::System.Linq.Enumerable.ToDictionary( + __response.Headers, + h => h.Key, + h => h.Value)); + } + } + + } + } + finally + { + __httpRequest?.Dispose(); + } + } + /// + /// Text Layerizer
+ /// Turns a flat image into an editable design asynchronously: detected text
+ /// is returned as positioned text blocks with matched fonts, sizes, and
+ /// colors, alongside a text-free base image and a standalone HTML page of
+ /// the editable design. Returns a `generation_id`; poll
+ /// `GET /v2/generations/{generation_id}` or supply a `webhook_url`. + ///
+ /// + /// Default Value: false + /// + /// + /// JPEG, PNG or WEBP source; at most 50 MB. Multipart only. + /// + /// + /// JPEG, PNG or WEBP source; at most 50 MB. Multipart only. + /// + /// + /// An identifier for an ideogram asset.
+ /// Example: {"asset_type":"RESPONSE","asset_id":"7uS_VESkRI6O3-sVgHQp_A"} + /// + /// + /// A description of the image, used to guide text detection. When omitted, detection runs on the image alone. + /// + /// + /// Random seed. Set for reproducible generation.
+ /// Example: 12345 + /// + /// + /// Candidate font files to make available for text style matching and to embed in the standalone HTML page. Supported formats .ttf, .otf, .woff, .woff2 (max 5 MB each, at most 5 files). Multipart only. You are responsible for holding the rights to embed and redistribute the fonts you upload. + /// + /// + /// Outputs are private by default. Enterprise outputs are always private. + /// + /// + /// URL-safe base64 ID of a writable destination collection. + /// + /// + /// HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a
+ /// JSON POST to this URL once all images for the request have finished
+ /// generating. The body mirrors the synchronous generate response:
+ /// `request_id`, `created`, and a `data` array
+ /// containing every generated image (`url`, `prompt`, `resolution`, `seed`,
+ /// `is_image_safe`). Each delivery is signed with Ed25519 and verifiable
+ /// against the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;
+ /// private and loopback hosts and the cloud metadata service are rejected.
+ /// Example: https://api.example.com/webhooks/ideogram + /// + /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering. + /// The token to cancel the operation with + /// + public async global::System.Threading.Tasks.Task PostTextLayerizerAsync( + bool? dryRun = default, + byte[]? image = default, + string? imagename = default, + global::Ideogram.AssetIdentifier? imageAssetIdentifier = default, + string? prompt = default, + int? seed = default, + global::System.Collections.Generic.IList? fontCandidateFiles = default, + bool? @private = default, + string? targetCollectionId = default, + string? webhookUrl = default, + global::Ideogram.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default) + { + var __request = new global::Ideogram.TextLayerizerRequest + { + Image = image, + Imagename = imagename, + ImageAssetIdentifier = imageAssetIdentifier, + Prompt = prompt, + Seed = seed, + FontCandidateFiles = fontCandidateFiles, + Private = @private, + TargetCollectionId = targetCollectionId, + WebhookUrl = webhookUrl, + }; + + return await PostTextLayerizerAsync( + dryRun: dryRun, + request: __request, + requestOptions: requestOptions, + cancellationToken: cancellationToken).ConfigureAwait(false); + } + } +} \ No newline at end of file diff --git a/src/libs/Ideogram/Generated/Ideogram.Generate.JsonSerializerContext.g.cs b/src/libs/Ideogram/Generated/Ideogram.Generate.JsonSerializerContext.g.cs index 68c8e26..db066f1 100644 --- a/src/libs/Ideogram/Generated/Ideogram.Generate.JsonSerializerContext.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.Generate.JsonSerializerContext.g.cs @@ -16,7 +16,11 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(string))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(int))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(long))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.LayerizedTextBlock), TypeInfoPropertyName = "LayerizedTextBlock2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlock))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.LayerizedTextBlockVariant2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextColorSpan))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.GenerateImageRequestV4))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.V4JsonPrompt))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.ResolutionV4), TypeInfoPropertyName = "ResolutionV42")] @@ -183,6 +187,9 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectMimeType), TypeInfoPropertyName = "SvgGenerationObjectMimeType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObject))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObjectObjectType), TypeInfoPropertyName = "VideoObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObject))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObjectObjectType), TypeInfoPropertyName = "TextLayerizerResultObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockAlignment), TypeInfoPropertyName = "DetectedTextBlockAlignment2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockFormattingItem), TypeInfoPropertyName = "DetectedTextBlockFormattingItem2")] @@ -195,6 +202,7 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.GenerationResponseDataInnerDiscriminatorObjectType), TypeInfoPropertyName = "GenerationResponseDataInnerDiscriminatorObjectType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(int?))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(long?))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.LayerizedTextBlock?), TypeInfoPropertyName = "NullableLayerizedTextBlock2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.ResolutionV4?), TypeInfoPropertyName = "NullableResolutionV42")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.RenderingSpeed?), TypeInfoPropertyName = "NullableRenderingSpeed2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(bool?))] @@ -253,6 +261,7 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectObjectType?), TypeInfoPropertyName = "NullableSvgGenerationObjectObjectType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectMimeType?), TypeInfoPropertyName = "NullableSvgGenerationObjectMimeType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObjectObjectType?), TypeInfoPropertyName = "NullableVideoObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObjectObjectType?), TypeInfoPropertyName = "NullableTextLayerizerResultObjectObjectType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockAlignment?), TypeInfoPropertyName = "NullableDetectedTextBlockAlignment2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockFormattingItem?), TypeInfoPropertyName = "NullableDetectedTextBlockFormattingItem2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockRole?), TypeInfoPropertyName = "NullableDetectedTextBlockRole2")] @@ -260,6 +269,7 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.PostGenerateDesignV4200Response?), TypeInfoPropertyName = "NullablePostGenerateDesignV4200Response2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.PostGenerateDesignV4200ResponseDiscriminatorResponseType?), TypeInfoPropertyName = "NullablePostGenerateDesignV4200ResponseDiscriminatorResponseType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.GenerationResponseDataInnerDiscriminatorObjectType?), TypeInfoPropertyName = "NullableGenerationResponseDataInnerDiscriminatorObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] @@ -283,6 +293,7 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] internal sealed partial class GenerateSourceGenerationContextChunk0 : global::System.Text.Json.Serialization.JsonSerializerContext { @@ -331,6 +342,7 @@ private GenerateSourceGenerationContext(global::System.Text.Json.JsonSerializerO [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] public static void AddConverters(global::System.Text.Json.JsonSerializerOptions options) { + options.Converters.Add(new global::Ideogram.JsonConverters.LayerizedTextBlockJsonConverter()); options.Converters.Add(new global::Ideogram.JsonConverters.V4PromptElementJsonConverter()); options.Converters.Add(new global::Ideogram.JsonConverters.ColorPaletteWithPresetNameOrMembersJsonConverter()); options.Converters.Add(new global::Ideogram.JsonConverters.PostGenerateDesignV4200ResponseJsonConverter()); @@ -561,6 +573,10 @@ public override bool CanConvert(global::System.Type typeToConvert) || typeToConvert == typeof(global::Ideogram.VideoObjectObjectType?) + || typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType) + + || typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType?) + || typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment) || typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment?) @@ -1100,6 +1116,16 @@ public override bool CanConvert(global::System.Type typeToConvert) return new global::Ideogram.JsonConverters.VideoObjectObjectTypeNullableJsonConverter(); } + if (typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType)) + { + return new global::Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeJsonConverter(); + } + + if (typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType?)) + { + return new global::Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeNullableJsonConverter(); + } + if (typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment)) { return new global::Ideogram.JsonConverters.DetectedTextBlockAlignmentJsonConverter(); diff --git a/src/libs/Ideogram/Generated/Ideogram.Generations.JsonSerializerContext.g.cs b/src/libs/Ideogram/Generated/Ideogram.Generations.JsonSerializerContext.g.cs index 2310c86..03a1d63 100644 --- a/src/libs/Ideogram/Generated/Ideogram.Generations.JsonSerializerContext.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.Generations.JsonSerializerContext.g.cs @@ -16,7 +16,11 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(string))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(int))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(long))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.LayerizedTextBlock), TypeInfoPropertyName = "LayerizedTextBlock2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlock))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.LayerizedTextBlockVariant2))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextColorSpan))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(bool))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.DateTime))] @@ -38,6 +42,9 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectMimeType), TypeInfoPropertyName = "SvgGenerationObjectMimeType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObject))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObjectObjectType), TypeInfoPropertyName = "VideoObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObject))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObjectObjectType), TypeInfoPropertyName = "TextLayerizerResultObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockAlignment), TypeInfoPropertyName = "DetectedTextBlockAlignment2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockFormattingItem), TypeInfoPropertyName = "DetectedTextBlockFormattingItem2")] @@ -46,6 +53,7 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.GenerationResponseDataInnerDiscriminatorObjectType), TypeInfoPropertyName = "GenerationResponseDataInnerDiscriminatorObjectType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(int?))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(long?))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.LayerizedTextBlock?), TypeInfoPropertyName = "NullableLayerizedTextBlock2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(bool?))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.DateTime?))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(float?))] @@ -58,13 +66,16 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectObjectType?), TypeInfoPropertyName = "NullableSvgGenerationObjectObjectType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectMimeType?), TypeInfoPropertyName = "NullableSvgGenerationObjectMimeType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObjectObjectType?), TypeInfoPropertyName = "NullableVideoObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObjectObjectType?), TypeInfoPropertyName = "NullableTextLayerizerResultObjectObjectType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockAlignment?), TypeInfoPropertyName = "NullableDetectedTextBlockAlignment2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockFormattingItem?), TypeInfoPropertyName = "NullableDetectedTextBlockFormattingItem2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockRole?), TypeInfoPropertyName = "NullableDetectedTextBlockRole2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.GenerationResponseDataInnerDiscriminatorObjectType?), TypeInfoPropertyName = "NullableGenerationResponseDataInnerDiscriminatorObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] internal sealed partial class GenerationsSourceGenerationContextChunk0 : global::System.Text.Json.Serialization.JsonSerializerContext { @@ -113,6 +124,7 @@ private GenerationsSourceGenerationContext(global::System.Text.Json.JsonSerializ [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] public static void AddConverters(global::System.Text.Json.JsonSerializerOptions options) { + options.Converters.Add(new global::Ideogram.JsonConverters.LayerizedTextBlockJsonConverter()); options.Converters.Add(new global::Ideogram.JsonConverters.GenerationResponseDataInnerJsonConverter()); options.Converters.Add(new global::Ideogram.JsonConverters.UnixTimestampJsonConverter()); options.Converters.Add(new LazyEnumJsonConverterFactory()); @@ -168,6 +180,10 @@ public override bool CanConvert(global::System.Type typeToConvert) || typeToConvert == typeof(global::Ideogram.VideoObjectObjectType?) + || typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType) + + || typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType?) + || typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment) || typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment?) @@ -269,6 +285,16 @@ public override bool CanConvert(global::System.Type typeToConvert) return new global::Ideogram.JsonConverters.VideoObjectObjectTypeNullableJsonConverter(); } + if (typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType)) + { + return new global::Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeJsonConverter(); + } + + if (typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType?)) + { + return new global::Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeNullableJsonConverter(); + } + if (typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment)) { return new global::Ideogram.JsonConverters.DetectedTextBlockAlignmentJsonConverter(); diff --git a/src/libs/Ideogram/Generated/Ideogram.IEditWorkflowClient.PostTextLayerizer.g.cs b/src/libs/Ideogram/Generated/Ideogram.IEditWorkflowClient.PostTextLayerizer.g.cs new file mode 100644 index 0000000..9e76470 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.IEditWorkflowClient.PostTextLayerizer.g.cs @@ -0,0 +1,114 @@ +#nullable enable + +namespace Ideogram +{ + public partial interface IEditWorkflowClient + { + /// + /// Text Layerizer
+ /// Turns a flat image into an editable design asynchronously: detected text
+ /// is returned as positioned text blocks with matched fonts, sizes, and
+ /// colors, alongside a text-free base image and a standalone HTML page of
+ /// the editable design. Returns a `generation_id`; poll
+ /// `GET /v2/generations/{generation_id}` or supply a `webhook_url`. + ///
+ /// + /// Default Value: false + /// + /// + /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering. + /// The token to cancel the operation with + /// + global::System.Threading.Tasks.Task PostTextLayerizerAsync( + + global::Ideogram.TextLayerizerRequest request, + bool? dryRun = default, + global::Ideogram.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default); + /// + /// Text Layerizer
+ /// Turns a flat image into an editable design asynchronously: detected text
+ /// is returned as positioned text blocks with matched fonts, sizes, and
+ /// colors, alongside a text-free base image and a standalone HTML page of
+ /// the editable design. Returns a `generation_id`; poll
+ /// `GET /v2/generations/{generation_id}` or supply a `webhook_url`. + ///
+ /// + /// Default Value: false + /// + /// + /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering. + /// The token to cancel the operation with + /// + global::System.Threading.Tasks.Task> PostTextLayerizerAsResponseAsync( + + global::Ideogram.TextLayerizerRequest request, + bool? dryRun = default, + global::Ideogram.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default); + /// + /// Text Layerizer
+ /// Turns a flat image into an editable design asynchronously: detected text
+ /// is returned as positioned text blocks with matched fonts, sizes, and
+ /// colors, alongside a text-free base image and a standalone HTML page of
+ /// the editable design. Returns a `generation_id`; poll
+ /// `GET /v2/generations/{generation_id}` or supply a `webhook_url`. + ///
+ /// + /// Default Value: false + /// + /// + /// JPEG, PNG or WEBP source; at most 50 MB. Multipart only. + /// + /// + /// JPEG, PNG or WEBP source; at most 50 MB. Multipart only. + /// + /// + /// An identifier for an ideogram asset.
+ /// Example: {"asset_type":"RESPONSE","asset_id":"7uS_VESkRI6O3-sVgHQp_A"} + /// + /// + /// A description of the image, used to guide text detection. When omitted, detection runs on the image alone. + /// + /// + /// Random seed. Set for reproducible generation.
+ /// Example: 12345 + /// + /// + /// Candidate font files to make available for text style matching and to embed in the standalone HTML page. Supported formats .ttf, .otf, .woff, .woff2 (max 5 MB each, at most 5 files). Multipart only. You are responsible for holding the rights to embed and redistribute the fonts you upload. + /// + /// + /// Outputs are private by default. Enterprise outputs are always private. + /// + /// + /// URL-safe base64 ID of a writable destination collection. + /// + /// + /// HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a
+ /// JSON POST to this URL once all images for the request have finished
+ /// generating. The body mirrors the synchronous generate response:
+ /// `request_id`, `created`, and a `data` array
+ /// containing every generated image (`url`, `prompt`, `resolution`, `seed`,
+ /// `is_image_safe`). Each delivery is signed with Ed25519 and verifiable
+ /// against the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;
+ /// private and loopback hosts and the cloud metadata service are rejected.
+ /// Example: https://api.example.com/webhooks/ideogram + /// + /// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering. + /// The token to cancel the operation with + /// + global::System.Threading.Tasks.Task PostTextLayerizerAsync( + bool? dryRun = default, + byte[]? image = default, + string? imagename = default, + global::Ideogram.AssetIdentifier? imageAssetIdentifier = default, + string? prompt = default, + int? seed = default, + global::System.Collections.Generic.IList? fontCandidateFiles = default, + bool? @private = default, + string? targetCollectionId = default, + string? webhookUrl = default, + global::Ideogram.AutoSDKRequestOptions? requestOptions = default, + global::System.Threading.CancellationToken cancellationToken = default); + } +} \ No newline at end of file diff --git a/src/libs/Ideogram/Generated/Ideogram.IImagesPreciseEditClient.PostPreciseEditImageV2Ideogram45.g.cs b/src/libs/Ideogram/Generated/Ideogram.IImagesPreciseEditClient.PostPreciseEditImageV2Ideogram45.g.cs index 09b98cf..046e122 100644 --- a/src/libs/Ideogram/Generated/Ideogram.IImagesPreciseEditClient.PostPreciseEditImageV2Ideogram45.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.IImagesPreciseEditClient.PostPreciseEditImageV2Ideogram45.g.cs @@ -12,8 +12,8 @@ public partial interface IImagesPreciseEditClient /// Returns results directly by default; set `async` or supply a
/// `webhook_url` to get a `generation_id` and poll
/// `GET /v2/generations/{generation_id}`.
- /// `context_window` narrows the edit to one region of the image, so a
- /// large image keeps its detail: pass `x,y,width,height`, or `auto`
+ /// `context_window` confines the edit to one region of the image, so a
+ /// large image keeps its detail: pass `y_min,x_min,y_max,x_max`, or `auto`
/// together with a `mask`. The result always keeps the image's own width
/// and height. /// @@ -38,8 +38,8 @@ public partial interface IImagesPreciseEditClient /// Returns results directly by default; set `async` or supply a
/// `webhook_url` to get a `generation_id` and poll
/// `GET /v2/generations/{generation_id}`.
- /// `context_window` narrows the edit to one region of the image, so a
- /// large image keeps its detail: pass `x,y,width,height`, or `auto`
+ /// `context_window` confines the edit to one region of the image, so a
+ /// large image keeps its detail: pass `y_min,x_min,y_max,x_max`, or `auto`
/// together with a `mask`. The result always keeps the image's own width
/// and height. /// @@ -64,8 +64,8 @@ public partial interface IImagesPreciseEditClient /// Returns results directly by default; set `async` or supply a
/// `webhook_url` to get a `generation_id` and poll
/// `GET /v2/generations/{generation_id}`.
- /// `context_window` narrows the edit to one region of the image, so a
- /// large image keeps its detail: pass `x,y,width,height`, or `auto`
+ /// `context_window` confines the edit to one region of the image, so a
+ /// large image keeps its detail: pass `y_min,x_min,y_max,x_max`, or `auto`
/// together with a `mask`. The result always keeps the image's own width
/// and height. /// @@ -99,11 +99,11 @@ public partial interface IImagesPreciseEditClient /// An optional mask that limits the edit to part of `image` (max 50MB; JPEG, PNG, or WEBP). Multipart requests only. Black marks the area to edit and white the area to keep; values in between are rounded to the nearer of the two. The mask must have the same width and height as `image` and contain both black and white areas. Requires `image` as raw bytes; masks cannot be combined with asset references. A masked request can include at most three `reference_images`. /// /// - /// How much of the image being edited the model may see and change.
+ /// Which region of the image to edit.
/// `none`, the default, edits the whole image. A large image may come back smaller than it was sent.
/// `auto` requires a `mask` and automatically selects an appropriate context region around the masked area.
- /// `x,y,width,height` names the region explicitly, in the edited image's own pixels with the origin at its top-left corner — for example `1024,512,2048,1536`. The region must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.
- /// With `auto` or an explicit region, every pixel outside the region is returned exactly as supplied and the output keeps the image's own width and height.
+ /// `y_min,x_min,y_max,x_max` names the region explicitly, by its corners. Rows come first, matching the `bbox` ordering used elsewhere in this API, and the values are the edited image's own pixels with the origin at its top-left corner. For example `512,1024,2048,3072` is the region 2048 pixels wide and 1536 tall whose top-left corner is 1024 across and 512 down. The maximum edges are exclusive, so the region measures `x_max - x_min` by `y_max - y_min`. It must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.
+ /// With `auto` or an explicit region, only that region changes and the output keeps the image's own width and height.
/// Default Value: none /// /// diff --git a/src/libs/Ideogram/Generated/Ideogram.ImagesPreciseEditClient.PostPreciseEditImageV2Ideogram45.g.cs b/src/libs/Ideogram/Generated/Ideogram.ImagesPreciseEditClient.PostPreciseEditImageV2Ideogram45.g.cs index 4252095..ce0a248 100644 --- a/src/libs/Ideogram/Generated/Ideogram.ImagesPreciseEditClient.PostPreciseEditImageV2Ideogram45.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.ImagesPreciseEditClient.PostPreciseEditImageV2Ideogram45.g.cs @@ -51,8 +51,8 @@ partial void ProcessPostPreciseEditImageV2Ideogram45ResponseContent( /// Returns results directly by default; set `async` or supply a
/// `webhook_url` to get a `generation_id` and poll
/// `GET /v2/generations/{generation_id}`.
- /// `context_window` narrows the edit to one region of the image, so a
- /// large image keeps its detail: pass `x,y,width,height`, or `auto`
+ /// `context_window` confines the edit to one region of the image, so a
+ /// large image keeps its detail: pass `y_min,x_min,y_max,x_max`, or `auto`
/// together with a `mask`. The result always keeps the image's own width
/// and height. /// @@ -88,8 +88,8 @@ partial void ProcessPostPreciseEditImageV2Ideogram45ResponseContent( /// Returns results directly by default; set `async` or supply a
/// `webhook_url` to get a `generation_id` and poll
/// `GET /v2/generations/{generation_id}`.
- /// `context_window` narrows the edit to one region of the image, so a
- /// large image keeps its detail: pass `x,y,width,height`, or `auto`
+ /// `context_window` confines the edit to one region of the image, so a
+ /// large image keeps its detail: pass `y_min,x_min,y_max,x_max`, or `auto`
/// together with a `mask`. The result always keeps the image's own width
/// and height. /// @@ -902,8 +902,8 @@ request.Maskname is null /// Returns results directly by default; set `async` or supply a
/// `webhook_url` to get a `generation_id` and poll
/// `GET /v2/generations/{generation_id}`.
- /// `context_window` narrows the edit to one region of the image, so a
- /// large image keeps its detail: pass `x,y,width,height`, or `auto`
+ /// `context_window` confines the edit to one region of the image, so a
+ /// large image keeps its detail: pass `y_min,x_min,y_max,x_max`, or `auto`
/// together with a `mask`. The result always keeps the image's own width
/// and height. /// @@ -937,11 +937,11 @@ request.Maskname is null /// An optional mask that limits the edit to part of `image` (max 50MB; JPEG, PNG, or WEBP). Multipart requests only. Black marks the area to edit and white the area to keep; values in between are rounded to the nearer of the two. The mask must have the same width and height as `image` and contain both black and white areas. Requires `image` as raw bytes; masks cannot be combined with asset references. A masked request can include at most three `reference_images`. /// /// - /// How much of the image being edited the model may see and change.
+ /// Which region of the image to edit.
/// `none`, the default, edits the whole image. A large image may come back smaller than it was sent.
/// `auto` requires a `mask` and automatically selects an appropriate context region around the masked area.
- /// `x,y,width,height` names the region explicitly, in the edited image's own pixels with the origin at its top-left corner — for example `1024,512,2048,1536`. The region must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.
- /// With `auto` or an explicit region, every pixel outside the region is returned exactly as supplied and the output keeps the image's own width and height.
+ /// `y_min,x_min,y_max,x_max` names the region explicitly, by its corners. Rows come first, matching the `bbox` ordering used elsewhere in this API, and the values are the edited image's own pixels with the origin at its top-left corner. For example `512,1024,2048,3072` is the region 2048 pixels wide and 1536 tall whose top-left corner is 1024 across and 512 down. The maximum edges are exclusive, so the region measures `x_max - x_min` by `y_max - y_min`. It must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.
+ /// With `auto` or an explicit region, only that region changes and the output keeps the image's own width and height.
/// Default Value: none /// /// diff --git a/src/libs/Ideogram/Generated/Ideogram.JsonConverters.GenerationResponseDataInner.g.cs b/src/libs/Ideogram/Generated/Ideogram.JsonConverters.GenerationResponseDataInner.g.cs index d9662ae..bd808d6 100644 --- a/src/libs/Ideogram/Generated/Ideogram.JsonConverters.GenerationResponseDataInner.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.JsonConverters.GenerationResponseDataInner.g.cs @@ -56,6 +56,13 @@ public class GenerationResponseDataInnerJsonConverter : global::System.Text.Json throw new global::System.InvalidOperationException($"Cannot get type info for {nameof(global::Ideogram.LayerizedImageObject)}"); layerizedImage = global::System.Text.Json.JsonSerializer.Deserialize(ref reader, typeInfo); } + global::Ideogram.TextLayerizerResultObject? layerizedDesignGeneration = default; + if (discriminator?.ObjectType == global::Ideogram.GenerationResponseDataInnerDiscriminatorObjectType.LayerizedDesignGeneration) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(global::Ideogram.TextLayerizerResultObject), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {nameof(global::Ideogram.TextLayerizerResultObject)}"); + layerizedDesignGeneration = global::System.Text.Json.JsonSerializer.Deserialize(ref reader, typeInfo); + } var __value = new global::Ideogram.GenerationResponseDataInner( discriminator?.ObjectType, @@ -67,7 +74,9 @@ public class GenerationResponseDataInnerJsonConverter : global::System.Text.Json videoGeneration, - layerizedImage + layerizedImage, + + layerizedDesignGeneration ); return __value; @@ -112,6 +121,12 @@ public override void Write( throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(global::Ideogram.LayerizedImageObject).Name}"); global::System.Text.Json.JsonSerializer.Serialize(writer, value.PickLayerizedImage(), typeInfo); } + else if (value.IsLayerizedDesignGeneration) + { + var typeInfo = typeInfoResolver.GetTypeInfo(typeof(global::Ideogram.TextLayerizerResultObject), options) as global::System.Text.Json.Serialization.Metadata.JsonTypeInfo ?? + throw new global::System.InvalidOperationException($"Cannot get type info for {typeof(global::Ideogram.TextLayerizerResultObject).Name}"); + global::System.Text.Json.JsonSerializer.Serialize(writer, value.PickLayerizedDesignGeneration(), typeInfo); + } } } } \ No newline at end of file diff --git a/src/libs/Ideogram/Generated/Ideogram.JsonConverters.TextLayerizerResultObjectObjectType.g.cs b/src/libs/Ideogram/Generated/Ideogram.JsonConverters.TextLayerizerResultObjectObjectType.g.cs new file mode 100644 index 0000000..b1b2ee0 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.JsonConverters.TextLayerizerResultObjectObjectType.g.cs @@ -0,0 +1,53 @@ +#nullable enable + +namespace Ideogram.JsonConverters +{ + /// + public sealed class TextLayerizerResultObjectObjectTypeJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Ideogram.TextLayerizerResultObjectObjectType Read( + ref global::System.Text.Json.Utf8JsonReader reader, + global::System.Type typeToConvert, + global::System.Text.Json.JsonSerializerOptions options) + { + switch (reader.TokenType) + { + case global::System.Text.Json.JsonTokenType.String: + { + var stringValue = reader.GetString(); + if (stringValue != null) + { + return global::Ideogram.TextLayerizerResultObjectObjectTypeExtensions.ToEnum(stringValue) ?? default; + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Ideogram.TextLayerizerResultObjectObjectType)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Ideogram.TextLayerizerResultObjectObjectType); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Ideogram.TextLayerizerResultObjectObjectType value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + writer.WriteStringValue(global::Ideogram.TextLayerizerResultObjectObjectTypeExtensions.ToValueString(value)); + } + } +} diff --git a/src/libs/Ideogram/Generated/Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeNullable.g.cs b/src/libs/Ideogram/Generated/Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeNullable.g.cs new file mode 100644 index 0000000..e85b309 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeNullable.g.cs @@ -0,0 +1,60 @@ +#nullable enable + +namespace Ideogram.JsonConverters +{ + /// + public sealed class TextLayerizerResultObjectObjectTypeNullableJsonConverter : global::System.Text.Json.Serialization.JsonConverter + { + /// + public override global::Ideogram.TextLayerizerResultObjectObjectType? Read( + ref global::System.Text.Json.Utf8JsonReader reader, + global::System.Type typeToConvert, + global::System.Text.Json.JsonSerializerOptions options) + { + switch (reader.TokenType) + { + case global::System.Text.Json.JsonTokenType.String: + { + var stringValue = reader.GetString(); + if (stringValue != null) + { + return global::Ideogram.TextLayerizerResultObjectObjectTypeExtensions.ToEnum(stringValue); + } + + break; + } + case global::System.Text.Json.JsonTokenType.Number: + { + var numValue = reader.GetInt32(); + return (global::Ideogram.TextLayerizerResultObjectObjectType)numValue; + } + case global::System.Text.Json.JsonTokenType.Null: + { + return default(global::Ideogram.TextLayerizerResultObjectObjectType?); + } + default: + throw new global::System.ArgumentOutOfRangeException(nameof(reader)); + } + + return default; + } + + /// + public override void Write( + global::System.Text.Json.Utf8JsonWriter writer, + global::Ideogram.TextLayerizerResultObjectObjectType? value, + global::System.Text.Json.JsonSerializerOptions options) + { + writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer)); + + if (value == null) + { + writer.WriteNullValue(); + } + else + { + writer.WriteStringValue(global::Ideogram.TextLayerizerResultObjectObjectTypeExtensions.ToValueString(value.Value)); + } + } + } +} diff --git a/src/libs/Ideogram/Generated/Ideogram.JsonSerializerContext.g.cs b/src/libs/Ideogram/Generated/Ideogram.JsonSerializerContext.g.cs index 55e9669..b24f24e 100644 --- a/src/libs/Ideogram/Generated/Ideogram.JsonSerializerContext.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.JsonSerializerContext.g.cs @@ -306,6 +306,8 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.AdLocalizerQuality), TypeInfoPropertyName = "AdLocalizerQuality2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VectorizerResponse))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VectorizerRequest))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResponse))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerRequest))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.AdResizerResponse))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.AdResizerRequest))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.AdResizerRequestResolution), TypeInfoPropertyName = "AdResizerRequestResolution2")] @@ -507,8 +509,6 @@ namespace Ideogram [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.GetApiKeysResponse))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.RedactedApiKey))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.PostApiKeyResponse))] - [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.CreateApiKeyRequest))] internal sealed partial class SourceGenerationContextChunk0 : global::System.Text.Json.Serialization.JsonSerializerContext { } @@ -519,6 +519,8 @@ internal sealed partial class SourceGenerationContextChunk0 : global::System.Tex [global::System.Text.Json.Serialization.JsonSourceGenerationOptions( DefaultIgnoreCondition = global::System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull )] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.PostApiKeyResponse))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.CreateApiKeyRequest))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.ApiProfileApiKey))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.ApiKeyStatus), TypeInfoPropertyName = "ApiKeyStatus2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.PatchApiKeyRequest))] @@ -649,6 +651,9 @@ internal sealed partial class SourceGenerationContextChunk0 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectMimeType), TypeInfoPropertyName = "SvgGenerationObjectMimeType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObject))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObjectObjectType), TypeInfoPropertyName = "VideoObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObject))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObjectObjectType), TypeInfoPropertyName = "TextLayerizerResultObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockAlignment), TypeInfoPropertyName = "DetectedTextBlockAlignment2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.IList))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockFormattingItem), TypeInfoPropertyName = "DetectedTextBlockFormattingItem2")] @@ -860,6 +865,7 @@ internal sealed partial class SourceGenerationContextChunk0 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectObjectType?), TypeInfoPropertyName = "NullableSvgGenerationObjectObjectType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.SvgGenerationObjectMimeType?), TypeInfoPropertyName = "NullableSvgGenerationObjectMimeType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.VideoObjectObjectType?), TypeInfoPropertyName = "NullableVideoObjectObjectType2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.TextLayerizerResultObjectObjectType?), TypeInfoPropertyName = "NullableTextLayerizerResultObjectObjectType2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockAlignment?), TypeInfoPropertyName = "NullableDetectedTextBlockAlignment2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockFormattingItem?), TypeInfoPropertyName = "NullableDetectedTextBlockFormattingItem2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::Ideogram.DetectedTextBlockRole?), TypeInfoPropertyName = "NullableDetectedTextBlockRole2")] @@ -939,6 +945,7 @@ internal sealed partial class SourceGenerationContextChunk0 : global::System.Tex [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::System.Collections.Generic.List))] @@ -1646,6 +1653,10 @@ public override bool CanConvert(global::System.Type typeToConvert) || typeToConvert == typeof(global::Ideogram.VideoObjectObjectType?) + || typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType) + + || typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType?) + || typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment) || typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment?) @@ -3361,6 +3372,16 @@ public override bool CanConvert(global::System.Type typeToConvert) return new global::Ideogram.JsonConverters.VideoObjectObjectTypeNullableJsonConverter(); } + if (typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType)) + { + return new global::Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeJsonConverter(); + } + + if (typeToConvert == typeof(global::Ideogram.TextLayerizerResultObjectObjectType?)) + { + return new global::Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeNullableJsonConverter(); + } + if (typeToConvert == typeof(global::Ideogram.DetectedTextBlockAlignment)) { return new global::Ideogram.JsonConverters.DetectedTextBlockAlignmentJsonConverter(); diff --git a/src/libs/Ideogram/Generated/Ideogram.JsonSerializerContextTypes.g.cs b/src/libs/Ideogram/Generated/Ideogram.JsonSerializerContextTypes.g.cs index 101dc9a..cf901d3 100644 --- a/src/libs/Ideogram/Generated/Ideogram.JsonSerializerContextTypes.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.JsonSerializerContextTypes.g.cs @@ -1209,1423 +1209,1443 @@ public sealed partial class JsonSerializerContextTypes /// /// /// - public global::Ideogram.AdResizerResponse? Type294 { get; set; } + public global::Ideogram.TextLayerizerResponse? Type294 { get; set; } /// /// /// - public global::Ideogram.AdResizerRequest? Type295 { get; set; } + public global::Ideogram.TextLayerizerRequest? Type295 { get; set; } /// /// /// - public global::Ideogram.AdResizerRequestResolution? Type296 { get; set; } + public global::Ideogram.AdResizerResponse? Type296 { get; set; } /// /// /// - public global::Ideogram.AdResizerRequestPlatform? Type297 { get; set; } + public global::Ideogram.AdResizerRequest? Type297 { get; set; } /// /// /// - public global::Ideogram.AdResizerQuality? Type298 { get; set; } + public global::Ideogram.AdResizerRequestResolution? Type298 { get; set; } /// /// /// - public global::Ideogram.AdVariationsResponse? Type299 { get; set; } + public global::Ideogram.AdResizerRequestPlatform? Type299 { get; set; } /// /// /// - public global::Ideogram.AdVariationsRequest? Type300 { get; set; } + public global::Ideogram.AdResizerQuality? Type300 { get; set; } /// /// /// - public global::Ideogram.AdVariationsRequestVariationType? Type301 { get; set; } + public global::Ideogram.AdVariationsResponse? Type301 { get; set; } /// /// /// - public global::Ideogram.AdVariationsQuality? Type302 { get; set; } + public global::Ideogram.AdVariationsRequest? Type302 { get; set; } /// /// /// - public global::Ideogram.SketchToRenderResponse? Type303 { get; set; } + public global::Ideogram.AdVariationsRequestVariationType? Type303 { get; set; } /// /// /// - public global::Ideogram.SketchToRenderRequest? Type304 { get; set; } + public global::Ideogram.AdVariationsQuality? Type304 { get; set; } /// /// /// - public global::Ideogram.SketchToRenderQuality? Type305 { get; set; } + public global::Ideogram.SketchToRenderResponse? Type305 { get; set; } /// /// /// - public global::Ideogram.SoleSwapResponse? Type306 { get; set; } + public global::Ideogram.SketchToRenderRequest? Type306 { get; set; } /// /// /// - public global::Ideogram.SoleSwapRequest? Type307 { get; set; } + public global::Ideogram.SketchToRenderQuality? Type307 { get; set; } /// /// /// - public global::Ideogram.SoleSwapRequestBaseGenerationSize? Type308 { get; set; } + public global::Ideogram.SoleSwapResponse? Type308 { get; set; } /// /// /// - public global::Ideogram.SoleSwapQuality? Type309 { get; set; } + public global::Ideogram.SoleSwapRequest? Type309 { get; set; } /// /// /// - public global::Ideogram.SwapProductResponse? Type310 { get; set; } + public global::Ideogram.SoleSwapRequestBaseGenerationSize? Type310 { get; set; } /// /// /// - public global::Ideogram.SwapProductRequest? Type311 { get; set; } + public global::Ideogram.SoleSwapQuality? Type311 { get; set; } /// /// /// - public global::Ideogram.SwapProductMode? Type312 { get; set; } + public global::Ideogram.SwapProductResponse? Type312 { get; set; } /// /// /// - public global::Ideogram.SwapProductQuality? Type313 { get; set; } + public global::Ideogram.SwapProductRequest? Type313 { get; set; } /// /// /// - public global::Ideogram.SkechersStyleEditResponse? Type314 { get; set; } + public global::Ideogram.SwapProductMode? Type314 { get; set; } /// /// /// - public global::Ideogram.SkechersStyleEditRequest? Type315 { get; set; } + public global::Ideogram.SwapProductQuality? Type315 { get; set; } /// /// /// - public global::Ideogram.SkechersStyleEditRequestAspectRatio? Type316 { get; set; } + public global::Ideogram.SkechersStyleEditResponse? Type316 { get; set; } /// /// /// - public global::Ideogram.SkechersStyleEditRequestBaseGenerationSize? Type317 { get; set; } + public global::Ideogram.SkechersStyleEditRequest? Type317 { get; set; } /// /// /// - public global::Ideogram.SkechersStyleEditQuality? Type318 { get; set; } + public global::Ideogram.SkechersStyleEditRequestAspectRatio? Type318 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoDesignResponse? Type319 { get; set; } + public global::Ideogram.SkechersStyleEditRequestBaseGenerationSize? Type319 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoDesignRequest? Type320 { get; set; } + public global::Ideogram.SkechersStyleEditQuality? Type320 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoDesignRequestLogoStyle? Type321 { get; set; } + public global::Ideogram.SwanSLogoDesignResponse? Type321 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoDesignRequestSourceMode? Type322 { get; set; } + public global::Ideogram.SwanSLogoDesignRequest? Type322 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoDesignRequestDesignVariant? Type323 { get; set; } + public global::Ideogram.SwanSLogoDesignRequestLogoStyle? Type323 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoQuality? Type324 { get; set; } + public global::Ideogram.SwanSLogoDesignRequestSourceMode? Type324 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoInstallResponse? Type325 { get; set; } + public global::Ideogram.SwanSLogoDesignRequestDesignVariant? Type325 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoInstallRequest? Type326 { get; set; } + public global::Ideogram.SwanSLogoQuality? Type326 { get; set; } /// /// /// - public global::Ideogram.SwanSLogoInstallRequestLogoStyle? Type327 { get; set; } + public global::Ideogram.SwanSLogoInstallResponse? Type327 { get; set; } /// /// /// - public global::Ideogram.ModelSwapResponse? Type328 { get; set; } + public global::Ideogram.SwanSLogoInstallRequest? Type328 { get; set; } /// /// /// - public global::Ideogram.ModelSwapRequest? Type329 { get; set; } + public global::Ideogram.SwanSLogoInstallRequestLogoStyle? Type329 { get; set; } /// /// /// - public global::Ideogram.ModelSwapQuality? Type330 { get; set; } + public global::Ideogram.ModelSwapResponse? Type330 { get; set; } /// /// /// - public global::Ideogram.MaterialSwapResponse? Type331 { get; set; } + public global::Ideogram.ModelSwapRequest? Type331 { get; set; } /// /// /// - public global::Ideogram.MaterialSwapRequest? Type332 { get; set; } + public global::Ideogram.ModelSwapQuality? Type332 { get; set; } /// /// /// - public global::Ideogram.MaterialSwapQuality? Type333 { get; set; } + public global::Ideogram.MaterialSwapResponse? Type333 { get; set; } /// /// /// - public global::Ideogram.UpscaleToolResponse? Type334 { get; set; } + public global::Ideogram.MaterialSwapRequest? Type334 { get; set; } /// /// /// - public global::Ideogram.UpscaleToolRequest? Type335 { get; set; } + public global::Ideogram.MaterialSwapQuality? Type335 { get; set; } /// /// /// - public global::Ideogram.UpscaleToolRequestUpscaleFactor? Type336 { get; set; } + public global::Ideogram.UpscaleToolResponse? Type336 { get; set; } /// /// /// - public global::Ideogram.LayerizeDesignIdeogramV3Response? Type337 { get; set; } + public global::Ideogram.UpscaleToolRequest? Type337 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type338 { get; set; } + public global::Ideogram.UpscaleToolRequestUpscaleFactor? Type338 { get; set; } /// /// /// - public global::Ideogram.LayerizedImageObject? Type339 { get; set; } + public global::Ideogram.LayerizeDesignIdeogramV3Response? Type339 { get; set; } /// /// /// - public global::Ideogram.LayerizedImageObjectObjectType? Type340 { get; set; } + public global::System.Collections.Generic.IList? Type340 { get; set; } /// /// /// - public global::Ideogram.LayerizeDesignIdeogramV3Request? Type341 { get; set; } + public global::Ideogram.LayerizedImageObject? Type341 { get; set; } /// /// /// - public global::Ideogram.DescribeImageIdeogramV3Response? Type342 { get; set; } + public global::Ideogram.LayerizedImageObjectObjectType? Type342 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type343 { get; set; } + public global::Ideogram.LayerizeDesignIdeogramV3Request? Type343 { get; set; } /// /// /// - public global::Ideogram.GeneratedDescription? Type344 { get; set; } + public global::Ideogram.DescribeImageIdeogramV3Response? Type344 { get; set; } /// /// /// - public global::Ideogram.DescribeImageIdeogramV3Request? Type345 { get; set; } + public global::System.Collections.Generic.IList? Type345 { get; set; } /// /// /// - public global::Ideogram.ImageSafetyError? Type346 { get; set; } + public global::Ideogram.GeneratedDescription? Type346 { get; set; } /// /// /// - public global::Ideogram.DescribeImageIdeogramV4Response? Type347 { get; set; } + public global::Ideogram.DescribeImageIdeogramV3Request? Type347 { get; set; } /// /// /// - public global::Ideogram.DescribeImageIdeogramV4Request? Type348 { get; set; } + public global::Ideogram.ImageSafetyError? Type348 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3Response? Type349 { get; set; } + public global::Ideogram.DescribeImageIdeogramV4Response? Type349 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type350 { get; set; } + public global::Ideogram.DescribeImageIdeogramV4Request? Type350 { get; set; } /// /// /// - public global::Ideogram.GeneratedImageObject? Type351 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3Response? Type351 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3Request? Type352 { get; set; } + public global::System.Collections.Generic.IList? Type352 { get; set; } /// /// /// - public global::Ideogram.IdeogramV3AspectRatio? Type353 { get; set; } + public global::Ideogram.GeneratedImageObject? Type353 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3RequestRenderingSpeed? Type354 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3Request? Type354 { get; set; } /// /// /// - public global::Ideogram.MagicPromptMode? Type355 { get; set; } + public global::Ideogram.IdeogramV3AspectRatio? Type355 { get; set; } /// /// /// - public global::Ideogram.IdeogramColorPalette? Type356 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3RequestRenderingSpeed? Type356 { get; set; } /// /// /// - public global::Ideogram.IdeogramV3StyleType? Type357 { get; set; } + public global::Ideogram.MagicPromptMode? Type357 { get; set; } /// /// /// - public global::Ideogram.IdeogramV3StylePreset? Type358 { get; set; } + public global::Ideogram.IdeogramColorPalette? Type358 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3CustomModelResponse? Type359 { get; set; } + public global::Ideogram.IdeogramV3StyleType? Type359 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3CustomModelRequest? Type360 { get; set; } + public global::Ideogram.IdeogramV3StylePreset? Type360 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3CustomModelRequestRenderingSpeed? Type361 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3CustomModelResponse? Type361 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4Response? Type362 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3CustomModelRequest? Type362 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4Request? Type363 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3CustomModelRequestRenderingSpeed? Type363 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4RequestRenderingSpeed? Type364 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4Response? Type364 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4CustomModelResponse? Type365 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4Request? Type365 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4CustomModelRequest? Type366 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4RequestRenderingSpeed? Type366 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type367 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4CustomModelResponse? Type367 { get; set; } /// /// /// - public global::Ideogram.StackedCustomModel? Type368 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4CustomModelRequest? Type368 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4CustomModelRequestRenderingSpeed? Type369 { get; set; } + public global::System.Collections.Generic.IList? Type369 { get; set; } /// /// /// - public double? Type370 { get; set; } + public global::Ideogram.StackedCustomModel? Type370 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3Response? Type371 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4CustomModelRequestRenderingSpeed? Type371 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type372 { get; set; } + public double? Type372 { get; set; } /// /// /// - public global::Ideogram.RemixedImageObject? Type373 { get; set; } + public global::Ideogram.RemixImageIdeogramV3Response? Type373 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3Request? Type374 { get; set; } + public global::System.Collections.Generic.IList? Type374 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3RequestRenderingSpeed? Type375 { get; set; } + public global::Ideogram.RemixedImageObject? Type375 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3CustomModelResponse? Type376 { get; set; } + public global::Ideogram.RemixImageIdeogramV3Request? Type376 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3CustomModelRequest? Type377 { get; set; } + public global::Ideogram.RemixImageIdeogramV3RequestRenderingSpeed? Type377 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3CustomModelRequestRenderingSpeed? Type378 { get; set; } + public global::Ideogram.RemixImageIdeogramV3CustomModelResponse? Type378 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV4Response? Type379 { get; set; } + public global::Ideogram.RemixImageIdeogramV3CustomModelRequest? Type379 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV4Request? Type380 { get; set; } + public global::Ideogram.RemixImageIdeogramV3CustomModelRequestRenderingSpeed? Type380 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV4RequestRenderingSpeed? Type381 { get; set; } + public global::Ideogram.RemixImageIdeogramV4Response? Type381 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3CharacterResponse? Type382 { get; set; } + public global::Ideogram.RemixImageIdeogramV4Request? Type382 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3CharacterRequest? Type383 { get; set; } + public global::Ideogram.RemixImageIdeogramV4RequestRenderingSpeed? Type383 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3CharacterRequestRenderingSpeed? Type384 { get; set; } + public global::Ideogram.RemixImageIdeogramV3CharacterResponse? Type384 { get; set; } /// /// /// - public global::Ideogram.RemixImageIdeogramV3CharacterRequestStyleType? Type385 { get; set; } + public global::Ideogram.RemixImageIdeogramV3CharacterRequest? Type385 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3TransparentResponse? Type386 { get; set; } + public global::Ideogram.RemixImageIdeogramV3CharacterRequestRenderingSpeed? Type386 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3TransparentRequest? Type387 { get; set; } + public global::Ideogram.RemixImageIdeogramV3CharacterRequestStyleType? Type387 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3TransparentRequestUpscaleFactor? Type388 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3TransparentResponse? Type388 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3TransparentRequestRenderingSpeed? Type389 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3TransparentRequest? Type389 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4TransparentResponse? Type390 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3TransparentRequestUpscaleFactor? Type390 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4TransparentRequest? Type391 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3TransparentRequestRenderingSpeed? Type391 { get; set; } /// /// /// - public global::Ideogram.IdeogramV4AspectRatio? Type392 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4TransparentResponse? Type392 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4TransparentRequestOutputResolution? Type393 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4TransparentRequest? Type393 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV4TransparentRequestRenderingSpeed? Type394 { get; set; } + public global::Ideogram.IdeogramV4AspectRatio? Type394 { get; set; } /// /// /// - public global::Ideogram.GenerateImagePImageIdeogramResponse? Type395 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4TransparentRequestOutputResolution? Type395 { get; set; } /// /// /// - public global::Ideogram.GenerateImagePImageIdeogramRequest? Type396 { get; set; } + public global::Ideogram.GenerateImageIdeogramV4TransparentRequestRenderingSpeed? Type396 { get; set; } /// /// /// - public global::Ideogram.GenerationQuality? Type397 { get; set; } + public global::Ideogram.GenerateImagePImageIdeogramResponse? Type397 { get; set; } /// /// /// - public global::Ideogram.GenerateImagePImageIdeogramRequestResolution? Type398 { get; set; } + public global::Ideogram.GenerateImagePImageIdeogramRequest? Type398 { get; set; } /// /// /// - public global::Ideogram.GenerateImageZImageResponse? Type399 { get; set; } + public global::Ideogram.GenerationQuality? Type399 { get; set; } /// /// /// - public global::Ideogram.GenerateImageZImageRequest? Type400 { get; set; } + public global::Ideogram.GenerateImagePImageIdeogramRequestResolution? Type400 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogram45Response? Type401 { get; set; } + public global::Ideogram.GenerateImageZImageResponse? Type401 { get; set; } /// /// /// - public global::Ideogram.GenerationKind? Type402 { get; set; } + public global::Ideogram.GenerateImageZImageRequest? Type402 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogram45Request? Type403 { get; set; } + public global::Ideogram.GenerateImageIdeogram45Response? Type403 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogram45RequestQuality? Type404 { get; set; } + public global::Ideogram.GenerationKind? Type404 { get; set; } /// /// /// - public global::Ideogram.PreciseEditImageIdeogram45Response? Type405 { get; set; } + public global::Ideogram.GenerateImageIdeogram45Request? Type405 { get; set; } /// /// /// - public global::Ideogram.PreciseEditImageIdeogram45Request? Type406 { get; set; } + public global::Ideogram.GenerateImageIdeogram45RequestQuality? Type406 { get; set; } /// /// /// - public global::Ideogram.PreciseEditImageIdeogram45RequestQuality? Type407 { get; set; } + public global::Ideogram.PreciseEditImageIdeogram45Response? Type407 { get; set; } /// /// /// - public global::Ideogram.GenerateImageNanoBanana2Response? Type408 { get; set; } + public global::Ideogram.PreciseEditImageIdeogram45Request? Type408 { get; set; } /// /// /// - public global::Ideogram.GenerateImageNanoBanana2Request? Type409 { get; set; } + public global::Ideogram.PreciseEditImageIdeogram45RequestQuality? Type409 { get; set; } /// /// /// - public global::Ideogram.NanoBanana2AspectRatio? Type410 { get; set; } + public global::Ideogram.GenerateImageNanoBanana2Response? Type410 { get; set; } /// /// /// - public global::Ideogram.GenerateImageNanoBanana2RequestResolutionTier? Type411 { get; set; } + public global::Ideogram.GenerateImageNanoBanana2Request? Type411 { get; set; } /// /// /// - public global::Ideogram.GenerateImageNanoBananaProResponse? Type412 { get; set; } + public global::Ideogram.NanoBanana2AspectRatio? Type412 { get; set; } /// /// /// - public global::Ideogram.GenerateImageNanoBananaProRequest? Type413 { get; set; } + public global::Ideogram.GenerateImageNanoBanana2RequestResolutionTier? Type413 { get; set; } /// /// /// - public global::Ideogram.NanoBananaProAspectRatio? Type414 { get; set; } + public global::Ideogram.GenerateImageNanoBananaProResponse? Type414 { get; set; } /// /// /// - public global::Ideogram.GenerateImageNanoBananaProRequestResolutionTier? Type415 { get; set; } + public global::Ideogram.GenerateImageNanoBananaProRequest? Type415 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage2Response? Type416 { get; set; } + public global::Ideogram.NanoBananaProAspectRatio? Type416 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage2Request? Type417 { get; set; } + public global::Ideogram.GenerateImageNanoBananaProRequestResolutionTier? Type417 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage25FlareResponse? Type418 { get; set; } + public global::Ideogram.GenerateImageGptImage2Response? Type418 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage25FlareRequest? Type419 { get; set; } + public global::Ideogram.GenerateImageGptImage2Request? Type419 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage25FlareRequestBackground? Type420 { get; set; } + public global::Ideogram.GenerateImageGptImage25FlareResponse? Type420 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage25FlareRequestQuality? Type421 { get; set; } + public global::Ideogram.GenerateImageGptImage25FlareRequest? Type421 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage25SunburstResponse? Type422 { get; set; } + public global::Ideogram.GenerateImageGptImage25FlareRequestBackground? Type422 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage25SunburstRequest? Type423 { get; set; } + public global::Ideogram.GenerateImageGptImage25FlareRequestQuality? Type423 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage25SunburstRequestBackground? Type424 { get; set; } + public global::Ideogram.GenerateImageGptImage25SunburstResponse? Type424 { get; set; } /// /// /// - public global::Ideogram.GenerateImageGptImage25SunburstRequestQuality? Type425 { get; set; } + public global::Ideogram.GenerateImageGptImage25SunburstRequest? Type425 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV2Response? Type426 { get; set; } + public global::Ideogram.GenerateImageGptImage25SunburstRequestBackground? Type426 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV2Request? Type427 { get; set; } + public global::Ideogram.GenerateImageGptImage25SunburstRequestQuality? Type427 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV2RequestRenderingSpeed? Type428 { get; set; } + public global::Ideogram.GenerateImageIdeogramV2Response? Type428 { get; set; } /// /// /// - public global::Ideogram.IdeogramV2StyleType? Type429 { get; set; } + public global::Ideogram.GenerateImageIdeogramV2Request? Type429 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV2AResponse? Type430 { get; set; } + public global::Ideogram.GenerateImageIdeogramV2RequestRenderingSpeed? Type430 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV2ARequest? Type431 { get; set; } + public global::Ideogram.IdeogramV2StyleType? Type431 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV2ARequestRenderingSpeed? Type432 { get; set; } + public global::Ideogram.GenerateImageIdeogramV2AResponse? Type432 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3Response? Type433 { get; set; } + public global::Ideogram.GenerateImageIdeogramV2ARequest? Type433 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type434 { get; set; } + public global::Ideogram.GenerateImageIdeogramV2ARequestRenderingSpeed? Type434 { get; set; } /// /// /// - public global::Ideogram.InpaintedImageObject? Type435 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3Response? Type435 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3Request? Type436 { get; set; } + public global::System.Collections.Generic.IList? Type436 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3RequestRenderingSpeed? Type437 { get; set; } + public global::Ideogram.InpaintedImageObject? Type437 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3CustomModelResponse? Type438 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3Request? Type438 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3CustomModelRequest? Type439 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3RequestRenderingSpeed? Type439 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3CustomModelRequestRenderingSpeed? Type440 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3CustomModelResponse? Type440 { get; set; } /// /// /// - public global::Ideogram.ReframeImageIdeogramV3Response? Type441 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3CustomModelRequest? Type441 { get; set; } /// /// /// - public global::Ideogram.ReframeImageIdeogramV3Request? Type442 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3CustomModelRequestRenderingSpeed? Type442 { get; set; } /// /// /// - public global::Ideogram.ReframeImageIdeogramV3RequestRenderingSpeed? Type443 { get; set; } + public global::Ideogram.ReframeImageIdeogramV3Response? Type443 { get; set; } /// /// /// - public global::Ideogram.ReframeImageNanoBanana2Response? Type444 { get; set; } + public global::Ideogram.ReframeImageIdeogramV3Request? Type444 { get; set; } /// /// /// - public global::Ideogram.ReframeImageNanoBanana2Request? Type445 { get; set; } + public global::Ideogram.ReframeImageIdeogramV3RequestRenderingSpeed? Type445 { get; set; } /// /// /// - public global::Ideogram.NanoBanana2ReframeAspectRatio? Type446 { get; set; } + public global::Ideogram.ReframeImageNanoBanana2Response? Type446 { get; set; } /// /// /// - public global::Ideogram.ReframeImageNanoBananaProResponse? Type447 { get; set; } + public global::Ideogram.ReframeImageNanoBanana2Request? Type447 { get; set; } /// /// /// - public global::Ideogram.ReframeImageNanoBananaProRequest? Type448 { get; set; } + public global::Ideogram.NanoBanana2ReframeAspectRatio? Type448 { get; set; } /// /// /// - public global::Ideogram.NanoBananaProReframeAspectRatio? Type449 { get; set; } + public global::Ideogram.ReframeImageNanoBananaProResponse? Type449 { get; set; } /// /// /// - public global::Ideogram.ReframeImageNanoBananaProRequestResolutionTier? Type450 { get; set; } + public global::Ideogram.ReframeImageNanoBananaProRequest? Type450 { get; set; } /// /// /// - public global::Ideogram.ReframeImageGptImage25FlareResponse? Type451 { get; set; } + public global::Ideogram.NanoBananaProReframeAspectRatio? Type451 { get; set; } /// /// /// - public global::Ideogram.ReframeImageGptImage25FlareRequest? Type452 { get; set; } + public global::Ideogram.ReframeImageNanoBananaProRequestResolutionTier? Type452 { get; set; } /// /// /// - public global::Ideogram.ReframeImageGptImage25FlareRequestQuality? Type453 { get; set; } + public global::Ideogram.ReframeImageGptImage25FlareResponse? Type453 { get; set; } /// /// /// - public global::Ideogram.ReframeImageBriaExpandResponse? Type454 { get; set; } + public global::Ideogram.ReframeImageGptImage25FlareRequest? Type454 { get; set; } /// /// /// - public global::Ideogram.ReframeImageBriaExpandRequest? Type455 { get; set; } + public global::Ideogram.ReframeImageGptImage25FlareRequestQuality? Type455 { get; set; } /// /// /// - public global::Ideogram.ReframeImageAutoResponse? Type456 { get; set; } + public global::Ideogram.ReframeImageBriaExpandResponse? Type456 { get; set; } /// /// /// - public global::Ideogram.ReframeImageAutoRequest? Type457 { get; set; } + public global::Ideogram.ReframeImageBriaExpandRequest? Type457 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3CharacterResponse? Type458 { get; set; } + public global::Ideogram.ReframeImageAutoResponse? Type458 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3CharacterRequest? Type459 { get; set; } + public global::Ideogram.ReframeImageAutoRequest? Type459 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3CharacterRequestRenderingSpeed? Type460 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3CharacterResponse? Type460 { get; set; } /// /// /// - public global::Ideogram.GenerateImageIdeogramV3CharacterRequestStyleType? Type461 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3CharacterRequest? Type461 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3CharacterResponse? Type462 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3CharacterRequestRenderingSpeed? Type462 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3CharacterRequest? Type463 { get; set; } + public global::Ideogram.GenerateImageIdeogramV3CharacterRequestStyleType? Type463 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3CharacterRequestRenderingSpeed? Type464 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3CharacterResponse? Type464 { get; set; } /// /// /// - public global::Ideogram.InpaintImageIdeogramV3CharacterRequestStyleType? Type465 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3CharacterRequest? Type465 { get; set; } /// /// /// - public global::Ideogram.GenerateImageV2AutoResponse? Type466 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3CharacterRequestRenderingSpeed? Type466 { get; set; } /// /// /// - public global::Ideogram.GenerateImageV2AutoRequest? Type467 { get; set; } + public global::Ideogram.InpaintImageIdeogramV3CharacterRequestStyleType? Type467 { get; set; } /// /// /// - public global::Ideogram.GenerateImageV2AutoRequestResolutionTier? Type468 { get; set; } + public global::Ideogram.GenerateImageV2AutoResponse? Type468 { get; set; } /// /// /// - public global::Ideogram.ToolRemixResponse? Type469 { get; set; } + public global::Ideogram.GenerateImageV2AutoRequest? Type469 { get; set; } /// /// /// - public global::Ideogram.ToolRemixRequest? Type470 { get; set; } + public global::Ideogram.GenerateImageV2AutoRequestResolutionTier? Type470 { get; set; } /// /// /// - public global::Ideogram.ToolRemixRequestResolutionTier? Type471 { get; set; } + public global::Ideogram.ToolRemixResponse? Type471 { get; set; } /// /// /// - public global::Ideogram.ResizeAdImageRequest? Type472 { get; set; } + public global::Ideogram.ToolRemixRequest? Type472 { get; set; } /// /// /// - public global::Ideogram.ResizeAdImageRequestResolution? Type473 { get; set; } + public global::Ideogram.ToolRemixRequestResolutionTier? Type473 { get; set; } /// /// /// - public global::Ideogram.ResizeAdImageQuality? Type474 { get; set; } + public global::Ideogram.ResizeAdImageRequest? Type474 { get; set; } /// /// /// - public global::Ideogram.WebhookSigningJwks? Type475 { get; set; } + public global::Ideogram.ResizeAdImageRequestResolution? Type475 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type476 { get; set; } + public global::Ideogram.ResizeAdImageQuality? Type476 { get; set; } /// /// /// - public global::Ideogram.WebhookSigningJwk? Type477 { get; set; } + public global::Ideogram.WebhookSigningJwks? Type477 { get; set; } /// /// /// - public global::Ideogram.ProvenanceVerifyResponse? Type478 { get; set; } + public global::System.Collections.Generic.IList? Type478 { get; set; } /// /// /// - public global::Ideogram.ProvenanceVerifyResponseValidationState? Type479 { get; set; } + public global::Ideogram.WebhookSigningJwk? Type479 { get; set; } /// /// /// - public global::Ideogram.ProvenanceVerifyRequest? Type480 { get; set; } + public global::Ideogram.ProvenanceVerifyResponse? Type480 { get; set; } /// /// /// - public global::Ideogram.ManageApiSubscriptionResponse? Type481 { get; set; } + public global::Ideogram.ProvenanceVerifyResponseValidationState? Type481 { get; set; } /// /// /// - public global::Ideogram.MetronomeLinks? Type482 { get; set; } + public global::Ideogram.ProvenanceVerifyRequest? Type482 { get; set; } /// /// /// - public global::Ideogram.RechargeSettingsResponse? Type483 { get; set; } + public global::Ideogram.ManageApiSubscriptionResponse? Type483 { get; set; } /// /// /// - public global::Ideogram.Price? Type484 { get; set; } + public global::Ideogram.MetronomeLinks? Type484 { get; set; } /// /// /// - public global::Ideogram.RechargeSettings? Type485 { get; set; } + public global::Ideogram.RechargeSettingsResponse? Type485 { get; set; } /// /// /// - public global::Ideogram.PostApiSubscriptionResponse? Type486 { get; set; } + public global::Ideogram.Price? Type486 { get; set; } /// /// /// - public global::Ideogram.PostApiSubscriptionError? Type487 { get; set; } + public global::Ideogram.RechargeSettings? Type487 { get; set; } /// /// /// - public global::Ideogram.PostApiSubscriptionRequest? Type488 { get; set; } + public global::Ideogram.PostApiSubscriptionResponse? Type488 { get; set; } /// /// /// - public global::Ideogram.ManageApiCreditSummaryResponse? Type489 { get; set; } + public global::Ideogram.PostApiSubscriptionError? Type489 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type490 { get; set; } + public global::Ideogram.PostApiSubscriptionRequest? Type490 { get; set; } /// /// /// - public global::Ideogram.CreditGrant? Type491 { get; set; } + public global::Ideogram.ManageApiCreditSummaryResponse? Type491 { get; set; } /// /// /// - public global::Ideogram.GetApiKeysResponse? Type492 { get; set; } + public global::System.Collections.Generic.IList? Type492 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type493 { get; set; } + public global::Ideogram.CreditGrant? Type493 { get; set; } /// /// /// - public global::Ideogram.RedactedApiKey? Type494 { get; set; } + public global::Ideogram.GetApiKeysResponse? Type494 { get; set; } /// /// /// - public global::Ideogram.PostApiKeyResponse? Type495 { get; set; } + public global::System.Collections.Generic.IList? Type495 { get; set; } /// /// /// - public global::Ideogram.CreateApiKeyRequest? Type496 { get; set; } + public global::Ideogram.RedactedApiKey? Type496 { get; set; } /// /// /// - public global::Ideogram.ApiProfileApiKey? Type497 { get; set; } + public global::Ideogram.PostApiKeyResponse? Type497 { get; set; } /// /// /// - public global::Ideogram.ApiKeyStatus? Type498 { get; set; } + public global::Ideogram.CreateApiKeyRequest? Type498 { get; set; } /// /// /// - public global::Ideogram.PatchApiKeyRequest? Type499 { get; set; } + public global::Ideogram.ApiProfileApiKey? Type499 { get; set; } /// /// /// - public global::Ideogram.ManageApiStripeSubscriptionResponse? Type500 { get; set; } + public global::Ideogram.ApiKeyStatus? Type500 { get; set; } /// /// /// - public global::Ideogram.ManageApiPaymentResponse? Type501 { get; set; } + public global::Ideogram.PatchApiKeyRequest? Type501 { get; set; } /// /// /// - public global::Ideogram.GetApiTermsResponse? Type502 { get; set; } + public global::Ideogram.ManageApiStripeSubscriptionResponse? Type502 { get; set; } /// /// /// - public global::Ideogram.ApiTerms? Type503 { get; set; } + public global::Ideogram.ManageApiPaymentResponse? Type503 { get; set; } /// /// /// - public global::Ideogram.PostApiTermsRequest? Type504 { get; set; } + public global::Ideogram.GetApiTermsResponse? Type504 { get; set; } /// /// /// - public global::Ideogram.PostAddCreditsResponse? Type505 { get; set; } + public global::Ideogram.ApiTerms? Type505 { get; set; } /// /// /// - public global::Ideogram.PostAddCreditsError? Type506 { get; set; } + public global::Ideogram.PostApiTermsRequest? Type506 { get; set; } /// /// /// - public global::Ideogram.PostAddCreditsRequest? Type507 { get; set; } + public global::Ideogram.PostAddCreditsResponse? Type507 { get; set; } /// /// /// - public global::Ideogram.GetUserCreditsResponse? Type508 { get; set; } + public global::Ideogram.PostAddCreditsError? Type508 { get; set; } /// /// /// - public global::Ideogram.SpendCommitInfoResponse? Type509 { get; set; } + public global::Ideogram.PostAddCreditsRequest? Type509 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type510 { get; set; } + public global::Ideogram.GetUserCreditsResponse? Type510 { get; set; } /// /// /// - public global::Ideogram.SpendCommitInfo? Type511 { get; set; } + public global::Ideogram.SpendCommitInfoResponse? Type511 { get; set; } /// /// /// - public global::Ideogram.GetUsageInfoResponse? Type512 { get; set; } + public global::System.Collections.Generic.IList? Type512 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type513 { get; set; } + public global::Ideogram.SpendCommitInfo? Type513 { get; set; } /// /// /// - public global::Ideogram.UsageSegment? Type514 { get; set; } + public global::Ideogram.GetUsageInfoResponse? Type514 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type515 { get; set; } + public global::System.Collections.Generic.IList? Type515 { get; set; } /// /// /// - public global::Ideogram.ToolUsage? Type516 { get; set; } + public global::Ideogram.UsageSegment? Type516 { get; set; } /// /// /// - public global::Ideogram.ToolType? Type517 { get; set; } + public global::System.Collections.Generic.IList? Type517 { get; set; } /// /// /// - public global::Ideogram.ModelVersion? Type518 { get; set; } + public global::Ideogram.ToolUsage? Type518 { get; set; } /// /// /// - public global::Ideogram.SegmentBy? Type519 { get; set; } + public global::Ideogram.ToolType? Type519 { get; set; } /// /// /// - public global::Ideogram.UsageSource? Type520 { get; set; } + public global::Ideogram.ModelVersion? Type520 { get; set; } /// /// /// - public global::Ideogram.GetApiProfilesResponse? Type521 { get; set; } + public global::Ideogram.SegmentBy? Type521 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type522 { get; set; } + public global::Ideogram.UsageSource? Type522 { get; set; } /// /// /// - public global::Ideogram.ApiProfile? Type523 { get; set; } + public global::Ideogram.GetApiProfilesResponse? Type523 { get; set; } /// /// /// - public global::Ideogram.ApiProfileType? Type524 { get; set; } + public global::System.Collections.Generic.IList? Type524 { get; set; } /// /// /// - public global::Ideogram.ApiProfileRole? Type525 { get; set; } + public global::Ideogram.ApiProfile? Type525 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type526 { get; set; } + public global::Ideogram.ApiProfileType? Type526 { get; set; } /// /// /// - public global::Ideogram.UpdateOrganizationApiPropertiesResponse? Type527 { get; set; } + public global::Ideogram.ApiProfileRole? Type527 { get; set; } /// /// /// - public global::Ideogram.UpdateOrganizationApiPropertiesRequest? Type528 { get; set; } + public global::System.Collections.Generic.IList? Type528 { get; set; } /// /// /// - public global::Ideogram.GetApiOrganizationUserSuggestionsResponse? Type529 { get; set; } + public global::Ideogram.UpdateOrganizationApiPropertiesResponse? Type529 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type530 { get; set; } + public global::Ideogram.UpdateOrganizationApiPropertiesRequest? Type530 { get; set; } /// /// /// - public global::Ideogram.ApiOrganizationUserSuggestion? Type531 { get; set; } + public global::Ideogram.GetApiOrganizationUserSuggestionsResponse? Type531 { get; set; } /// /// /// - public global::Ideogram.GetOrganizationMembersResponse? Type532 { get; set; } + public global::System.Collections.Generic.IList? Type532 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type533 { get; set; } + public global::Ideogram.ApiOrganizationUserSuggestion? Type533 { get; set; } /// /// /// - public global::Ideogram.OrganizationMember? Type534 { get; set; } + public global::Ideogram.GetOrganizationMembersResponse? Type534 { get; set; } /// /// /// - public global::Ideogram.CreateApiKeyResponse? Type535 { get; set; } + public global::System.Collections.Generic.IList? Type535 { get; set; } /// /// /// - public global::Ideogram.GetApiKeysV2Response? Type536 { get; set; } + public global::Ideogram.OrganizationMember? Type536 { get; set; } /// /// /// - public global::Ideogram.OrganizationMemberOperationResponse? Type537 { get; set; } + public global::Ideogram.CreateApiKeyResponse? Type537 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type538 { get; set; } + public global::Ideogram.GetApiKeysV2Response? Type538 { get; set; } /// /// /// - public global::Ideogram.OrganizationMemberOperationResult? Type539 { get; set; } + public global::Ideogram.OrganizationMemberOperationResponse? Type539 { get; set; } /// /// /// - public global::Ideogram.AddOrganizationMembersRequest? Type540 { get; set; } + public global::System.Collections.Generic.IList? Type540 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type541 { get; set; } + public global::Ideogram.OrganizationMemberOperationResult? Type541 { get; set; } /// /// /// - public global::Ideogram.LiteOrganizationMember? Type542 { get; set; } + public global::Ideogram.AddOrganizationMembersRequest? Type542 { get; set; } /// /// /// - public global::Ideogram.RemoveOrganizationMembersRequest? Type543 { get; set; } + public global::System.Collections.Generic.IList? Type543 { get; set; } /// /// /// - public global::Ideogram.PromoteOrganizationAdminsRequest? Type544 { get; set; } + public global::Ideogram.LiteOrganizationMember? Type544 { get; set; } /// /// /// - public global::Ideogram.DemoteOrganizationAdminsRequest? Type545 { get; set; } + public global::Ideogram.RemoveOrganizationMembersRequest? Type545 { get; set; } /// /// /// - public global::Ideogram.CancelOrganizationInviteRequest? Type546 { get; set; } + public global::Ideogram.PromoteOrganizationAdminsRequest? Type546 { get; set; } /// /// /// - public global::Ideogram.ResendOrganizationInviteRequest? Type547 { get; set; } + public global::Ideogram.DemoteOrganizationAdminsRequest? Type547 { get; set; } /// /// /// - public global::Ideogram.ListOrganizationInvoicesResponse? Type548 { get; set; } + public global::Ideogram.CancelOrganizationInviteRequest? Type548 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type549 { get; set; } + public global::Ideogram.ResendOrganizationInviteRequest? Type549 { get; set; } /// /// /// - public global::Ideogram.Invoice? Type550 { get; set; } + public global::Ideogram.ListOrganizationInvoicesResponse? Type550 { get; set; } /// /// /// - public global::Ideogram.InvoiceStatus? Type551 { get; set; } + public global::System.Collections.Generic.IList? Type551 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type552 { get; set; } + public global::Ideogram.Invoice? Type552 { get; set; } /// /// /// - public global::Ideogram.InvoiceLineItem? Type553 { get; set; } + public global::Ideogram.InvoiceStatus? Type553 { get; set; } /// /// /// - public global::Ideogram.GetOrganizationBillingPortalResponse? Type554 { get; set; } + public global::System.Collections.Generic.IList? Type554 { get; set; } /// /// /// - public global::Ideogram.ListDatasetsResponse? Type555 { get; set; } + public global::Ideogram.InvoiceLineItem? Type555 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type556 { get; set; } + public global::Ideogram.GetOrganizationBillingPortalResponse? Type556 { get; set; } /// /// /// - public global::Ideogram.Dataset? Type557 { get; set; } + public global::Ideogram.ListDatasetsResponse? Type557 { get; set; } /// /// /// - public global::Ideogram.CreateDatasetRequest? Type558 { get; set; } + public global::System.Collections.Generic.IList? Type558 { get; set; } /// /// /// - public global::Ideogram.GetDatasetResponse? Type559 { get; set; } + public global::Ideogram.Dataset? Type559 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type560 { get; set; } + public global::Ideogram.CreateDatasetRequest? Type560 { get; set; } /// /// /// - public global::Ideogram.DatasetFile? Type561 { get; set; } + public global::Ideogram.GetDatasetResponse? Type561 { get; set; } /// /// /// - public global::Ideogram.UploadDatasetAssetsResponse? Type562 { get; set; } + public global::System.Collections.Generic.IList? Type562 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type563 { get; set; } + public global::Ideogram.DatasetFile? Type563 { get; set; } /// /// /// - public global::Ideogram.DatasetUploadSucceededAsset? Type564 { get; set; } + public global::Ideogram.UploadDatasetAssetsResponse? Type564 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type565 { get; set; } + public global::System.Collections.Generic.IList? Type565 { get; set; } /// /// /// - public global::Ideogram.DatasetUploadFailedAsset? Type566 { get; set; } + public global::Ideogram.DatasetUploadSucceededAsset? Type566 { get; set; } /// /// /// - public global::Ideogram.DatasetAssetFailureReason? Type567 { get; set; } + public global::System.Collections.Generic.IList? Type567 { get; set; } /// /// /// - public global::Ideogram.UploadDatasetAssetsRequest? Type568 { get; set; } + public global::Ideogram.DatasetUploadFailedAsset? Type568 { get; set; } /// /// /// - public global::Ideogram.TrainDatasetModelResponse? Type569 { get; set; } + public global::Ideogram.DatasetAssetFailureReason? Type569 { get; set; } /// /// /// - public global::Ideogram.TrainDatasetModelRequest? Type570 { get; set; } + public global::Ideogram.UploadDatasetAssetsRequest? Type570 { get; set; } /// /// /// - public global::Ideogram.ListModelsResponse? Type571 { get; set; } + public global::Ideogram.TrainDatasetModelResponse? Type571 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type572 { get; set; } + public global::Ideogram.TrainDatasetModelRequest? Type572 { get; set; } /// /// /// - public global::Ideogram.CustomModel? Type573 { get; set; } + public global::Ideogram.ListModelsResponse? Type573 { get; set; } /// /// /// - public global::Ideogram.ModelStatus? Type574 { get; set; } + public global::System.Collections.Generic.IList? Type574 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type575 { get; set; } + public global::Ideogram.CustomModel? Type575 { get; set; } /// /// /// - public global::Ideogram.TrainingRun? Type576 { get; set; } + public global::Ideogram.ModelStatus? Type576 { get; set; } /// /// /// - public global::Ideogram.TrainingRunStatus? Type577 { get; set; } + public global::System.Collections.Generic.IList? Type577 { get; set; } /// /// /// - public global::Ideogram.GetModelResponse? Type578 { get; set; } + public global::Ideogram.TrainingRun? Type578 { get; set; } /// /// /// - public global::Ideogram.TrainModelV3Request? Type579 { get; set; } + public global::Ideogram.TrainingRunStatus? Type579 { get; set; } /// /// /// - public global::Ideogram.TrainModelV3AdvancedRequest? Type580 { get; set; } + public global::Ideogram.GetModelResponse? Type580 { get; set; } /// /// /// - public global::Ideogram.TrainModelV4Request? Type581 { get; set; } + public global::Ideogram.TrainModelV3Request? Type581 { get; set; } /// /// /// - public global::Ideogram.TrainModelV4AdvancedRequest? Type582 { get; set; } + public global::Ideogram.TrainModelV3AdvancedRequest? Type582 { get; set; } /// /// /// - public global::Ideogram.PublishMiniAppResponse? Type583 { get; set; } + public global::Ideogram.TrainModelV4Request? Type583 { get; set; } /// /// /// - public global::Ideogram.PublishMiniAppRequest? Type584 { get; set; } + public global::Ideogram.TrainModelV4AdvancedRequest? Type584 { get; set; } /// /// /// - public global::Ideogram.PublishMiniAppRequestEmbed? Type585 { get; set; } + public global::Ideogram.PublishMiniAppResponse? Type585 { get; set; } /// /// /// - public object? Type586 { get; set; } + public global::Ideogram.PublishMiniAppRequest? Type586 { get; set; } /// /// /// - public global::Ideogram.MiniAppArtwork? Type587 { get; set; } + public global::Ideogram.PublishMiniAppRequestEmbed? Type587 { get; set; } /// /// /// - public global::Ideogram.PublishMiniAppPreviewResponse? Type588 { get; set; } + public object? Type588 { get; set; } /// /// /// - public global::Ideogram.PublishMiniAppPreviewRequest? Type589 { get; set; } + public global::Ideogram.MiniAppArtwork? Type589 { get; set; } /// /// /// - public global::Ideogram.PublishMiniAppPreviewRequestEmbed? Type590 { get; set; } + public global::Ideogram.PublishMiniAppPreviewResponse? Type590 { get; set; } /// /// /// - public global::Ideogram.UnpublishMiniAppPreviewResponse? Type591 { get; set; } + public global::Ideogram.PublishMiniAppPreviewRequest? Type591 { get; set; } /// /// /// - public global::Ideogram.GetStaleMiniAppPreviewsResponse? Type592 { get; set; } + public global::Ideogram.PublishMiniAppPreviewRequestEmbed? Type592 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type593 { get; set; } + public global::Ideogram.UnpublishMiniAppPreviewResponse? Type593 { get; set; } /// /// /// - public global::Ideogram.MiniAppMarketingProjectionEntry? Type594 { get; set; } + public global::Ideogram.GetStaleMiniAppPreviewsResponse? Type594 { get; set; } /// /// /// - public global::Ideogram.MiniAppMarketingProjectionEntryEmbed? Type595 { get; set; } + public global::System.Collections.Generic.IList? Type595 { get; set; } /// /// /// - public global::Ideogram.GetIntegrationsResponse? Type596 { get; set; } + public global::Ideogram.MiniAppMarketingProjectionEntry? Type596 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type597 { get; set; } + public global::Ideogram.MiniAppMarketingProjectionEntryEmbed? Type597 { get; set; } /// /// /// - public global::Ideogram.IntegrationType? Type598 { get; set; } + public global::Ideogram.GetIntegrationsResponse? Type598 { get; set; } /// /// /// - public global::Ideogram.IntegrationErrorResponse? Type599 { get; set; } + public global::System.Collections.Generic.IList? Type599 { get; set; } /// /// /// - public global::Ideogram.IntegrationErrorResponseError? Type600 { get; set; } + public global::Ideogram.IntegrationType? Type600 { get; set; } /// /// /// - public global::Ideogram.IntegrationAssetSearchResponse? Type601 { get; set; } + public global::Ideogram.IntegrationErrorResponse? Type601 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type602 { get; set; } + public global::Ideogram.IntegrationErrorResponseError? Type602 { get; set; } /// /// /// - public global::Ideogram.IntegrationAsset? Type603 { get; set; } + public global::Ideogram.IntegrationAssetSearchResponse? Type603 { get; set; } /// /// /// - public global::Ideogram.IntegrationAssetDelivery? Type604 { get; set; } + public global::System.Collections.Generic.IList? Type604 { get; set; } /// /// /// - public global::Ideogram.IntegrationAssetSearchRequest? Type605 { get; set; } + public global::Ideogram.IntegrationAsset? Type605 { get; set; } /// /// /// - public global::Ideogram.V4StyleDescription? Type606 { get; set; } + public global::Ideogram.IntegrationAssetDelivery? Type606 { get; set; } /// /// /// - public global::Ideogram.V4CompositionalDeconstruction? Type607 { get; set; } + public global::Ideogram.IntegrationAssetSearchRequest? Type607 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type608 { get; set; } + public global::Ideogram.V4StyleDescription? Type608 { get; set; } /// /// /// - public global::Ideogram.V4PromptElement? Type609 { get; set; } + public global::Ideogram.V4CompositionalDeconstruction? Type609 { get; set; } /// /// /// - public global::Ideogram.V4ObjPromptElement? Type610 { get; set; } + public global::System.Collections.Generic.IList? Type610 { get; set; } /// /// /// - public global::Ideogram.V4TextPromptElement? Type611 { get; set; } + public global::Ideogram.V4PromptElement? Type611 { get; set; } /// /// /// - public global::Ideogram.V4PromptElementDiscriminator? Type612 { get; set; } + public global::Ideogram.V4ObjPromptElement? Type612 { get; set; } /// /// /// - public global::Ideogram.V4PromptElementDiscriminatorType? Type613 { get; set; } + public global::Ideogram.V4TextPromptElement? Type613 { get; set; } /// /// /// - public global::Ideogram.V4ObjPromptElementType? Type614 { get; set; } + public global::Ideogram.V4PromptElementDiscriminator? Type614 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type615 { get; set; } + public global::Ideogram.V4PromptElementDiscriminatorType? Type615 { get; set; } /// /// /// - public global::Ideogram.V4TextPromptElementType? Type616 { get; set; } + public global::Ideogram.V4ObjPromptElementType? Type616 { get; set; } /// /// /// - public global::Ideogram.ColorPaletteWithPresetName? Type617 { get; set; } + public global::System.Collections.Generic.IList? Type617 { get; set; } /// /// /// - public global::Ideogram.ColorPaletteWithMembers? Type618 { get; set; } + public global::Ideogram.V4TextPromptElementType? Type618 { get; set; } /// /// /// - public global::Ideogram.ColorPalettePresetName? Type619 { get; set; } + public global::Ideogram.ColorPaletteWithPresetName? Type619 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type620 { get; set; } + public global::Ideogram.ColorPaletteWithMembers? Type620 { get; set; } /// /// /// - public global::Ideogram.ColorPaletteMember? Type621 { get; set; } + public global::Ideogram.ColorPalettePresetName? Type621 { get; set; } /// /// /// - public global::Ideogram.SvgGenerationObject? Type622 { get; set; } + public global::System.Collections.Generic.IList? Type622 { get; set; } /// /// /// - public global::Ideogram.SvgGenerationObjectObjectType? Type623 { get; set; } + public global::Ideogram.ColorPaletteMember? Type623 { get; set; } /// /// /// - public global::Ideogram.SvgGenerationObjectMimeType? Type624 { get; set; } + public global::Ideogram.SvgGenerationObject? Type624 { get; set; } /// /// /// - public global::Ideogram.VideoObject? Type625 { get; set; } + public global::Ideogram.SvgGenerationObjectObjectType? Type625 { get; set; } /// /// /// - public global::Ideogram.VideoObjectObjectType? Type626 { get; set; } + public global::Ideogram.SvgGenerationObjectMimeType? Type626 { get; set; } /// /// /// - public global::Ideogram.DetectedTextBlockAlignment? Type627 { get; set; } + public global::Ideogram.VideoObject? Type627 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type628 { get; set; } + public global::Ideogram.VideoObjectObjectType? Type628 { get; set; } /// /// /// - public global::Ideogram.DetectedTextBlockFormattingItem? Type629 { get; set; } + public global::Ideogram.TextLayerizerResultObject? Type629 { get; set; } /// /// /// - public global::Ideogram.DetectedTextBlockRole? Type630 { get; set; } + public global::Ideogram.TextLayerizerResultObjectObjectType? Type630 { get; set; } /// /// /// - public global::Ideogram.AssetType? Type631 { get; set; } + public global::System.Collections.Generic.IList? Type631 { get; set; } /// /// /// - public global::Ideogram.IdeogramColorPaletteWithPresetName? Type632 { get; set; } + public global::Ideogram.DetectedTextBlockAlignment? Type632 { get; set; } /// /// /// - public global::Ideogram.IdeogramColorPalettePresetName? Type633 { get; set; } + public global::System.Collections.Generic.IList? Type633 { get; set; } /// /// /// - public global::Ideogram.PostGenerateDesignV4200Response? Type634 { get; set; } + public global::Ideogram.DetectedTextBlockFormattingItem? Type634 { get; set; } /// /// /// - public global::Ideogram.PostGenerateDesignV4200ResponseDiscriminator? Type635 { get; set; } + public global::Ideogram.DetectedTextBlockRole? Type635 { get; set; } /// /// /// - public global::Ideogram.PostGenerateDesignV4200ResponseDiscriminatorResponseType? Type636 { get; set; } + public global::Ideogram.AssetType? Type636 { get; set; } /// /// /// - public global::Ideogram.PostInternalTesting200Response? Type637 { get; set; } + public global::Ideogram.IdeogramColorPaletteWithPresetName? Type637 { get; set; } /// /// /// - public global::Ideogram.GenerationResponseDataInnerDiscriminator? Type638 { get; set; } + public global::Ideogram.IdeogramColorPalettePresetName? Type638 { get; set; } /// /// /// - public global::Ideogram.GenerationResponseDataInnerDiscriminatorObjectType? Type639 { get; set; } + public global::Ideogram.PostGenerateDesignV4200Response? Type639 { get; set; } /// /// /// - public global::Ideogram.MagicPromptRequestMessagesInnerRole? Type640 { get; set; } + public global::Ideogram.PostGenerateDesignV4200ResponseDiscriminator? Type640 { get; set; } /// /// /// - public global::Ideogram.DatasetCoverAssetIdentifier? Type641 { get; set; } + public global::Ideogram.PostGenerateDesignV4200ResponseDiscriminatorResponseType? Type641 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type642 { get; set; } + public global::Ideogram.PostInternalTesting200Response? Type642 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type643 { get; set; } + public global::Ideogram.GenerationResponseDataInnerDiscriminator? Type643 { get; set; } /// /// /// - public global::Ideogram.ListCustomModelsScope? Type644 { get; set; } + public global::Ideogram.GenerationResponseDataInnerDiscriminatorObjectType? Type644 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type645 { get; set; } + public global::Ideogram.MagicPromptRequestMessagesInnerRole? Type645 { get; set; } /// /// /// - public global::Ideogram.GetAccountUsageBucketWidth? Type646 { get; set; } + public global::Ideogram.DatasetCoverAssetIdentifier? Type646 { get; set; } /// /// /// - public global::System.Collections.Generic.IList? Type647 { get; set; } + public global::System.Collections.Generic.IList? Type647 { get; set; } /// /// /// - public global::Ideogram.GetAccountUsageSource? Type648 { get; set; } + public global::System.Collections.Generic.IList? Type648 { get; set; } + /// + /// + /// + public global::Ideogram.ListCustomModelsScope? Type649 { get; set; } + /// + /// + /// + public global::System.Collections.Generic.IList? Type650 { get; set; } + /// + /// + /// + public global::Ideogram.GetAccountUsageBucketWidth? Type651 { get; set; } + /// + /// + /// + public global::System.Collections.Generic.IList? Type652 { get; set; } + /// + /// + /// + public global::Ideogram.GetAccountUsageSource? Type653 { get; set; } /// /// @@ -2894,22 +2914,26 @@ public sealed partial class JsonSerializerContextTypes /// /// /// - public global::System.Collections.Generic.List? ListType66 { get; set; } + public global::System.Collections.Generic.List? ListType66 { get; set; } + /// + /// + /// + public global::System.Collections.Generic.List? ListType67 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType67 { get; set; } + public global::System.Collections.Generic.List? ListType68 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType68 { get; set; } + public global::System.Collections.Generic.List? ListType69 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType69 { get; set; } + public global::System.Collections.Generic.List? ListType70 { get; set; } /// /// /// - public global::System.Collections.Generic.List? ListType70 { get; set; } + public global::System.Collections.Generic.List? ListType71 { get; set; } } } \ No newline at end of file diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.GenerationResponseDataInner.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.GenerationResponseDataInner.g.cs index f56e74f..c69f87d 100644 --- a/src/libs/Ideogram/Generated/Ideogram.Models.GenerationResponseDataInner.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.Models.GenerationResponseDataInner.g.cs @@ -201,6 +201,44 @@ public bool TryPickLayerizedImage( public global::Ideogram.LayerizedImageObject PickLayerizedImage() => LayerizedImage is { } value ? value : throw new global::System.InvalidOperationException($"Expected union variant 'LayerizedImage' but the value was {ToString()}."); + + /// + /// One layerized design. Links are available for a limited period of time;
+ /// if you would like to keep a file, you must download it. + ///
+#if NET6_0_OR_GREATER + public global::Ideogram.TextLayerizerResultObject? LayerizedDesignGeneration { get; init; } +#else + public global::Ideogram.TextLayerizerResultObject? LayerizedDesignGeneration { get; } +#endif + + /// + /// + /// +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(LayerizedDesignGeneration))] +#endif + public bool IsLayerizedDesignGeneration => LayerizedDesignGeneration != null; + + /// + /// + /// + public bool TryPickLayerizedDesignGeneration( +#if NET6_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.NotNullWhen(true)] +#endif + out global::Ideogram.TextLayerizerResultObject? value) + { + value = LayerizedDesignGeneration; + return IsLayerizedDesignGeneration; + } + + /// + /// + /// + public global::Ideogram.TextLayerizerResultObject PickLayerizedDesignGeneration() => LayerizedDesignGeneration is { } value + ? value + : throw new global::System.InvalidOperationException($"Expected union variant 'LayerizedDesignGeneration' but the value was {ToString()}."); /// /// /// @@ -316,6 +354,29 @@ public GenerationResponseDataInner(global::Ideogram.LayerizedImageObject? value) ///
public static GenerationResponseDataInner FromLayerizedImage(global::Ideogram.LayerizedImageObject? value) => new GenerationResponseDataInner(value); + /// + /// + /// + public static implicit operator GenerationResponseDataInner(global::Ideogram.TextLayerizerResultObject value) => new GenerationResponseDataInner((global::Ideogram.TextLayerizerResultObject?)value); + + /// + /// + /// + public static implicit operator global::Ideogram.TextLayerizerResultObject?(GenerationResponseDataInner @this) => @this.LayerizedDesignGeneration; + + /// + /// + /// + public GenerationResponseDataInner(global::Ideogram.TextLayerizerResultObject? value) + { + LayerizedDesignGeneration = value; + } + + /// + /// + /// + public static GenerationResponseDataInner FromLayerizedDesignGeneration(global::Ideogram.TextLayerizerResultObject? value) => new GenerationResponseDataInner(value); + /// /// /// @@ -325,7 +386,8 @@ public GenerationResponseDataInner( global::Ideogram.SvgGenerationObject? svgGeneration, global::Ideogram.ImageGenerationObject? imageGeneration, global::Ideogram.VideoObject? videoGeneration, - global::Ideogram.LayerizedImageObject? layerizedImage + global::Ideogram.LayerizedImageObject? layerizedImage, + global::Ideogram.TextLayerizerResultObject? layerizedDesignGeneration ) { ObjectType = objectType; @@ -335,12 +397,14 @@ public GenerationResponseDataInner( ImageGeneration = imageGeneration; VideoGeneration = videoGeneration; LayerizedImage = layerizedImage; + LayerizedDesignGeneration = layerizedDesignGeneration; } /// /// /// public object? Object => + LayerizedDesignGeneration as object ?? LayerizedImage as object ?? VideoGeneration as object ?? ImageGeneration as object ?? @@ -356,7 +420,8 @@ ImageWithoutPromptOrSeed as object SvgGeneration?.ToString() ?? ImageGeneration?.ToString() ?? VideoGeneration?.ToString() ?? - LayerizedImage?.ToString() + LayerizedImage?.ToString() ?? + LayerizedDesignGeneration?.ToString() ; /// @@ -364,7 +429,7 @@ ImageWithoutPromptOrSeed as object /// public bool Validate() { - return IsImageWithoutPromptOrSeed && !IsSvgGeneration && !IsImageGeneration && !IsVideoGeneration && !IsLayerizedImage || !IsImageWithoutPromptOrSeed && IsSvgGeneration && !IsImageGeneration && !IsVideoGeneration && !IsLayerizedImage || !IsImageWithoutPromptOrSeed && !IsSvgGeneration && IsImageGeneration && !IsVideoGeneration && !IsLayerizedImage || !IsImageWithoutPromptOrSeed && !IsSvgGeneration && !IsImageGeneration && IsVideoGeneration && !IsLayerizedImage || !IsImageWithoutPromptOrSeed && !IsSvgGeneration && !IsImageGeneration && !IsVideoGeneration && IsLayerizedImage; + return IsImageWithoutPromptOrSeed && !IsSvgGeneration && !IsImageGeneration && !IsVideoGeneration && !IsLayerizedImage && !IsLayerizedDesignGeneration || !IsImageWithoutPromptOrSeed && IsSvgGeneration && !IsImageGeneration && !IsVideoGeneration && !IsLayerizedImage && !IsLayerizedDesignGeneration || !IsImageWithoutPromptOrSeed && !IsSvgGeneration && IsImageGeneration && !IsVideoGeneration && !IsLayerizedImage && !IsLayerizedDesignGeneration || !IsImageWithoutPromptOrSeed && !IsSvgGeneration && !IsImageGeneration && IsVideoGeneration && !IsLayerizedImage && !IsLayerizedDesignGeneration || !IsImageWithoutPromptOrSeed && !IsSvgGeneration && !IsImageGeneration && !IsVideoGeneration && IsLayerizedImage && !IsLayerizedDesignGeneration || !IsImageWithoutPromptOrSeed && !IsSvgGeneration && !IsImageGeneration && !IsVideoGeneration && !IsLayerizedImage && IsLayerizedDesignGeneration; } /// @@ -376,6 +441,7 @@ public bool Validate() global::System.Func? imageGeneration = null, global::System.Func? videoGeneration = null, global::System.Func? layerizedImage = null, + global::System.Func? layerizedDesignGeneration = null, bool validate = true) { if (validate) @@ -403,6 +469,10 @@ public bool Validate() { return layerizedImage(__value4); } + else if (LayerizedDesignGeneration is { } __value5 && layerizedDesignGeneration != null) + { + return layerizedDesignGeneration(__value5); + } return default(TResult); } @@ -420,6 +490,8 @@ public void Match( global::System.Action? videoGeneration = null, global::System.Action? layerizedImage = null, + + global::System.Action? layerizedDesignGeneration = null, bool validate = true) { if (validate) @@ -447,6 +519,10 @@ public void Match( { layerizedImage?.Invoke(__value4); } + else if (LayerizedDesignGeneration is { } __value5) + { + layerizedDesignGeneration?.Invoke(__value5); + } } /// @@ -458,6 +534,7 @@ public void Switch( global::System.Action? imageGeneration = null, global::System.Action? videoGeneration = null, global::System.Action? layerizedImage = null, + global::System.Action? layerizedDesignGeneration = null, bool validate = true) { if (validate) @@ -485,6 +562,10 @@ public void Switch( { layerizedImage?.Invoke(__value4); } + else if (LayerizedDesignGeneration is { } __value5) + { + layerizedDesignGeneration?.Invoke(__value5); + } } /// @@ -504,6 +585,8 @@ public override int GetHashCode() typeof(global::Ideogram.VideoObject), LayerizedImage, typeof(global::Ideogram.LayerizedImageObject), + LayerizedDesignGeneration, + typeof(global::Ideogram.TextLayerizerResultObject), }; const int offset = unchecked((int)2166136261); const int prime = 16777619; @@ -524,7 +607,8 @@ public bool Equals(GenerationResponseDataInner other) global::System.Collections.Generic.EqualityComparer.Default.Equals(SvgGeneration, other.SvgGeneration) && global::System.Collections.Generic.EqualityComparer.Default.Equals(ImageGeneration, other.ImageGeneration) && global::System.Collections.Generic.EqualityComparer.Default.Equals(VideoGeneration, other.VideoGeneration) && - global::System.Collections.Generic.EqualityComparer.Default.Equals(LayerizedImage, other.LayerizedImage) + global::System.Collections.Generic.EqualityComparer.Default.Equals(LayerizedImage, other.LayerizedImage) && + global::System.Collections.Generic.EqualityComparer.Default.Equals(LayerizedDesignGeneration, other.LayerizedDesignGeneration) ; } diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.GenerationResponseDataInnerDiscriminatorObjectType.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.GenerationResponseDataInnerDiscriminatorObjectType.g.cs index 9f42f13..b7469a8 100644 --- a/src/libs/Ideogram/Generated/Ideogram.Models.GenerationResponseDataInnerDiscriminatorObjectType.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.Models.GenerationResponseDataInnerDiscriminatorObjectType.g.cs @@ -19,6 +19,10 @@ public enum GenerationResponseDataInnerDiscriminatorObjectType /// /// /// + LayerizedDesignGeneration, + /// + /// + /// LayerizedImage, /// /// @@ -44,6 +48,7 @@ public static string ToValueString(this GenerationResponseDataInnerDiscriminator { GenerationResponseDataInnerDiscriminatorObjectType.ImageGeneration => "image.generation", GenerationResponseDataInnerDiscriminatorObjectType.ImageWithoutPromptOrSeed => "image.without-prompt-or-seed", + GenerationResponseDataInnerDiscriminatorObjectType.LayerizedDesignGeneration => "layerized_design.generation", GenerationResponseDataInnerDiscriminatorObjectType.LayerizedImage => "layerized_image", GenerationResponseDataInnerDiscriminatorObjectType.SvgGeneration => "svg.generation", GenerationResponseDataInnerDiscriminatorObjectType.VideoGeneration => "video.generation", @@ -59,6 +64,7 @@ public static string ToValueString(this GenerationResponseDataInnerDiscriminator { "image.generation" => GenerationResponseDataInnerDiscriminatorObjectType.ImageGeneration, "image.without-prompt-or-seed" => GenerationResponseDataInnerDiscriminatorObjectType.ImageWithoutPromptOrSeed, + "layerized_design.generation" => GenerationResponseDataInnerDiscriminatorObjectType.LayerizedDesignGeneration, "layerized_image" => GenerationResponseDataInnerDiscriminatorObjectType.LayerizedImage, "svg.generation" => GenerationResponseDataInnerDiscriminatorObjectType.SvgGeneration, "video.generation" => GenerationResponseDataInnerDiscriminatorObjectType.VideoGeneration, diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.LayerizedTextBlockVariant2.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.LayerizedTextBlockVariant2.g.cs index d488919..8835cae 100644 --- a/src/libs/Ideogram/Generated/Ideogram.Models.LayerizedTextBlockVariant2.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.Models.LayerizedTextBlockVariant2.g.cs @@ -8,6 +8,15 @@ namespace Ideogram /// public sealed partial class LayerizedTextBlockVariant2 { + /// + /// Identifier of this block's layer in the page at `html_url`; pass it to the page's editing API.
+ /// Example: text-0 + ///
+ /// text-0 + [global::System.Text.Json.Serialization.JsonPropertyName("layer_id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string LayerId { get; set; } + /// /// The block's colour runs in reading order. Present, with at least one
/// run, whenever `color` is set; concatenating the runs' `text` reproduces
@@ -25,6 +34,10 @@ public sealed partial class LayerizedTextBlockVariant2 /// /// Initializes a new instance of the class. /// + /// + /// Identifier of this block's layer in the page at `html_url`; pass it to the page's editing API.
+ /// Example: text-0 + /// /// /// The block's colour runs in reading order. Present, with at least one
/// run, whenever `color` is set; concatenating the runs' `text` reproduces
@@ -34,8 +47,10 @@ public sealed partial class LayerizedTextBlockVariant2 [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] #endif public LayerizedTextBlockVariant2( + string layerId, global::System.Collections.Generic.IList? spans) { + this.LayerId = layerId ?? throw new global::System.ArgumentNullException(nameof(layerId)); this.Spans = spans; } diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.PreciseEditImageIdeogram45Request.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.PreciseEditImageIdeogram45Request.g.cs index e10effb..13cde2a 100644 --- a/src/libs/Ideogram/Generated/Ideogram.Models.PreciseEditImageIdeogram45Request.g.cs +++ b/src/libs/Ideogram/Generated/Ideogram.Models.PreciseEditImageIdeogram45Request.g.cs @@ -62,11 +62,11 @@ public sealed partial class PreciseEditImageIdeogram45Request public string? Maskname { get; set; } /// - /// How much of the image being edited the model may see and change.
+ /// Which region of the image to edit.
/// `none`, the default, edits the whole image. A large image may come back smaller than it was sent.
/// `auto` requires a `mask` and automatically selects an appropriate context region around the masked area.
- /// `x,y,width,height` names the region explicitly, in the edited image's own pixels with the origin at its top-left corner — for example `1024,512,2048,1536`. The region must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.
- /// With `auto` or an explicit region, every pixel outside the region is returned exactly as supplied and the output keeps the image's own width and height.
+ /// `y_min,x_min,y_max,x_max` names the region explicitly, by its corners. Rows come first, matching the `bbox` ordering used elsewhere in this API, and the values are the edited image's own pixels with the origin at its top-left corner. For example `512,1024,2048,3072` is the region 2048 pixels wide and 1536 tall whose top-left corner is 1024 across and 512 down. The maximum edges are exclusive, so the region measures `x_max - x_min` by `y_max - y_min`. It must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.
+ /// With `auto` or an explicit region, only that region changes and the output keeps the image's own width and height.
/// Default Value: none ///
[global::System.Text.Json.Serialization.JsonPropertyName("context_window")] @@ -171,11 +171,11 @@ public sealed partial class PreciseEditImageIdeogram45Request /// An optional mask that limits the edit to part of `image` (max 50MB; JPEG, PNG, or WEBP). Multipart requests only. Black marks the area to edit and white the area to keep; values in between are rounded to the nearer of the two. The mask must have the same width and height as `image` and contain both black and white areas. Requires `image` as raw bytes; masks cannot be combined with asset references. A masked request can include at most three `reference_images`. /// /// - /// How much of the image being edited the model may see and change.
+ /// Which region of the image to edit.
/// `none`, the default, edits the whole image. A large image may come back smaller than it was sent.
/// `auto` requires a `mask` and automatically selects an appropriate context region around the masked area.
- /// `x,y,width,height` names the region explicitly, in the edited image's own pixels with the origin at its top-left corner — for example `1024,512,2048,1536`. The region must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.
- /// With `auto` or an explicit region, every pixel outside the region is returned exactly as supplied and the output keeps the image's own width and height.
+ /// `y_min,x_min,y_max,x_max` names the region explicitly, by its corners. Rows come first, matching the `bbox` ordering used elsewhere in this API, and the values are the edited image's own pixels with the origin at its top-left corner. For example `512,1024,2048,3072` is the region 2048 pixels wide and 1536 tall whose top-left corner is 1024 across and 512 down. The maximum edges are exclusive, so the region measures `x_max - x_min` by `y_max - y_min`. It must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.
+ /// With `auto` or an explicit region, only that region changes and the output keeps the image's own width and height.
/// Default Value: none /// /// diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerRequest.Json.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerRequest.Json.g.cs new file mode 100644 index 0000000..5542126 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerRequest.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Ideogram +{ + public sealed partial class TextLayerizerRequest + { + /// + /// Serializes the current instance to a JSON string using the provided JsonSerializerContext. + /// + public string ToJson( + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Serialize( + this, + this.GetType(), + jsonSerializerContext); + } + + /// + /// Serializes the current instance to a JSON string using the generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Serializes the current instance to a JSON string using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public string ToJson( + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Ideogram.TextLayerizerRequest? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Ideogram.TextLayerizerRequest), + jsonSerializerContext) as global::Ideogram.TextLayerizerRequest; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Ideogram.TextLayerizerRequest? FromJson( + string json) + { + return FromJson( + json, + global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public static global::Ideogram.TextLayerizerRequest? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON stream using the provided JsonSerializerContext. + /// + public static async global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return (await global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + typeof(global::Ideogram.TextLayerizerRequest), + jsonSerializerContext).ConfigureAwait(false)) as global::Ideogram.TextLayerizerRequest; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Deserializes a JSON stream using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerRequest.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerRequest.g.cs new file mode 100644 index 0000000..855d602 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerRequest.g.cs @@ -0,0 +1,158 @@ + +#nullable enable + +namespace Ideogram +{ + /// + /// A request to layerize the text in one image. Provide exactly one of
+ /// `image` or `image_asset_identifier`. + ///
+ public sealed partial class TextLayerizerRequest + { + /// + /// JPEG, PNG or WEBP source; at most 50 MB. Multipart only. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("image")] + public byte[]? Image { get; set; } + + /// + /// JPEG, PNG or WEBP source; at most 50 MB. Multipart only. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("imagename")] + public string? Imagename { get; set; } + + /// + /// An identifier for an ideogram asset.
+ /// Example: {"asset_type":"RESPONSE","asset_id":"7uS_VESkRI6O3-sVgHQp_A"} + ///
+ /// {"asset_type":"RESPONSE","asset_id":"7uS_VESkRI6O3-sVgHQp_A"} + [global::System.Text.Json.Serialization.JsonPropertyName("image_asset_identifier")] + public global::Ideogram.AssetIdentifier? ImageAssetIdentifier { get; set; } + + /// + /// A description of the image, used to guide text detection. When omitted, detection runs on the image alone. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("prompt")] + public string? Prompt { get; set; } + + /// + /// Random seed. Set for reproducible generation.
+ /// Example: 12345 + ///
+ /// 12345 + [global::System.Text.Json.Serialization.JsonPropertyName("seed")] + public int? Seed { get; set; } + + /// + /// Candidate font files to make available for text style matching and to embed in the standalone HTML page. Supported formats .ttf, .otf, .woff, .woff2 (max 5 MB each, at most 5 files). Multipart only. You are responsible for holding the rights to embed and redistribute the fonts you upload. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("font_candidate_files")] + public global::System.Collections.Generic.IList? FontCandidateFiles { get; set; } + + /// + /// Outputs are private by default. Enterprise outputs are always private. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("private")] + public bool? Private { get; set; } + + /// + /// URL-safe base64 ID of a writable destination collection. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("target_collection_id")] + public string? TargetCollectionId { get; set; } + + /// + /// HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a
+ /// JSON POST to this URL once all images for the request have finished
+ /// generating. The body mirrors the synchronous generate response:
+ /// `request_id`, `created`, and a `data` array
+ /// containing every generated image (`url`, `prompt`, `resolution`, `seed`,
+ /// `is_image_safe`). Each delivery is signed with Ed25519 and verifiable
+ /// against the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;
+ /// private and loopback hosts and the cloud metadata service are rejected.
+ /// Example: https://api.example.com/webhooks/ideogram + ///
+ /// https://api.example.com/webhooks/ideogram + [global::System.Text.Json.Serialization.JsonPropertyName("webhook_url")] + public string? WebhookUrl { get; set; } + + /// + /// Additional properties that are not explicitly defined in the schema + /// + [global::System.Text.Json.Serialization.JsonExtensionData] + public global::System.Collections.Generic.IDictionary AdditionalProperties { get; set; } = new global::System.Collections.Generic.Dictionary(); + + /// + /// Initializes a new instance of the class. + /// + /// + /// JPEG, PNG or WEBP source; at most 50 MB. Multipart only. + /// + /// + /// JPEG, PNG or WEBP source; at most 50 MB. Multipart only. + /// + /// + /// An identifier for an ideogram asset.
+ /// Example: {"asset_type":"RESPONSE","asset_id":"7uS_VESkRI6O3-sVgHQp_A"} + /// + /// + /// A description of the image, used to guide text detection. When omitted, detection runs on the image alone. + /// + /// + /// Random seed. Set for reproducible generation.
+ /// Example: 12345 + /// + /// + /// Candidate font files to make available for text style matching and to embed in the standalone HTML page. Supported formats .ttf, .otf, .woff, .woff2 (max 5 MB each, at most 5 files). Multipart only. You are responsible for holding the rights to embed and redistribute the fonts you upload. + /// + /// + /// Outputs are private by default. Enterprise outputs are always private. + /// + /// + /// URL-safe base64 ID of a writable destination collection. + /// + /// + /// HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a
+ /// JSON POST to this URL once all images for the request have finished
+ /// generating. The body mirrors the synchronous generate response:
+ /// `request_id`, `created`, and a `data` array
+ /// containing every generated image (`url`, `prompt`, `resolution`, `seed`,
+ /// `is_image_safe`). Each delivery is signed with Ed25519 and verifiable
+ /// against the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;
+ /// private and loopback hosts and the cloud metadata service are rejected.
+ /// Example: https://api.example.com/webhooks/ideogram + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public TextLayerizerRequest( + byte[]? image, + string? imagename, + global::Ideogram.AssetIdentifier? imageAssetIdentifier, + string? prompt, + int? seed, + global::System.Collections.Generic.IList? fontCandidateFiles, + bool? @private, + string? targetCollectionId, + string? webhookUrl) + { + this.Image = image; + this.Imagename = imagename; + this.ImageAssetIdentifier = imageAssetIdentifier; + this.Prompt = prompt; + this.Seed = seed; + this.FontCandidateFiles = fontCandidateFiles; + this.Private = @private; + this.TargetCollectionId = targetCollectionId; + this.WebhookUrl = webhookUrl; + } + + /// + /// Initializes a new instance of the class. + /// + public TextLayerizerRequest() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResponse.Json.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResponse.Json.g.cs new file mode 100644 index 0000000..26195f3 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResponse.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Ideogram +{ + public sealed partial class TextLayerizerResponse + { + /// + /// Serializes the current instance to a JSON string using the provided JsonSerializerContext. + /// + public string ToJson( + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Serialize( + this, + this.GetType(), + jsonSerializerContext); + } + + /// + /// Serializes the current instance to a JSON string using the generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Serializes the current instance to a JSON string using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public string ToJson( + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Ideogram.TextLayerizerResponse? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Ideogram.TextLayerizerResponse), + jsonSerializerContext) as global::Ideogram.TextLayerizerResponse; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Ideogram.TextLayerizerResponse? FromJson( + string json) + { + return FromJson( + json, + global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public static global::Ideogram.TextLayerizerResponse? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON stream using the provided JsonSerializerContext. + /// + public static async global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return (await global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + typeof(global::Ideogram.TextLayerizerResponse), + jsonSerializerContext).ConfigureAwait(false)) as global::Ideogram.TextLayerizerResponse; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Deserializes a JSON stream using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResponse.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResponse.g.cs new file mode 100644 index 0000000..98145f6 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResponse.g.cs @@ -0,0 +1,47 @@ + +#nullable enable + +namespace Ideogram +{ + /// + /// Example: {"generation_id":"generation_id"} + /// + public sealed partial class TextLayerizerResponse + { + /// + /// URL-safe base64 generation ID. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("generation_id")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string GenerationId { get; set; } + + /// + /// Additional properties that are not explicitly defined in the schema + /// + [global::System.Text.Json.Serialization.JsonExtensionData] + public global::System.Collections.Generic.IDictionary AdditionalProperties { get; set; } = new global::System.Collections.Generic.Dictionary(); + + /// + /// Initializes a new instance of the class. + /// + /// + /// URL-safe base64 generation ID. + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public TextLayerizerResponse( + string generationId) + { + this.GenerationId = generationId ?? throw new global::System.ArgumentNullException(nameof(generationId)); + } + + /// + /// Initializes a new instance of the class. + /// + public TextLayerizerResponse() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObject.Json.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObject.Json.g.cs new file mode 100644 index 0000000..a597609 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObject.Json.g.cs @@ -0,0 +1,141 @@ +#nullable enable + +namespace Ideogram +{ + public sealed partial class TextLayerizerResultObject + { + /// + /// Serializes the current instance to a JSON string using the provided JsonSerializerContext. + /// + public string ToJson( + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Serialize( + this, + this.GetType(), + jsonSerializerContext); + } + + /// + /// Serializes the current instance to a JSON string using the generated default JsonSerializerContext. + /// + public string ToJson() + { + return ToJson(global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Serializes the current instance to a JSON string using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public string ToJson( + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return ToJson(global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Serialize( + this, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerContext. + /// + public static global::Ideogram.TextLayerizerResultObject? FromJson( + string json, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + typeof(global::Ideogram.TextLayerizerResultObject), + jsonSerializerContext) as global::Ideogram.TextLayerizerResultObject; + } + + /// + /// Deserializes a JSON string using the generated default JsonSerializerContext. + /// + public static global::Ideogram.TextLayerizerResultObject? FromJson( + string json) + { + return FromJson( + json, + global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Deserializes a JSON string using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public static global::Ideogram.TextLayerizerResultObject? FromJson( + string json, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJson( + json, + global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.Deserialize( + json, + jsonSerializerOptions); + } + + /// + /// Deserializes a JSON stream using the provided JsonSerializerContext. + /// + public static async global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream, + global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext) + { + return (await global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + typeof(global::Ideogram.TextLayerizerResultObject), + jsonSerializerContext).ConfigureAwait(false)) as global::Ideogram.TextLayerizerResultObject; + } + + /// + /// Deserializes a JSON stream using the generated default JsonSerializerContext. + /// + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream) + { + return FromJsonStreamAsync( + jsonStream, + global::Ideogram.SourceGenerationContext.Default); + } + + /// + /// Deserializes a JSON stream using the provided JsonSerializerOptions. + /// +#if NET8_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")] + [global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")] +#endif + public static global::System.Threading.Tasks.ValueTask FromJsonStreamAsync( + global::System.IO.Stream jsonStream, + global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null) + { + if (jsonSerializerOptions is null) + { + return FromJsonStreamAsync( + jsonStream, + global::Ideogram.SourceGenerationContext.Default); + } + + return global::System.Text.Json.JsonSerializer.DeserializeAsync( + jsonStream, + jsonSerializerOptions); + } + } +} diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObject.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObject.g.cs new file mode 100644 index 0000000..453d2cf --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObject.g.cs @@ -0,0 +1,169 @@ + +#nullable enable + +namespace Ideogram +{ + /// + /// One layerized design. Links are available for a limited period of time;
+ /// if you would like to keep a file, you must download it. + ///
+ public sealed partial class TextLayerizerResultObject + { + /// + /// + /// + [global::System.Text.Json.Serialization.JsonPropertyName("object_type")] + [global::System.Text.Json.Serialization.JsonConverter(typeof(global::Ideogram.JsonConverters.TextLayerizerResultObjectObjectTypeJsonConverter))] + public global::Ideogram.TextLayerizerResultObjectObjectType ObjectType { get; set; } + + /// + /// Signed link to the design image with its text intact. Empty when the image did not pass safety checks. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("url")] + public string? Url { get; set; } + + /// + /// Signed link to the base image with all detected text removed. Empty when the image did not pass safety checks. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("base_image_url")] + public string? BaseImageUrl { get; set; } + + /// + /// The resolution of the design, formatted as "WIDTHxHEIGHT".
+ /// Example: 1024x1024 + ///
+ /// 1024x1024 + [global::System.Text.Json.Serialization.JsonPropertyName("resolution")] + [global::System.Text.Json.Serialization.JsonRequired] + public required string Resolution { get; set; } + + /// + /// Whether the image passed safety checks. If false, the links are empty. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("is_image_safe")] + [global::System.Text.Json.Serialization.JsonRequired] + public required bool IsImageSafe { get; set; } + + /// + /// Random seed. Set for reproducible generation.
+ /// Example: 12345 + ///
+ /// 12345 + [global::System.Text.Json.Serialization.JsonPropertyName("seed")] + [global::System.Text.Json.Serialization.JsonRequired] + public required int Seed { get; set; } + + /// + /// Flat list of detected text regions in the design. + /// + [global::System.Text.Json.Serialization.JsonPropertyName("text_blocks")] + [global::System.Text.Json.Serialization.JsonRequired] + public required global::System.Collections.Generic.IList TextBlocks { get; set; } + + /// + /// Signed link to a self-contained HTML page displaying the editable
+ /// design, including curved text, gradients, outlines, and shadows. The
+ /// renderer, images, and fonts are embedded in the page, so it keeps
+ /// working offline once downloaded; the link itself expires after 24
+ /// hours. Uploaded `font_candidate_files` are embedded as supplied, so
+ /// redistributing the page is subject to those fonts' licenses. Empty
+ /// when the image did not pass safety checks or the page could not be
+ /// built.
+ /// The page exposes one editing API for every text layer, whether it
+ /// is drawn as HTML or on a canvas. Each layer is addressed by its
+ /// `text_blocks[].layer_id`. Scripts in the page can call
+ /// `window.layerize` (`ready`, `getTextLayers()`, `setText(id, text)`,
+ /// `update(id, patch)`, `toJSON()`, `toPNG()`); a parent page that
+ /// embeds it in an iframe sends `postMessage` requests such as
+ /// `{"type": "layerize:set-text", "id": "text-0", "text": "Hello"}`
+ /// and receives `layerize:ready`, `layerize:updated`, and
+ /// `layerize:error` replies. The page is served sandboxed with an
+ /// opaque origin, so it cannot read cookies or storage of the site
+ /// that embeds it. + ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("html_url")] + public string? HtmlUrl { get; set; } + + /// + /// Additional properties that are not explicitly defined in the schema + /// + [global::System.Text.Json.Serialization.JsonExtensionData] + public global::System.Collections.Generic.IDictionary AdditionalProperties { get; set; } = new global::System.Collections.Generic.Dictionary(); + + /// + /// Initializes a new instance of the class. + /// + /// + /// The resolution of the design, formatted as "WIDTHxHEIGHT".
+ /// Example: 1024x1024 + /// + /// + /// Whether the image passed safety checks. If false, the links are empty. + /// + /// + /// Random seed. Set for reproducible generation.
+ /// Example: 12345 + /// + /// + /// Flat list of detected text regions in the design. + /// + /// + /// + /// Signed link to the design image with its text intact. Empty when the image did not pass safety checks. + /// + /// + /// Signed link to the base image with all detected text removed. Empty when the image did not pass safety checks. + /// + /// + /// Signed link to a self-contained HTML page displaying the editable
+ /// design, including curved text, gradients, outlines, and shadows. The
+ /// renderer, images, and fonts are embedded in the page, so it keeps
+ /// working offline once downloaded; the link itself expires after 24
+ /// hours. Uploaded `font_candidate_files` are embedded as supplied, so
+ /// redistributing the page is subject to those fonts' licenses. Empty
+ /// when the image did not pass safety checks or the page could not be
+ /// built.
+ /// The page exposes one editing API for every text layer, whether it
+ /// is drawn as HTML or on a canvas. Each layer is addressed by its
+ /// `text_blocks[].layer_id`. Scripts in the page can call
+ /// `window.layerize` (`ready`, `getTextLayers()`, `setText(id, text)`,
+ /// `update(id, patch)`, `toJSON()`, `toPNG()`); a parent page that
+ /// embeds it in an iframe sends `postMessage` requests such as
+ /// `{"type": "layerize:set-text", "id": "text-0", "text": "Hello"}`
+ /// and receives `layerize:ready`, `layerize:updated`, and
+ /// `layerize:error` replies. The page is served sandboxed with an
+ /// opaque origin, so it cannot read cookies or storage of the site
+ /// that embeds it. + /// +#if NET7_0_OR_GREATER + [global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers] +#endif + public TextLayerizerResultObject( + string resolution, + bool isImageSafe, + int seed, + global::System.Collections.Generic.IList textBlocks, + global::Ideogram.TextLayerizerResultObjectObjectType objectType, + string? url, + string? baseImageUrl, + string? htmlUrl) + { + this.ObjectType = objectType; + this.Url = url; + this.BaseImageUrl = baseImageUrl; + this.Resolution = resolution ?? throw new global::System.ArgumentNullException(nameof(resolution)); + this.IsImageSafe = isImageSafe; + this.Seed = seed; + this.TextBlocks = textBlocks ?? throw new global::System.ArgumentNullException(nameof(textBlocks)); + this.HtmlUrl = htmlUrl; + } + + /// + /// Initializes a new instance of the class. + /// + public TextLayerizerResultObject() + { + } + + } +} \ No newline at end of file diff --git a/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObjectObjectType.g.cs b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObjectObjectType.g.cs new file mode 100644 index 0000000..e5f7ec3 --- /dev/null +++ b/src/libs/Ideogram/Generated/Ideogram.Models.TextLayerizerResultObjectObjectType.g.cs @@ -0,0 +1,45 @@ + +#nullable enable + +namespace Ideogram +{ + /// + /// + /// + public enum TextLayerizerResultObjectObjectType + { + /// + /// + /// + LayerizedDesignGeneration, + } + + /// + /// Enum extensions to do fast conversions without the reflection. + /// + public static class TextLayerizerResultObjectObjectTypeExtensions + { + /// + /// Converts an enum to a string. + /// + public static string ToValueString(this TextLayerizerResultObjectObjectType value) + { + return value switch + { + TextLayerizerResultObjectObjectType.LayerizedDesignGeneration => "layerized_design.generation", + _ => throw new global::System.ArgumentOutOfRangeException(nameof(value), value, null), + }; + } + /// + /// Converts an string to a enum. + /// + public static TextLayerizerResultObjectObjectType? ToEnum(string value) + { + return value switch + { + "layerized_design.generation" => TextLayerizerResultObjectObjectType.LayerizedDesignGeneration, + _ => null, + }; + } + } +} \ No newline at end of file diff --git a/src/libs/Ideogram/Generated/autosdk.generated-examples.json b/src/libs/Ideogram/Generated/autosdk.generated-examples.json index c37479d..e903163 100644 --- a/src/libs/Ideogram/Generated/autosdk.generated-examples.json +++ b/src/libs/Ideogram/Generated/autosdk.generated-examples.json @@ -343,6 +343,17 @@ }, { "Order": 32, + "Title": "Text Layerizer", + "Slug": "post-text-layerizer", + "Description": "Turns a flat image into an editable design asynchronously: detected text\nis returned as positioned text blocks with matched fonts, sizes, and\ncolors, alongside a text-free base image and a standalone HTML page of\nthe editable design. Returns a \u0060generation_id\u0060; poll\n\u0060GET /v2/generations/{generation_id}\u0060 or supply a \u0060webhook_url\u0060.", + "Language": "http", + "Code": "### Text Layerizer\n# @name post_text_layerizer\nPOST {{host}}/v2/tool/text-layerizer?dry_run=false\nAuthorization: Bearer {{token}}\nContent-Type: multipart/form-data; boundary=AutoSDKBoundary\nAccept: application/json\n\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022image\u0022; filename=\u0022image.bin\u0022\nContent-Type: application/octet-stream\n\n\u003C ./image.bin\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022image_asset_identifier\u0022\n\n{\u0022asset_type\u0022:\u0022RESPONSE\u0022,\u0022asset_id\u0022:\u00227uS_VESkRI6O3-sVgHQp_A\u0022}\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022prompt\u0022\n\nstring\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022seed\u0022\n\n12345\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022font_candidate_files\u0022; filename=\u0022font_candidate_files.bin\u0022\nContent-Type: application/octet-stream\n\n\u003C ./font_candidate_files.bin\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022private\u0022\n\ntrue\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022target_collection_id\u0022\n\nstring\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022webhook_url\u0022\n\nhttps://api.example.com/webhooks/ideogram\n--AutoSDKBoundary--\n\n## Responses\n# 200\n# Description: Layerization accepted; dry runs return the shared PriceQuote response.\n# Content-Type: application/json\n# 400\n# Description: Invalid source image, font file, or input combination.\n# 401\n# Description: Authentication required.\n# 402\n# Description: Insufficient credits.\n# Content-Type: application/json\n# 403\n# Description: Access denied.\n# 404\n# Description: Source not found.\n# 429\n# Description: Too many requests.\n# Content-Type: application/json\n# 503\n# Description: Layerization is unavailable.", + "Format": "http", + "OperationId": "post_text_layerizer", + "Setup": null + }, + { + "Order": 33, "Title": "Vectorizer", "Slug": "post-vectorizer", "Description": "Converts an image to SVG asynchronously.", @@ -353,7 +364,7 @@ "Setup": null }, { - "Order": 33, + "Order": 34, "Title": "Dress a person in one or more garments", "Slug": "post-virtual-try-on", "Description": "Generates a photorealistic image of the person in the supplied photo\nwearing the supplied garments, preserving their face, body, and\nbackground.\n\nThe request is processed asynchronously. Poll\n\u0060GET /v2/generations/{generation_id}\u0060 with the returned \u0060generation_id\u0060\nuntil the generation is completed or failed.\n\nSupply the person as either an \u0060AssetIdentifier\u0060 reference\n(\u0060person_asset_identifier\u0060) or the raw image bytes directly\n(\u0060person_image\u0060, multipart requests only), and likewise the garments as\neither \u0060garment_asset_identifiers\u0060 or \u0060garment_images\u0060. For each of the\ntwo sources, provide exactly one of the two forms; supplying both, or\nneither, is rejected with a 400.", @@ -364,7 +375,7 @@ "Setup": null }, { - "Order": 34, + "Order": 35, "Title": "Poll a generation", "Slug": "get-generation", "Description": "Retrieves the current status of an asynchronous generation, and its results once complete. Use the \u0060generation_id\u0060 returned by the async generation endpoint. While the generation is \u0060pending\u0060 or has \u0060failed\u0060, the response contains only \u0060generation_id\u0060, \u0060status\u0060, and \u0060created\u0060. Once \u0060status\u0060 is \u0060completed\u0060, the response includes \u0060response_type\u0060 and \u0060data\u0060, and may include \u0060usage_cost_usd_micros\u0060 when the request uses variable usage-based pricing.", @@ -375,7 +386,7 @@ "Setup": null }, { - "Order": 35, + "Order": 36, "Title": "Edit (legacy)", "Slug": "post-edit-image", "Description": "Edit a given image synchronously using the provided mask. The mask indicates which part of the image\nshould be edited, while the prompt and chosen style type can further guide the edit.\n\nSupported image formats include JPEG, PNG, and WebP.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -386,7 +397,7 @@ "Setup": null }, { - "Order": 36, + "Order": 37, "Title": "Generate a design from a text prompt with text detection and correction", "Slug": "post-generate-design-v3", "Description": "Generates a design synchronously from a text prompt using the Ideogram 3.0 model, then detects and corrects text layers within the generated image.\n\nThe response includes the generated image URL along with detected text layers (with font, size, color, position) and image asset layers.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -397,7 +408,7 @@ "Setup": null }, { - "Order": 37, + "Order": 38, "Title": "Generate an editable design with Ideogram 4.0 HTML", "Slug": "post-generate-design-v4", "Description": "Experimental prototype endpoint for generating an editable V4 HTML design from a prompt.\n\nOptionally accepts inspiration reference images to guide transferable visual style. Inspiration images are design/style references only and are not edit targets.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -408,7 +419,7 @@ "Setup": null }, { - "Order": 38, + "Order": 39, "Title": "Generate an editable V4 HTML design asynchronously via webhook", "Slug": "post-generate-design-v4-async", "Description": "Accepts an Ideogram 4.0 HTML design request for asynchronous processing and\nreturns immediately with a request_id. The generated design is POSTed to the\nsupplied \u0060webhook_url\u0060 once ready.", @@ -419,7 +430,7 @@ "Setup": null }, { - "Order": 39, + "Order": 40, "Title": "Generate (legacy)", "Slug": "post-generate-image", "Description": "Generates images synchronously based on a given prompt and optional parameters.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -430,7 +441,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 40, + "Order": 41, "Title": "Generate with ERNIE-Image-Turbo", "Slug": "post-generate-image-ernie", "Description": "Generates images synchronously using the ERNIE-Image-Turbo model. Width\nand height must each be a positive multiple of 16 and the total area\nmust not exceed 1,075,200 pixels (896\u00D71200); the server validates these\nagainst the model\u0027s resolution constraints.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -441,7 +452,7 @@ "Setup": null }, { - "Order": 41, + "Order": 42, "Title": "Generate with ERNIE-Image-Turbo asynchronously via webhook", "Slug": "post-generate-image-ernie-async", "Description": "Accepts an ERNIE-Image-Turbo generation request for asynchronous\nprocessing and returns immediately with a generation_id. The generated\nimages are POSTed to the supplied \u0060webhook_url\u0060 once ready, in a payload\nthat mirrors the synchronous response with an added generation_id for\ncorrelation.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -452,7 +463,7 @@ "Setup": null }, { - "Order": 42, + "Order": 43, "Title": "Generate with FLUX.2-Klein", "Slug": "post-generate-image-flux2-klein", "Description": "Generates images synchronously using the FLUX.2-Klein model. Width and\nheight must each be a positive multiple of 16 and the total area must\nnot exceed 1,048,576 pixels (1024\u00D71024); the server validates these\nagainst the model\u0027s resolution constraints.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -463,7 +474,7 @@ "Setup": null }, { - "Order": 43, + "Order": 44, "Title": "Generate with FLUX.2-Klein asynchronously via webhook", "Slug": "post-generate-image-flux2-klein-async", "Description": "Accepts a FLUX.2-Klein generation request for asynchronous processing and\nreturns immediately with a generation_id. The generated images are POSTed to\nthe supplied \u0060webhook_url\u0060 once ready, in a payload that mirrors the\nsynchronous response with an added generation_id for correlation.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -474,7 +485,7 @@ "Setup": null }, { - "Order": 44, + "Order": 45, "Title": "Generate with FLUX.2-Klein (undistilled base)", "Slug": "post-generate-image-flux2-klein-base", "Description": "Generates images synchronously using the UNDISTILLED FLUX.2-Klein base \u2014 the 50-step quality tier (vs the distilled /v1/flux-2-klein fast tier). Width and\nheight must each be a positive multiple of 16 and the total area must\nnot exceed 1,048,576 pixels (1024\u00D71024); the server validates these\nagainst the model\u0027s resolution constraints.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -485,7 +496,7 @@ "Setup": null }, { - "Order": 45, + "Order": 46, "Title": "Generate with FLUX.2-Klein (undistilled base) asynchronously via webhook", "Slug": "post-generate-image-flux2-klein-base-async", "Description": "Accepts an undistilled-base FLUX.2-Klein generation request for asynchronous processing and\nreturns immediately with a generation_id. The generated images are POSTed to\nthe supplied \u0060webhook_url\u0060 once ready, in a payload that mirrors the\nsynchronous response with an added generation_id for correlation.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -496,7 +507,7 @@ "Setup": null }, { - "Order": 46, + "Order": 47, "Title": "Generate with the distilled few-step Ideogram model (high speed tier)", "Slug": "post-generate-image-p-image-high", "Description": "Generates images synchronously using the distilled few-step Ideogram\nmodel at the high speed tier \u2014 the highest quality, at the highest cost.\nThe speed tier controls the number of diffusion steps and the per-image\nprice.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -507,7 +518,7 @@ "Setup": null }, { - "Order": 47, + "Order": 48, "Title": "Generate with P-Image Ideogram", "Slug": "post-generate-image-p-image-ideogram", "Description": "Generates images synchronously using P-Image Ideogram. \u0060quality\u0060 selects\nthe generation quality level and \u0060resolution\u0060 selects the output-size\ntier. Both parameters have defaults.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download them.", @@ -518,7 +529,7 @@ "Setup": null }, { - "Order": 48, + "Order": 49, "Title": "Generate with P-Image Ideogram asynchronously", "Slug": "post-generate-image-p-image-ideogram-async", "Description": "Accepts a P-Image Ideogram generation request for asynchronous processing\nand returns immediately with a generation_id. Poll\n\u0060GET /v1/generations/{generation_id}\u0060 to retrieve the result. If a\n\u0060webhook_url\u0060 is supplied, the generated images are additionally POSTed\nto it once ready, in a payload that mirrors the synchronous response with\nan added generation_id for correlation.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -529,7 +540,7 @@ "Setup": null }, { - "Order": 49, + "Order": 50, "Title": "Generate with the distilled few-step Ideogram model (low speed tier)", "Slug": "post-generate-image-p-image-low", "Description": "Generates images synchronously using the distilled few-step Ideogram\nmodel at the low speed tier \u2014 fast and low-cost, with a modest quality\ntrade-off. The speed tier controls the number of diffusion steps and the\nper-image price.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -540,7 +551,7 @@ "Setup": null }, { - "Order": 50, + "Order": 51, "Title": "Generate with the distilled few-step Ideogram model (medium speed tier)", "Slug": "post-generate-image-p-image-medium", "Description": "Generates images synchronously using the distilled few-step Ideogram\nmodel at the medium speed tier \u2014 the balanced default of speed, cost, and\nquality. The speed tier controls the number of diffusion steps and the\nper-image price.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -551,7 +562,7 @@ "Setup": null }, { - "Order": 51, + "Order": 52, "Title": "Generate with the distilled few-step Ideogram model (very-low speed tier)", "Slug": "post-generate-image-p-image-very-low", "Description": "Generates images synchronously using the distilled few-step Ideogram\nmodel at the very-low speed tier \u2014 the fastest and lowest-cost option.\nThe speed tier controls the number of diffusion steps and the per-image\nprice.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -562,7 +573,7 @@ "Setup": null }, { - "Order": 52, + "Order": 53, "Title": "Generate with Ideogram 3.0", "Slug": "post-generate-image-v3", "Description": "Generates images synchronously based on a given prompt and optional parameters using the Ideogram 3.0 model.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -573,7 +584,7 @@ "Setup": null }, { - "Order": 53, + "Order": 54, "Title": "Generate with Ideogram 3.0 (Transparent Background)", "Slug": "post-generate-image-v3-transparent", "Description": "Generates images with transparent background synchronously based on a given prompt and optional parameters using\nthe Ideogram 3.0 model. Images will be generated using maximum supported resolution at the specified aspect ratio\nto allow best results with upscaler. The selected resolution is written to the response, not the upscaled final\nresolution.\n\n\u0060rendering_speed=FLASH\u0060 is not supported for transparent-background generation; the request will return a 400.\nUse \u0060TURBO\u0060, \u0060DEFAULT\u0060, or \u0060QUALITY\u0060 instead.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -584,7 +595,7 @@ "Setup": null }, { - "Order": 54, + "Order": 55, "Title": "Generate with Ideogram 4.0", "Slug": "post-generate-image-v4", "Description": "Generates images synchronously using the Ideogram 4.0 model.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -595,7 +606,7 @@ "Setup": null }, { - "Order": 55, + "Order": 56, "Title": "Generate with Ideogram 4.5", "Slug": "post-generate-image-v45", "Description": "Generates images synchronously using the Ideogram 4.5 multimodal model.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -606,7 +617,7 @@ "Setup": null }, { - "Order": 56, + "Order": 57, "Title": "Generate with Ideogram 4.5 asynchronously via webhook", "Slug": "post-generate-image-v45-async", "Description": "Accepts an Ideogram 4.5 generation request for asynchronous processing and\nreturns immediately with a generation_id. The generated images are POSTed to\nthe supplied \u0060webhook_url\u0060 once ready, in a payload that mirrors the\nsynchronous response with an added generation_id for correlation.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -617,7 +628,7 @@ "Setup": null }, { - "Order": 57, + "Order": 58, "Title": "Generate with Ideogram 4.0 asynchronously", "Slug": "post-generate-image-v4-async", "Description": "Accepts an Ideogram 4.0 generation request for asynchronous processing and\nreturns immediately with a generation_id. Poll \u0060GET /v1/generations/{generation_id}\u0060\nto retrieve the result. If a \u0060webhook_url\u0060 is supplied, the generated images are\nadditionally POSTed to it once ready, in a payload that mirrors the synchronous\nresponse with an added generation_id for correlation.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -628,7 +639,7 @@ "Setup": null }, { - "Order": 58, + "Order": 59, "Title": "Generate with the CFG-distilled Ideogram 4.0 model", "Slug": "post-generate-image-v4-cfg-distilled", "Description": "Generates images synchronously using the CFG/guidance-distilled Ideogram\n4.0 model, served guidance-free.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -639,7 +650,7 @@ "Setup": null }, { - "Order": 59, + "Order": 60, "Title": "Generate with the CFG-distilled Ideogram 4.0 model asynchronously via webhook", "Slug": "post-generate-image-v4-cfg-distilled-async", "Description": "Accepts a CFG-distilled Ideogram 4.0 generation request for asynchronous\nprocessing and returns immediately with a generation_id. The generated\nimages are POSTed to the supplied \u0060webhook_url\u0060 once ready, in a payload\nthat mirrors the synchronous response with an added generation_id for\ncorrelation.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -650,7 +661,7 @@ "Setup": null }, { - "Order": 60, + "Order": 61, "Title": "Generate with the fp8-quantized Ideogram 4.0 model", "Slug": "post-generate-image-v4-fp8", "Description": "Generates images synchronously using the fp8-quantized Ideogram 4.0 model.\nA LoRA checkpoint can be layered on the base via the\n\u0060X-Ideogram-Positive-Lora-Ckpt-Path\u0060 header.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -661,7 +672,7 @@ "Setup": null }, { - "Order": 61, + "Order": 62, "Title": "Image-to-image with Ideogram 4.0", "Slug": "post-generate-image-v4-im2-im", "Description": "Generates images synchronously using the Ideogram 4.0 model with an initial image as input.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -672,7 +683,7 @@ "Setup": null }, { - "Order": 62, + "Order": 63, "Title": "Image-to-image with Ideogram 4.0 asynchronously via webhook", "Slug": "post-generate-image-v4-im2-im-async", "Description": "Accepts an Ideogram 4.0 image-to-image request for asynchronous processing\nand returns immediately with a request_id. The generated images are POSTed\nto the supplied \u0060webhook_url\u0060 once ready.", @@ -683,7 +694,7 @@ "Setup": null }, { - "Order": 63, + "Order": 64, "Title": "Generate with Ideogram 4.0 (stable model)", "Slug": "post-generate-image-v4-stable", "Description": "Generates images synchronously using a pinned stable build of the\nIdeogram 4.0 model. This endpoint is intentionally minimal: it accepts\nonly a prompt (and optional seed), pins the underlying model URI, and\nlets the server pick the output resolution automatically.\n\nImages links are available for a limited period of time; if you would\nlike to keep the image, you must download it.", @@ -694,7 +705,7 @@ "Setup": null }, { - "Order": 64, + "Order": 65, "Title": "Generate with Ideogram 4.0 (Transparent Background)", "Slug": "post-generate-image-v4-transparent", "Description": "Generates images with a transparent background synchronously using the\nIdeogram 4.0 model. The result is delivered as a PNG with an alpha\nchannel.\n\nAll Ideogram 4.0 aspect ratios are supported, including \u0060AUTO\u0060, which\nlets the model select the most suitable ratio from the prompt.\n\n\u0060output_resolution\u0060 selects the delivered resolution tier. Tiers are\ntotal-pixel budgets: wide and tall aspect ratios keep the same pixel\nbudget as the square of the named size, so a single dimension may\nexceed it. The response reports the final delivered resolution.\n\nImage links are available for a limited period of time; if you would\nlike to keep the image, you must download it.", @@ -705,7 +716,7 @@ "Setup": null }, { - "Order": 65, + "Order": 66, "Title": "Generate with Ideogram 4.0 (Transparent Background) asynchronously", "Slug": "post-generate-image-v4-transparent-async", "Description": "Accepts an Ideogram 4.0 transparent-background generation request for\nasynchronous processing and returns immediately with a generation_id.\nPoll \u0060GET /v1/generations/{generation_id}\u0060 to retrieve the result. If a\n\u0060webhook_url\u0060 is supplied, the generated images are additionally POSTed\nto it once ready, in a payload that mirrors the synchronous response\nwith an added generation_id for correlation.\n\nSee the synchronous \u0060/v1/ideogram-v4/generate-transparent\u0060 endpoint for\nthe request semantics, including \u0060output_resolution\u0060 tiers.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -716,7 +727,7 @@ "Setup": null }, { - "Order": 66, + "Order": 67, "Title": "Generate with Z-Image", "Slug": "post-generate-image-z-image", "Description": "Generates images synchronously using the Z-Image model. Width and height\nmust each be a positive multiple of 16 and the total area must not exceed\n1,048,576 pixels (1024\u00D71024); the server validates these against the\nmodel\u0027s resolution constraints.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -727,7 +738,7 @@ "Setup": null }, { - "Order": 67, + "Order": 68, "Title": "Generate with Z-Image asynchronously via webhook", "Slug": "post-generate-image-z-image-async", "Description": "Accepts a Z-Image generation request for asynchronous processing and\nreturns immediately with a generation_id. The generated images are POSTed to\nthe supplied \u0060webhook_url\u0060 once ready, in a payload that mirrors the\nsynchronous response with an added generation_id for correlation.\n\nSee [Webhooks](/ideogram-api/webhooks) for the delivery payload and how to verify webhook signatures.", @@ -738,7 +749,7 @@ "Setup": null }, { - "Order": 68, + "Order": 69, "Title": "Inpaint with Ideogram 3.0", "Slug": "post-inpaint-image-v3", "Description": "Inpaint a given image synchronously using the provided mask with Ideogram 3.0. The mask indicates which part of the image\nshould be edited, while the prompt and chosen style can further guide the edit.\n\nSupported image formats include JPEG, PNG, and WebP.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -749,7 +760,7 @@ "Setup": null }, { - "Order": 69, + "Order": 70, "Title": "Layerize an existing flat graphic image with text detection and correction", "Slug": "post-layerize-design-v3", "Description": "Processes an existing flat graphic image to detect and correct text layers without generating a new image from scratch.\n\nThe uploaded image is analyzed for text content, which is then removed and returned as structured text layers with font matching, sizing, and color information.\n\nSupported image formats include JPEG, PNG, and WebP (max size 25MB).\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -760,7 +771,7 @@ "Setup": null }, { - "Order": 70, + "Order": 71, "Title": "Detect and remove reference logos from an image", "Slug": "post-layerize-logos", "Description": "Detects caller-supplied reference logos in a flat design image, inpaints\nthem out, and returns the cleaned image together with the matched\nbounding boxes (each tagged with the matching reference\u0027s \u0060REF_\u003Cn\u003E\u0060).", @@ -771,7 +782,7 @@ "Setup": null }, { - "Order": 71, + "Order": 72, "Title": "Layerize Text", "Slug": "post-layerize-text-v3", "Description": "Analyzes an image to detect text regions, then returns each detected text block with its position, content, font information, and styling.\n\nThe response includes a text-erased base image (background with all text removed) and a flat list of detected text blocks.\n\nSupported image formats include JPEG, PNG, and WebP (max size 25MB).\n\nImage links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -782,7 +793,7 @@ "Setup": null }, { - "Order": 72, + "Order": 73, "Title": "Reframe (legacy)", "Slug": "post-reframe-image", "Description": "Reframe a square image to a chosen resolution. The supported image formats include JPEG, PNG, and WebP.\n\nImage links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -793,7 +804,7 @@ "Setup": null }, { - "Order": 73, + "Order": 74, "Title": "Reframe with Ideogram 3.0", "Slug": "post-reframe-image-v3", "Description": "Reframe a square image to a chosen resolution with Ideogram 3.0. The supported image formats include JPEG, PNG, and WebP.\n\nImage links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -804,7 +815,7 @@ "Setup": null }, { - "Order": 74, + "Order": 75, "Title": "Remix (legacy)", "Slug": "post-remix-image", "Description": "Remix provided images synchronously based on a given prompt and optional parameters.\n\nInput images are cropped to the chosen aspect ratio before being remixed.\n\nSupported image formats include JPEG, PNG, and WebP.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -815,7 +826,7 @@ "Setup": null }, { - "Order": 75, + "Order": 76, "Title": "Remix with Ideogram 3.0", "Slug": "post-remix-image-v3", "Description": "Remix provided images synchronously based on a given prompt and optional parameters with the Ideogram 3.0 model.\n\nInput images are cropped to the chosen aspect ratio before being remixed.\n\nSupported image formats include JPEG, PNG, and WebP.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -826,7 +837,7 @@ "Setup": null }, { - "Order": 76, + "Order": 77, "Title": "Remix with Ideogram 4.0", "Slug": "post-remix-image-v4", "Description": "Remix an image synchronously using the Ideogram 4.0 model with an initial image and a prompt.\n\nMirrors \u0060/v1/ideogram-v3/remix\u0060 semantics (including \u0060image_weight\u0060 for how strongly the\noutput should resemble the input image) but routes the request through the V_4_0 model.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -837,7 +848,7 @@ "Setup": null }, { - "Order": 77, + "Order": 78, "Title": "Remix with Ideogram 4.0 asynchronously", "Slug": "post-remix-image-v4-async", "Description": "Accepts an Ideogram 4.0 remix request for asynchronous processing and returns\nimmediately with a \u0060generation_id\u0060. Poll \u0060GET /v1/generations/{generation_id}\u0060\nto retrieve the result. If a \u0060webhook_url\u0060 is supplied, the generated images\nare additionally POSTed to it once ready.", @@ -848,7 +859,7 @@ "Setup": null }, { - "Order": 78, + "Order": 79, "Title": "Remove Background", "Slug": "post-remove-background", "Description": "Remove the background of a given image synchronously. The foreground subject\nis identified and returned on a transparent background. Supported image formats include JPEG,\nPNG, and WebP.\nImage links are available for a limited period of time; if you would like to keep the image,\nyou must download it.", @@ -859,7 +870,7 @@ "Setup": null }, { - "Order": 79, + "Order": 80, "Title": "Remove Object", "Slug": "post-remove-object", "Description": "Remove a masked object from a given image synchronously. Supply the image and a binary mask marking the region to remove (white = remove); the masked region is regenerated to blend with the surrounding scene. Supported image formats include JPEG, PNG, and WebP. Image links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -870,7 +881,7 @@ "Setup": null }, { - "Order": 80, + "Order": 81, "Title": "Replace Background with Ideogram 3.0", "Slug": "post-replace-background-v3", "Description": "Replace the background of a given image synchronously using a prompt with Ideogram 3.0. The foreground subject\nwill be identified and kept, while the background is replaced based on the prompt and chosen style.\nSupported image formats include JPEG, PNG, and WebP.\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -881,7 +892,7 @@ "Setup": null }, { - "Order": 81, + "Order": 82, "Title": "Advertisement Resizer", "Slug": "post-resize-image-async", "Description": "Resizes an advertisement image to the exact target size. Supply \u0060prompt\u0060\nto provide specific instructions for how the advertisement should look\nafter resizing.\n\nThe request is processed asynchronously and immediately returns a\n\u0060generation_id\u0060. Poll \u0060GET /v1/generations/{generation_id}\u0060 until \u0060status\u0060\nis \u0060completed\u0060 or \u0060failed\u0060. The completed polling response contains the\nfinal resized image(s) in \u0060data\u0060 and the amount charged for variable\nusage-based pricing in \u0060usage_cost_usd_micros\u0060. If a \u0060webhook_url\u0060 is\nsupplied, the completed result is also POSTed to that URL.\n\nSupply the advertisement image as raw \u0060image\u0060 bytes via\n\u0060multipart/form-data\u0060.\n\nThe required \u0060resolution\u0060 (\u0060WIDTHxHEIGHT\u0060) sets the exact output\ndimensions.\n\nThe model is fixed by the route, so no \u0060model\u0060 field is accepted.", @@ -892,7 +903,7 @@ "Setup": null }, { - "Order": 82, + "Order": 83, "Title": "Virtual Try-On with Ideogram 3.0", "Slug": "post-try-on-v3", "Description": "Performs virtual clothing try-on by automatically segmenting the clothing in the provided image\nand replacing it based on the prompt. The user provides an image and an optional prompt describing\nthe desired clothing change (e.g., \u0022change his shirt to a pink shirt\u0022).\n\nSupported image formats include JPEG, PNG, and WebP.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -903,7 +914,7 @@ "Setup": null }, { - "Order": 83, + "Order": 84, "Title": "Upscale", "Slug": "post-upscale-image", "Description": "Upscale provided images synchronously with an optional prompt.\n\nSupported image formats include JPEG, PNG, and WebP.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -914,7 +925,7 @@ "Setup": null }, { - "Order": 84, + "Order": 85, "Title": "Edit images with a prompt", "Slug": "post-v1-edit-image", "Description": "Edit one or more images using a text prompt. Provide images via file upload\nor Ideogram image URLs, and describe the desired edit in your prompt.\n\nSupported image formats include JPEG, PNG, and WebP.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -925,7 +936,7 @@ "Setup": null }, { - "Order": 85, + "Order": 86, "Title": "Edit an image with a prompt at lower cost and latency", "Slug": "post-v1-edit-lite-image", "Description": "Edit an image using a text prompt, optimized for lower cost and\nlatency. Upload the image being edited via the \u0060image\u0060 field. Up to 9\nadditional \u0060reference_images\u0060 may be supplied to guide the edit.\n\nOutput is always generated at 1K resolution. Input images larger than\n1024px on their long edge are downscaled before processing. The\n\u0060aspect_ratio\u0060 field controls the output aspect ratio only; when\nomitted, the output follows the aspect ratio of the image being\nedited.\n\nSupported image formats include JPEG, PNG, and WebP.\n\nImages links are available for a limited period of time; if you would like to keep the image, you must download it.", @@ -936,7 +947,7 @@ "Setup": null }, { - "Order": 86, + "Order": 87, "Title": "Poll a generation", "Slug": "get-generation-v2", "Description": "Retrieves the current status of an asynchronous generation, and its\nresults once complete. Use the \u0060generation_id\u0060 returned by any \u0060/v2\u0060\nendpoint that runs asynchronously: every video and tool endpoint, and\nany image endpoint called with \u0060async\u0060 or a \u0060webhook_url\u0060.\n\nWhile the generation is \u0060pending\u0060 or has \u0060failed\u0060, the response\ncontains only \u0060generation_id\u0060, \u0060status\u0060, and \u0060created\u0060 (plus\n\u0060failure_reason\u0060 once failed). Once \u0060status\u0060 is \u0060completed\u0060, the\nresponse includes \u0060response_type\u0060 and \u0060data\u0060. Each \u0060data\u0060 item carries\nan \u0060object_type\u0060 that identifies its shape, so image and video results\ncan be told apart. \u0060usage_cost_usd_micros\u0060 reports the amount billed\nwhen the request uses variable usage-based pricing.\n\nPolling is rate limited per organization; a 429 response carries a\n\u0060Retry-After\u0060 header with the number of seconds to wait.", @@ -947,7 +958,7 @@ "Setup": null }, { - "Order": 87, + "Order": 88, "Title": "Describe with Ideogram 3.0", "Slug": "post-describe-image-ideogram-v3", "Description": "Generate a natural-language description of an image with Ideogram\u0027s 3.0\nimage captioner (a fine-tune of the Qwen2-VL vision-language model).\nUpload the image as \u0060image\u0060 using \u0060multipart/form-data\u0060; the description\nis returned directly.", @@ -958,7 +969,7 @@ "Setup": null }, { - "Order": 88, + "Order": 89, "Title": "Describe with Ideogram 4.0", "Slug": "post-describe-image-ideogram-v4", "Description": "Describe an image as a structured \u0060V4JsonPrompt\u0060 with Ideogram\u0027s 4.0\nimage captioner (a fine-tune of the Qwen3-VL vision-language model).\nUpload the image as \u0060image\u0060 using \u0060multipart/form-data\u0060; the\n\u0060json_prompt\u0060 is returned directly and can be passed to the\n\u0060/v1/ideogram-v4/generate\u0060 endpoints.", @@ -969,7 +980,7 @@ "Setup": null }, { - "Order": 89, + "Order": 90, "Title": "Generate with GPT Image 2", "Slug": "post-generate-image-v2-gpt-image2", "Description": "Generate images with GPT Image 2. Optionally upload source images as\n\u0060images\u0060 using \u0060multipart/form-data\u0060 to edit them with the prompt.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -980,7 +991,7 @@ "Setup": null }, { - "Order": 90, + "Order": 91, "Title": "Generate with GPT Image 2.5 Flare", "Slug": "post-generate-image-v2-gpt-image25-flare", "Description": "Generate images with GPT Image 2.5 Flare, the fast variant of GPT Image\n2.5. Optionally upload source images as \u0060images\u0060 using\n\u0060multipart/form-data\u0060 to edit them with the prompt. Returns results\ndirectly by default; set \u0060async\u0060 or supply a \u0060webhook_url\u0060 to get a\n\u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -991,7 +1002,7 @@ "Setup": null }, { - "Order": 91, + "Order": 92, "Title": "Generate with GPT Image 2.5 Sunburst", "Slug": "post-generate-image-v2-gpt-image25-sunburst", "Description": "Generate images with GPT Image 2.5 Sunburst, the quality variant of GPT\nImage 2.5, with finer detail at higher latency than Flare. Optionally\nupload source images as \u0060images\u0060 using \u0060multipart/form-data\u0060 to edit\nthem with the prompt. Returns results directly by default; set \u0060async\u0060\nor supply a \u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1002,7 +1013,7 @@ "Setup": null }, { - "Order": 92, + "Order": 93, "Title": "Generate with Ideogram 4.5", "Slug": "post-generate-image-v2-ideogram45", "Description": "Generate images with Ideogram 4.5 from a natural-language or structured\nJSON prompt. Optionally upload source images as \u0060images\u0060 using\n\u0060multipart/form-data\u0060 to edit them with the prompt. Returns results\ndirectly by default; set \u0060async\u0060 or supply a \u0060webhook_url\u0060 to get a\n\u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -1013,7 +1024,7 @@ "Setup": null }, { - "Order": 93, + "Order": 94, "Title": "Generate with Ideogram 2.0", "Slug": "post-generate-image-v2-ideogram-v2", "Description": "Generate images from a text prompt with Ideogram 2.0. Returns results\ndirectly by default; set \u0060async\u0060 or supply a \u0060webhook_url\u0060 to get a\n\u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -1024,7 +1035,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 94, + "Order": 95, "Title": "Generate with Ideogram 2a", "Slug": "post-generate-image-v2-ideogram-v2-a", "Description": "Generate images from a text prompt with Ideogram 2a, a fast, lower-cost\nmodel. Returns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1035,7 +1046,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 95, + "Order": 96, "Title": "Generate with Ideogram 3.0", "Slug": "post-generate-image-v2-ideogram-v3", "Description": "Generate images from a text prompt with Ideogram 3.0. Optional style\ncontrols include style codes, a style preset, a color palette, and style\nreferences (uploaded \u0060style_reference_images\u0060). Returns\nresults directly by default; set \u0060async\u0060 or supply a \u0060webhook_url\u0060 to\nget a \u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -1046,7 +1057,7 @@ "Setup": null }, { - "Order": 96, + "Order": 97, "Title": "Generate a consistent character with Ideogram 3.0", "Slug": "post-generate-image-v2-ideogram-v3-character", "Description": "Generate images featuring a consistent character with Ideogram 3.0.\nUpload the character as \u0060character_reference_images\u0060 using\n\u0060multipart/form-data\u0060. Returns\nresults directly by default; set \u0060async\u0060 or supply a \u0060webhook_url\u0060 to\nget a \u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -1057,7 +1068,7 @@ "Setup": null }, { - "Order": 97, + "Order": 98, "Title": "Generate with a custom Ideogram 3.0 model", "Slug": "post-generate-image-v2-ideogram-v3-custom-model", "Description": "Generate images with a custom Ideogram 3.0 model that you or your\norganization can access, selected by \u0060custom_model_uri\u0060. Returns results\ndirectly by default; set \u0060async\u0060 or supply a \u0060webhook_url\u0060 to get a\n\u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -1068,7 +1079,7 @@ "Setup": null }, { - "Order": 98, + "Order": 99, "Title": "Generate transparent images with Ideogram 3.0", "Slug": "post-generate-image-v2-ideogram-v3-transparent", "Description": "Generate images on a transparent background with Ideogram 3.0, delivered\nas PNGs with alpha. Returns results directly by default; set \u0060async\u0060 or\nsupply a \u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1079,7 +1090,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 99, + "Order": 100, "Title": "Generate with Ideogram 4.0", "Slug": "post-generate-image-v2-ideogram-v4", "Description": "Generate images with Ideogram 4.0 from a natural-language or structured\nJSON prompt. Returns results directly by default; set \u0060async\u0060 or supply\na \u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1090,7 +1101,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 100, + "Order": 101, "Title": "Generate with a custom Ideogram 4.0 model", "Slug": "post-generate-image-v2-ideogram-v4-custom-model", "Description": "Generate images with a custom Ideogram 4.0 model that you or your\norganization can access, selected by \u0060custom_model_uri\u0060. Returns results\ndirectly by default; set \u0060async\u0060 or supply a \u0060webhook_url\u0060 to get a\n\u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -1101,7 +1112,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 101, + "Order": 102, "Title": "Generate transparent images with Ideogram 4.0", "Slug": "post-generate-image-v2-ideogram-v4-transparent", "Description": "Generate images on a transparent background with Ideogram 4.0, delivered\nas PNGs with alpha. Returns results directly by default; set \u0060async\u0060 or\nsupply a \u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1112,7 +1123,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 102, + "Order": 103, "Title": "Generate with Nano Banana 2", "Slug": "post-generate-image-v2-nano-banana2", "Description": "Generate images with Nano Banana 2. Optionally upload source images as\n\u0060images\u0060 using \u0060multipart/form-data\u0060 to edit them with the prompt.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1123,7 +1134,7 @@ "Setup": null }, { - "Order": 103, + "Order": 104, "Title": "Generate with Nano Banana Pro", "Slug": "post-generate-image-v2-nano-banana-pro", "Description": "Generate images with Nano Banana Pro. Optionally upload source images as\n\u0060images\u0060 using \u0060multipart/form-data\u0060 to edit them with the prompt.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1134,7 +1145,7 @@ "Setup": null }, { - "Order": 104, + "Order": 105, "Title": "Generate with P-Image Ideogram", "Slug": "post-generate-image-v2-p-image-ideogram", "Description": "Generate images with P-Image Ideogram, a fast model with selectable\nquality and resolution tiers. Returns results directly by default; set\n\u0060async\u0060 or supply a \u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1145,7 +1156,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 105, + "Order": 106, "Title": "Generate with Z-Image", "Slug": "post-generate-image-v2-z-image", "Description": "Generate images from a text prompt with Z-Image. Returns results\ndirectly by default; set \u0060async\u0060 or supply a \u0060webhook_url\u0060 to get a\n\u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -1156,7 +1167,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 106, + "Order": 107, "Title": "Inpaint with Ideogram 3.0", "Slug": "post-inpaint-image-v2-ideogram-v3", "Description": "Repaint the masked region of a source image with Ideogram 3.0, guided\nby a text prompt. Upload the source \u0060image\u0060 and its \u0060mask\u0060 using\n\u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1167,7 +1178,7 @@ "Setup": null }, { - "Order": 107, + "Order": 108, "Title": "Inpaint a consistent character with Ideogram 3.0", "Slug": "post-inpaint-image-v2-ideogram-v3-character", "Description": "Repaint the masked region of a source image with Ideogram 3.0 so it\nfeatures a consistent character. Upload the source \u0060image\u0060, its\n\u0060mask\u0060, and a \u0060character_reference_images\u0060 image (or use a saved\ncharacter) using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1178,7 +1189,7 @@ "Setup": null }, { - "Order": 108, + "Order": 109, "Title": "Inpaint with a custom Ideogram 3.0 model", "Slug": "post-inpaint-image-v2-ideogram-v3-custom-model", "Description": "Repaint the masked region of a source image with a custom Ideogram 3.0\nmodel, passed as \u0060custom_model_uri\u0060. Upload the source \u0060image\u0060 and its\n\u0060mask\u0060 using \u0060multipart/form-data\u0060. Returns results directly by\ndefault; set \u0060async\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1189,10 +1200,10 @@ "Setup": null }, { - "Order": 109, + "Order": 110, "Title": "Precise edit with Ideogram 4.5", "Slug": "post-precise-edit-image-v2-ideogram45", - "Description": "Edit an image with Ideogram 4.5 and get the result back at that image\u0027s\nexact width and height. Upload the image as \u0060image\u0060 using\n\u0060multipart/form-data\u0060, with optional \u0060reference_images\u0060 and a \u0060mask\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.\n\n\u0060context_window\u0060 narrows the edit to one region of the image, so a\nlarge image keeps its detail: pass \u0060x,y,width,height\u0060, or \u0060auto\u0060\ntogether with a \u0060mask\u0060. The result always keeps the image\u0027s own width\nand height.", + "Description": "Edit an image with Ideogram 4.5 and get the result back at that image\u0027s\nexact width and height. Upload the image as \u0060image\u0060 using\n\u0060multipart/form-data\u0060, with optional \u0060reference_images\u0060 and a \u0060mask\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.\n\n\u0060context_window\u0060 confines the edit to one region of the image, so a\nlarge image keeps its detail: pass \u0060y_min,x_min,y_max,x_max\u0060, or \u0060auto\u0060\ntogether with a \u0060mask\u0060. The result always keeps the image\u0027s own width\nand height.", "Language": "http", "Code": "### Precise edit with Ideogram 4.5\n# @name post_precise_edit_image_v2_ideogram45\nPOST {{host}}/v2/image/precise-edit/ideogram-4-5?dry_run=false\nAuthorization: Bearer {{token}}\nContent-Type: multipart/form-data; boundary=AutoSDKBoundary\nAccept: application/json\n\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022prompt\u0022\n\nstring\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022image_asset_identifier\u0022\n\nstring\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022image\u0022; filename=\u0022image.bin\u0022\nContent-Type: application/octet-stream\n\n\u003C ./image.bin\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022reference_image_asset_identifiers\u0022\n\n{\u0022asset_type\u0022:\u0022RESPONSE\u0022,\u0022asset_id\u0022:\u00227uS_VESkRI6O3-sVgHQp_A\u0022}\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022reference_images\u0022; filename=\u0022reference_images.bin\u0022\nContent-Type: application/octet-stream\n\n\u003C ./reference_images.bin\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022mask\u0022; filename=\u0022mask.bin\u0022\nContent-Type: application/octet-stream\n\n\u003C ./mask.bin\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022context_window\u0022\n\nnone\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022quality\u0022\n\nmedium\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022seed\u0022\n\n12345\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022num_images\u0022\n\n1\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022enable_copyright_detection\u0022\n\ntrue\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022async\u0022\n\nfalse\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022webhook_url\u0022\n\nhttps://api.example.com/webhooks/ideogram\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022private\u0022\n\ntrue\n--AutoSDKBoundary\nContent-Disposition: form-data; name=\u0022target_collection_id\u0022\n\nstring\n--AutoSDKBoundary--\n\n## Responses\n# 200\n# Description: The edited images (synchronous requests), or an acknowledgement to poll with \u0060GET /v2/generations/{generation_id}\u0060 (\u0060async\u0060 requests).\n# Content-Type: application/json\n# 400\n# Description: Invalid input provided.\n# 401\n# Description: Unauthorized.\n# 402\n# Description: Insufficient credits or quota.\n# Content-Type: application/json\n# 422\n# Description: The prompt did not pass safety checks.\n# 429\n# Description: Too many requests.\n# Content-Type: application/json\n# 500\n# Description: Internal server error.\n# 503\n# Description: The endpoint is temporarily unavailable.", "Format": "http", @@ -1200,7 +1211,7 @@ "Setup": null }, { - "Order": 110, + "Order": 111, "Title": "Reframe an image, letting Ideogram pick the model", "Slug": "post-reframe-image-auto", "Description": "Reframe one image to a new aspect ratio without choosing a model.\nIdeogram selects the model best suited to the source and may route\ndifferent requests to different models; the request is billed at the\nchosen model\u0027s price. Supply either an existing Ideogram image asset\nor raw image bytes, but not both.\n\nThis operation is asynchronous. It returns as soon as the request is\naccepted; poll \u0060GET /v2/generations/{generation_id}\u0060 for completion\nand results.", @@ -1211,7 +1222,7 @@ "Setup": null }, { - "Order": 111, + "Order": 112, "Title": "Reframe an image with Bria Expand", "Slug": "post-reframe-image-bria-expand", "Description": "Extend one image to a new aspect ratio with Bria Expand. The source\npixels are kept exactly as they are, centered on the new canvas, and\nthe model paints only the added area. Supply either an existing\nIdeogram image asset or raw image bytes, but not both. The canvas is\nsized from the source so that the whole source fits.\n\nThis operation is asynchronous. It returns as soon as the request is\naccepted; poll \u0060GET /v2/generations/{generation_id}\u0060 for completion\nand results.", @@ -1222,7 +1233,7 @@ "Setup": null }, { - "Order": 112, + "Order": 113, "Title": "Reframe an image with GPT Image 2.5 Flare", "Slug": "post-reframe-image-gpt-image25-flare", "Description": "Recompose one image for a new aspect ratio with GPT Image 2.5 Flare.\nSupply either an existing Ideogram image asset or raw image bytes, but\nnot both. The requested aspect ratio is resolved to the closest output\nsize the model supports.\n\nThis operation is asynchronous. It returns as soon as the request is\naccepted; poll \u0060GET /v2/generations/{generation_id}\u0060 for completion\nand results.", @@ -1233,7 +1244,7 @@ "Setup": null }, { - "Order": 113, + "Order": 114, "Title": "Reframe with Ideogram 3.0", "Slug": "post-reframe-image-v2-ideogram-v3", "Description": "Expand an image to a new Ideogram 3.0 resolution, keeping the source\npixels in the center and filling the new area. Upload the source\n\u0060image\u0060 using \u0060multipart/form-data\u0060. Returns results directly by\ndefault; set \u0060async\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1244,7 +1255,7 @@ "Setup": null }, { - "Order": 114, + "Order": 115, "Title": "Reframe with Nano Banana 2", "Slug": "post-reframe-image-nano-banana2", "Description": "Expand an image to a new aspect ratio with Nano Banana 2. Upload the\nsource \u0060image\u0060 using \u0060multipart/form-data\u0060. Always asynchronous:\nreturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nfor results.", @@ -1255,7 +1266,7 @@ "Setup": null }, { - "Order": 115, + "Order": 116, "Title": "Reframe an image with Nano Banana Pro", "Slug": "post-reframe-image-nano-banana-pro", "Description": "Recompose one image for a new aspect ratio with Nano Banana Pro, at a\n1K, 2K, or 4K output tier. Supply either an existing Ideogram image\nasset or raw image bytes, but not both. The requested aspect ratio is\nresolved to the closest dimensions the model supports at that tier.\n\nThis operation is asynchronous. It returns as soon as the request is\naccepted; poll \u0060GET /v2/generations/{generation_id}\u0060 for completion\nand results.", @@ -1266,7 +1277,7 @@ "Setup": null }, { - "Order": 116, + "Order": 117, "Title": "Remix with Ideogram 3.0", "Slug": "post-remix-image-v2-ideogram-v3", "Description": "Transform an existing image with Ideogram 3.0, guided by a text\nprompt. Upload the source \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1277,7 +1288,7 @@ "Setup": null }, { - "Order": 117, + "Order": 118, "Title": "Remix a consistent character with Ideogram 3.0", "Slug": "post-remix-image-v2-ideogram-v3-character", "Description": "Transform an existing image with Ideogram 3.0 so it features a\nconsistent character, guided by a text prompt. Upload the source\n\u0060image\u0060 and a \u0060character_reference_images\u0060 image (or use a saved\ncharacter) using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1288,7 +1299,7 @@ "Setup": null }, { - "Order": 118, + "Order": 119, "Title": "Remix with a custom Ideogram 3.0 model", "Slug": "post-remix-image-v2-ideogram-v3-custom-model", "Description": "Transform an existing image with a custom Ideogram 3.0 model that your\nuser or organization can access, guided by a text prompt. Upload the\nsource \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1299,7 +1310,7 @@ "Setup": null }, { - "Order": 119, + "Order": 120, "Title": "Remix with Ideogram 4.0", "Slug": "post-remix-image-v2-ideogram-v4", "Description": "Transform an existing image with Ideogram 4.0, guided by a text\nprompt. Upload the source \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1310,7 +1321,7 @@ "Setup": null }, { - "Order": 120, + "Order": 121, "Title": "Upscale with Nano Banana Pro", "Slug": "post-upscale-image-nano-banana-pro", "Description": "Regenerate an image at a higher \u0060resolution_tier\u0060 (1K, 2K, or 4K) while\npreserving its content, composition, and style. Upload the source\n\u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1321,7 +1332,7 @@ "Setup": null }, { - "Order": 121, + "Order": 122, "Title": "Upscale with Topaz Bloom 2", "Slug": "post-upscale-image-topaz-bloom2", "Description": "Creatively upscale an image to 2x, 4x, or 8x its original resolution,\noptionally guided by a \u0060prompt\u0060. Upload the source \u0060image\u0060 using\n\u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1332,7 +1343,7 @@ "Setup": null }, { - "Order": 122, + "Order": 123, "Title": "Upscale with Topaz Redefine", "Slug": "post-upscale-image-topaz-redefine", "Description": "Creatively upscale an image to 2x, 4x, or 8x its original resolution,\nguided by an optional \u0060prompt\u0060 or \u0060autoprompt\u0060. Upload the source\n\u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1343,7 +1354,7 @@ "Setup": null }, { - "Order": 123, + "Order": 124, "Title": "Upscale with Topaz Standard V2", "Slug": "post-upscale-image-topaz-standard-v2", "Description": "Upscale an image to 2x, 4x, or 8x its original resolution; no prompt is\nneeded. Upload the source \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1354,7 +1365,7 @@ "Setup": null }, { - "Order": 124, + "Order": 125, "Title": "Upscale with Topaz Text Refine", "Slug": "post-upscale-image-topaz-text-refine", "Description": "Upscale an image to 2x, 4x, or 8x its original resolution; no prompt is\nneeded. Upload the source \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1365,7 +1376,7 @@ "Setup": null }, { - "Order": 125, + "Order": 126, "Title": "Upscale with Topaz Wonder 3.5", "Slug": "post-upscale-image-topaz-wonder35", "Description": "Upscale an image to 2x, 4x, or 8x its original resolution, with\n\u0060enhancement_strength\u0060 controlling how strongly detail is reconstructed.\nUpload the source \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1376,7 +1387,7 @@ "Setup": null }, { - "Order": 126, + "Order": 127, "Title": "Fetch the media bytes for an integration asset", "Slug": "get-integration-asset-delivery", "Description": "Redeems the short-lived signed delivery reference returned by an integration asset search and streams the asset\u0027s media bytes. The signed reference is the sole authorization for this endpoint; it is rejected once it expires or when the integration it names has changed.", @@ -1387,7 +1398,7 @@ "Setup": null }, { - "Order": 127, + "Order": 128, "Title": "List enabled integration types", "Slug": "get-integrations", "Description": "Lists the distinct integration types enabled for the authenticated organization. The response does not expose configured integration rows, provider details, configuration, or credentials.", @@ -1398,7 +1409,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 128, + "Order": 129, "Title": "Search assets from an enabled integration type", "Slug": "post-integration-assets-search", "Description": "Generated from OpenAPI examples.", @@ -1409,7 +1420,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 129, + "Order": 130, "Title": "Testing", "Slug": "post-internal-testing", "Description": "Just a testing endpoint", @@ -1420,7 +1431,7 @@ "Setup": null }, { - "Order": 130, + "Order": 131, "Title": "Add members to a specific organization", "Slug": "add-organization-members", "Description": "Generated from OpenAPI examples.", @@ -1431,7 +1442,7 @@ "Setup": null }, { - "Order": 131, + "Order": 132, "Title": "Cancel a pending invite for an organization", "Slug": "cancel-organization-invite", "Description": "Generated from OpenAPI examples.", @@ -1442,7 +1453,7 @@ "Setup": null }, { - "Order": 132, + "Order": 133, "Title": "Creates an API key.", "Slug": "create-api-key", "Description": "Generated from OpenAPI examples.", @@ -1453,7 +1464,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 133, + "Order": 134, "Title": "Create an API key for a specific organization", "Slug": "create-api-key-v2", "Description": "Generated from OpenAPI examples.", @@ -1464,7 +1475,7 @@ "Setup": null }, { - "Order": 134, + "Order": 135, "Title": "Create a payment setup session for inline card collection.", "Slug": "create-api-payment", "Description": "Returns a client_secret for the org\u0027s payment customer so the inline payment\nmodal can save a card without leaving the app.\n\nSoft-deprecated: the inline Elements flow was removed in the Stripe.js\neager-bundle incident (2026-05-20). New clients should use the\nstripe_payment_setup_url field on ManageApiStripeSubscriptionResponse, which\nreturns a hosted Stripe Checkout URL instead. This endpoint will be formally\ndeprecated and then removed once no callers reference it.", @@ -1475,7 +1486,7 @@ "Setup": null }, { - "Order": 135, + "Order": 136, "Title": "Delete an API key.", "Slug": "delete-single-api-key", "Description": "Generated from OpenAPI examples.", @@ -1486,7 +1497,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 136, + "Order": 137, "Title": "Demote admins back to member role in an ENTERPRISE_PREPAID or ENTERPRISE_API organization", "Slug": "demote-organization-admins", "Description": "Generated from OpenAPI examples.", @@ -1497,7 +1508,7 @@ "Setup": null }, { - "Order": 137, + "Order": 138, "Title": "Lifetime credit totals for the API user\u0027s account.", "Slug": "get-api-credit-summary", "Description": "Returns the lifetime credit KPIs (consumed, expired, issued) used to\nrender the API credit dashboard strip. All values default to $0 when\nMetronome is unavailable so the FE can always render.", @@ -1508,7 +1519,7 @@ "Setup": null }, { - "Order": 138, + "Order": 139, "Title": "Retrieve current API keys and their respective data.", "Slug": "get-api-keys", "Description": "Generated from OpenAPI examples.", @@ -1519,7 +1530,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 139, + "Order": 140, "Title": "Retrieve API keys for a specific organization", "Slug": "get-api-keys-v2", "Description": "Generated from OpenAPI examples.", @@ -1530,7 +1541,7 @@ "Setup": null }, { - "Order": 140, + "Order": 141, "Title": "Get search results for user handles with suggestions for a particular organization.", "Slug": "get-api-organization-user-suggestions", "Description": "Generated from OpenAPI examples.", @@ -1541,7 +1552,7 @@ "Setup": null }, { - "Order": 141, + "Order": 142, "Title": "Retrieve the user\u0027s current API profiles", "Slug": "get-api-profiles", "Description": "Generated from OpenAPI examples.", @@ -1552,7 +1563,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 142, + "Order": 143, "Title": "Retrieve data relevant to connecting to Stripe.", "Slug": "get-api-stripe-subscription", "Description": "Generated from OpenAPI examples.", @@ -1563,7 +1574,7 @@ "Setup": null }, { - "Order": 143, + "Order": 144, "Title": "Retrieve data relevant to creating an API subscription.", "Slug": "get-api-subscription", "Description": "Generated from OpenAPI examples.", @@ -1574,7 +1585,7 @@ "Setup": null }, { - "Order": 144, + "Order": 145, "Title": "Retrieve the latest terms of service for API usage.", "Slug": "get-api-terms", "Description": "Generated from OpenAPI examples.", @@ -1585,7 +1596,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 145, + "Order": 146, "Title": "Retrieve the Stripe billing portal URL for a specific organization", "Slug": "get-organization-billing-portal", "Description": "Generated from OpenAPI examples.", @@ -1596,7 +1607,7 @@ "Setup": null }, { - "Order": 146, + "Order": 147, "Title": "Retrieve members of a specific organization", "Slug": "get-organization-members", "Description": "Returns both active members and pending invites for the organization. A pending invite is identified by a non-null invite_status (e.g. PENDING); active members have a null invite_status.", @@ -1607,7 +1618,7 @@ "Setup": null }, { - "Order": 147, + "Order": 148, "Title": "Retrieve usage information segmented by time period with tool-specific breakdowns", "Slug": "get-usage-info", "Description": "Generated from OpenAPI examples.", @@ -1618,7 +1629,7 @@ "Setup": null }, { - "Order": 148, + "Order": 149, "Title": "Retrieve user credit information and spending metrics", "Slug": "get-user-credits", "Description": "Generated from OpenAPI examples.", @@ -1629,7 +1640,7 @@ "Setup": null }, { - "Order": 149, + "Order": 150, "Title": "Retrieve user spend commit information", "Slug": "get-user-spend-commit-info", "Description": "Generated from OpenAPI examples.", @@ -1640,7 +1651,7 @@ "Setup": null }, { - "Order": 150, + "Order": 151, "Title": "Retrieve invoices for a specific organization", "Slug": "list-organization-invoices", "Description": "Generated from OpenAPI examples.", @@ -1651,7 +1662,7 @@ "Setup": null }, { - "Order": 151, + "Order": 152, "Title": "Add credits to an API user\u0027s account.", "Slug": "post-add-credits-for-api", "Description": "Generated from OpenAPI examples.", @@ -1662,7 +1673,7 @@ "Setup": null }, { - "Order": 152, + "Order": 153, "Title": "Update API subscription settings", "Slug": "post-api-subscription", "Description": "Generated from OpenAPI examples.", @@ -1673,7 +1684,7 @@ "Setup": null }, { - "Order": 153, + "Order": 154, "Title": "Accept terms", "Slug": "post-api-terms", "Description": "Generated from OpenAPI examples.", @@ -1684,7 +1695,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 154, + "Order": 155, "Title": "Promote members to ADMIN role in an ENTERPRISE_PREPAID or ENTERPRISE_API organization", "Slug": "promote-organization-admins", "Description": "Generated from OpenAPI examples.", @@ -1695,7 +1706,7 @@ "Setup": null }, { - "Order": 155, + "Order": 156, "Title": "Remove members from a specific organization", "Slug": "remove-organization-members", "Description": "Generated from OpenAPI examples.", @@ -1706,7 +1717,7 @@ "Setup": null }, { - "Order": 156, + "Order": 157, "Title": "Resend a pending invite for an organization", "Slug": "resend-organization-invite", "Description": "Generated from OpenAPI examples.", @@ -1717,7 +1728,7 @@ "Setup": null }, { - "Order": 157, + "Order": 158, "Title": "Update a single field on an organization\u0027s API properties.", "Slug": "update-organization-api-properties", "Description": "Lets an organization owner toggle API-only settings such as\ncopyright_detection_enabled. Updates only the fields explicitly present\nin the request body; absent fields are left unchanged.", @@ -1728,7 +1739,7 @@ "Setup": null }, { - "Order": 158, + "Order": 159, "Title": "Update an API key\u0027s user-supplied label.", "Slug": "update-single-api-key", "Description": "Generated from OpenAPI examples.", @@ -1739,7 +1750,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 159, + "Order": 160, "Title": "Get stale mini-app preview entries", "Slug": "get-stale-preview-mini-apps", "Description": "Returns preview ids whose most recent successful publish is older than the cutoff. This read-only endpoint does not delete preview entries.", @@ -1750,7 +1761,7 @@ "Setup": null }, { - "Order": 160, + "Order": 161, "Title": "Publish a mini-app catalog entry", "Slug": "publish-mini-app", "Description": "Publishes a mini-app\u0027s catalog entry. Called by the mini-apps deploy pipeline after a deploy to register or refresh a single app, keyed by its unique slug. Re-publishing an existing app refreshes the deploy-managed fields (label, description, embed mode, scopes, image-input support, deployment details, and website) while leaving administrator-managed settings and artwork untouched. Artwork from the request is used only when creating a new app.", @@ -1761,7 +1772,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 161, + "Order": 162, "Title": "Publish a mini-app preview entry", "Slug": "publish-preview-mini-app", "Description": "Publishes a mini-app preview entry. Called by the mini-apps preview deploy pipeline to register a throwaway preview deploy, keyed by its unique preview id. Re-publishing an existing preview id refreshes every deploy-managed field. Preview entries are independent from the main catalog: they carry no slug, owner, or membership gating, and anyone with the preview link can access the app.", @@ -1772,7 +1783,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 162, + "Order": 163, "Title": "Unpublish a mini-app preview entry", "Slug": "unpublish-preview-mini-app", "Description": "Deletes a mini-app preview entry by its preview id. Repeated requests succeed when the entry is already absent, so preview teardown can retry safely.", @@ -1783,7 +1794,7 @@ "Setup": null }, { - "Order": 163, + "Order": 164, "Title": "Get model details", "Slug": "get-custom-model", "Description": "Get detailed information about a specific custom model. The user must either own the model or the model must be shared with the user\u0027s organization via the model registry. Returns 404 if the model is not found or not accessible.", @@ -1794,7 +1805,7 @@ "Setup": null }, { - "Order": 164, + "Order": 165, "Title": "List models", "Slug": "list-custom-models", "Description": "Lists custom models for the authenticated user. Use the \u0060scope\u0060 parameter to control which models are returned. If omitted, returns both owned models and models shared with the user\u0027s organization via the model registry. \u0060owned\u0060 returns only models created by the user. \u0060shared\u0060 returns only models shared via the model registry, excluding the user\u0027s own models.", @@ -1805,7 +1816,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 165, + "Order": 166, "Title": "Train a custom Ideogram v3 model", "Slug": "train-model-v3", "Description": "Start training a custom Ideogram v3 model from a dataset using default hyperparameters. The dataset must contain at least 15 images and a maximum of 100 images.", @@ -1816,7 +1827,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 166, + "Order": 167, "Title": "Train a custom Ideogram v3 model with advanced hyperparameters", "Slug": "train-model-v3-advanced", "Description": "Start training a custom Ideogram v3 model from a dataset with caller-supplied hyperparameters (training steps, LoRA rank, EMA decay, learning rate). All hyperparameters are optional and fall back to defaults when omitted. The dataset must contain at least 15 images and a maximum of 100 images. Returns the model ID and training status.", @@ -1827,7 +1838,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 167, + "Order": 168, "Title": "Train a custom Ideogram v4 model", "Slug": "train-model-v4", "Description": "Start training a custom Ideogram v4 model from a dataset using default hyperparameters. The dataset must contain at least 15 images and a maximum of 100 images.", @@ -1838,7 +1849,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 168, + "Order": 169, "Title": "Train a custom Ideogram v4 model with advanced hyperparameters", "Slug": "train-model-v4-advanced", "Description": "Start training a custom Ideogram v4 model from a dataset with caller-supplied hyperparameters (training steps, LoRA rank, EMA decay, learning rate). All hyperparameters are optional and fall back to defaults when omitted. The dataset must contain at least 15 images and a maximum of 100 images. Returns the model ID and training status.", @@ -1849,7 +1860,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 169, + "Order": 170, "Title": "Remove an object", "Slug": "post-remove-object-from-v2-assets", "Description": "Remove a masked object from an image. Upload the source \u0060image\u0060 and a\n\u0060mask\u0060 of the same size using \u0060multipart/form-data\u0060. Returns a\n\u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060 for the\nresult.", @@ -1860,7 +1871,7 @@ "Setup": null }, { - "Order": 170, + "Order": 171, "Title": "Generate Magic Prompt", "Slug": "post-magic-prompt", "Description": "Transforms basic prompts into a magic prompt. Internal use only (feature flagged). TODO: update description if enabled externally.", @@ -1871,7 +1882,7 @@ "Setup": null }, { - "Order": 171, + "Order": 172, "Title": "Generate a Magic Prompt with Ideogram 4.0", "Slug": "post-magic-prompt-v4", "Description": "Transforms a basic prompt into an enhanced Ideogram 4.0 magic prompt.\nThe magic prompt model version is fixed; callers cannot select it.\nWhen \u0060aspect_ratio\u0060 is \u0060AUTO\u0060 (the default), the model selects the most\nsuitable aspect ratio for the prompt and returns it in the response.", @@ -1882,7 +1893,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 172, + "Order": 173, "Title": "Check whether content was created by Ideogram", "Slug": "post-provenance-verify", "Description": "Checks image content for an Ideogram provenance manifest (C2PA Content\nCredentials) and returns the disclosure it carries: the provider name,\nthe generating system and its version, the creation time, and the\ncontent\u0027s unique identifier.\n\nUpload the image to verify as the \u0060content\u0060 part.\n\nThis endpoint is public and unauthenticated \u2014 no API key is required.\nSubmitted content is analyzed in memory and never stored.", @@ -1893,7 +1904,7 @@ "Setup": null }, { - "Order": 173, + "Order": 174, "Title": "Remove background", "Slug": "post-remove-background-v2", "Description": "Remove the background from an image and return the foreground as a\ntransparent PNG. Upload the source \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns the result directly by default; set \u0060async\u0060 to get a\n\u0060generation_id\u0060 and poll \u0060GET /v2/generations/{generation_id}\u0060.", @@ -1904,7 +1915,7 @@ "Setup": null }, { - "Order": 174, + "Order": 175, "Title": "Replace background with GPT Image 2", "Slug": "post-replace-background", "Description": "Replace the background of an image from a text prompt while keeping the\nautomatically detected foreground subject; no mask is needed. Upload\nthe source \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -1915,7 +1926,7 @@ "Setup": null }, { - "Order": 175, + "Order": 176, "Title": "Replace background with Ideogram 3.0", "Slug": "post-replace-background-ideogram-v3", "Description": "Replace the background of an image from a text prompt with Ideogram 3.0,\nkeeping the automatically detected foreground subject; no mask is\nneeded. Upload the source \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -1926,7 +1937,7 @@ "Setup": null }, { - "Order": 176, + "Order": 177, "Title": "Upscale with automatic model selection", "Slug": "post-upscale", "Description": "Upscale an image to 2x, 4x, or 8x its original resolution with a model\nIdeogram picks per request; the choice may change over time. Upload the\nsource \u0060image\u0060 using \u0060multipart/form-data\u0060.\nReturns results directly by default; set \u0060async\u0060 or supply a\n\u0060webhook_url\u0060 to get a \u0060generation_id\u0060 and poll\n\u0060GET /v2/generations/{generation_id}\u0060.", @@ -1937,7 +1948,7 @@ "Setup": null }, { - "Order": 177, + "Order": 178, "Title": "Reference to video with MiniMax H3", "Slug": "post-edit-video-minimax-h3-reference-to-video", "Description": "Produce a video from a text prompt and optional reference media with\nMiniMax H3. Upload \u0060reference_images\u0060 and \u0060reference_audios\u0060 using\n\u0060multipart/form-data\u0060, and address them in the prompt by position\n(\u0060Image 1\u0060, \u0060Audio 1\u0060, \u2026). Returns a \u0060generation_id\u0060; poll\n\u0060GET /v2/generations/{generation_id}\u0060 or supply a \u0060webhook_url\u0060.", @@ -1948,7 +1959,7 @@ "Setup": null }, { - "Order": 178, + "Order": 179, "Title": "Edit video with Seedance 2.0", "Slug": "post-edit-video-seed-dance2", "Description": "Edit a video you already have stored with Ideogram by replacing part of\nit. Reference the source video with \u0060video_asset_identifier\u0060 and mark the\nspan to replace with \u0060start_frame_time\u0060 and \u0060end_frame_time\u0060, in seconds.\nSeedance 2.0 generates a new clip for that span from your prompt, and the\nresult is the source video with the generated clip spliced in over the\nspan: everything before \u0060start_frame_time\u0060, then the generated clip, then\neverything from \u0060end_frame_time\u0060 on. That edited video is the asset the\nrequest produces.\n\n\u0060is_start_frame_included\u0060 and \u0060is_end_frame_included\u0060 anchor the generated\nclip on the span\u0027s own end frames, so it joins the surrounding footage\ninstead of cutting to something unrelated. Anchoring the start opens the\nclip on the frame already at \u0060start_frame_time\u0060; anchoring the end lands\nit on the frame at \u0060end_frame_time\u0060; anchoring both joins at each seam. At\nleast one must be anchored.\n\nThe generated clip is used at its own length, which the model rarely makes\nexactly the span\u0027s, so the edited video is usually a different length from\nthe source. Request a \u0060duration\u0060 close to the span to keep them near each\nother. The clip is scaled and cropped to fill the source\u0027s frame and\nconformed to its frame rate, so resolution and aspect ratio follow the\nsource rather than being requested.\n\nVideo generation always runs asynchronously: the response returns as\nsoon as the request is accepted and carries only a \u0060generation_id\u0060.\nPoll for completion and results with\n\u0060GET /v2/generations/{generation_id}\u0060 using that id, or supply a\n\u0060webhook_url\u0060 to have the finished result POSTed to your server\ninstead.\n\nVideo links are available for a limited period of time; download the\nvideo if you want to keep it.", @@ -1959,7 +1970,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 179, + "Order": 180, "Title": "Image to video with Kling v3 Standard", "Slug": "post-generate-video-kling-v3-standard-image-to-video", "Description": "Generate a video from a first-frame image and a text prompt with Kling\nv3 Standard. Upload the first frame as \u0060image\u0060, and optionally a final\nframe as \u0060end_image\u0060, using \u0060multipart/form-data\u0060.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -1970,7 +1981,7 @@ "Setup": null }, { - "Order": 180, + "Order": 181, "Title": "Text to video with Kling v3 Standard", "Slug": "post-generate-video-kling-v3-standard-text-to-video", "Description": "Generate a video from a text prompt with Kling v3 Standard.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -1981,7 +1992,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 181, + "Order": 182, "Title": "Image to video with MiniMax H3", "Slug": "post-generate-video-minimax-h3-image-to-video", "Description": "Generate a video from a first-frame image and a text prompt with\nMiniMax H3. Upload the first frame as \u0060image\u0060, and optionally a final\nframe as \u0060end_image\u0060, using \u0060multipart/form-data\u0060.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -1992,7 +2003,7 @@ "Setup": null }, { - "Order": 182, + "Order": 183, "Title": "Text to video with MiniMax H3", "Slug": "post-generate-video-minimax-h3-text-to-video", "Description": "Generate a video from a text prompt with MiniMax H3.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -2003,7 +2014,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 183, + "Order": 184, "Title": "Image to video with Seedance 2.5", "Slug": "post-generate-video-seed-dance25-image-to-video", "Description": "Generate a video from a first-frame image and a text prompt with\nSeedance 2.5. Upload the first frame as \u0060image\u0060, and optionally a final\nframe as \u0060end_image\u0060, using \u0060multipart/form-data\u0060.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -2014,7 +2025,7 @@ "Setup": null }, { - "Order": 184, + "Order": 185, "Title": "Reference to video with Seedance 2.5", "Slug": "post-generate-video-seed-dance25-reference-to-video", "Description": "Generate a video from a text prompt and reference media with\nSeedance 2.5. Upload at least one image in \u0060reference_images\u0060, plus optional\n\u0060reference_audios\u0060, using \u0060multipart/form-data\u0060.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -2025,7 +2036,7 @@ "Setup": null }, { - "Order": 185, + "Order": 186, "Title": "Text to video with Seedance 2.5", "Slug": "post-generate-video-seed-dance25-text-to-video", "Description": "Generate a video from a text prompt with Seedance 2.5, at up to 1080p and\n30 seconds. Returns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -2036,7 +2047,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 186, + "Order": 187, "Title": "Image to video with Seedance 2.0", "Slug": "post-generate-video-seed-dance2-image-to-video", "Description": "Generate one or more videos from a first-frame image and a text prompt\nwith Seedance 2.0. Upload the first frame as \u0060image\u0060, and optionally a final\nframe as \u0060end_image\u0060, using \u0060multipart/form-data\u0060.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -2047,7 +2058,7 @@ "Setup": null }, { - "Order": 187, + "Order": 188, "Title": "Reference to video with Seedance 2.0", "Slug": "post-generate-video-seed-dance2-reference-to-video", "Description": "Generate a video from a text prompt and reference media with\nSeedance 2.0. Upload at least one image in \u0060reference_images\u0060, plus optional\n\u0060reference_audios\u0060, using \u0060multipart/form-data\u0060.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -2058,7 +2069,7 @@ "Setup": null }, { - "Order": 188, + "Order": 189, "Title": "Text to video with Seedance 2.0", "Slug": "post-generate-video-seed-dance2-text-to-video", "Description": "Generate one or more videos from a text prompt with Seedance 2.0.\nReturns a \u0060generation_id\u0060; poll \u0060GET /v2/generations/{generation_id}\u0060\nor supply a \u0060webhook_url\u0060.", @@ -2069,7 +2080,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 189, + "Order": 190, "Title": "Turn a still image into a subtle looping video", "Slug": "post-living-image", "Description": "Animates one image into a short, loop-ready clip for use as a living background. The camera stays fixed and only the parts of the scene that would move in real life move: water, light, mist, particles, fabric, creatures. Ideogram inspects the image and writes the motion prompt, so the request needs only the image.\nVideo generation runs asynchronously. Poll \u0060GET /v1/generations/{generation_id}\u0060 with the returned \u0060generation_id\u0060 until the generation completes or fails.", @@ -2080,7 +2091,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 190, + "Order": 191, "Title": "Product 360 Video", "Slug": "post-product360-video", "Description": "Animates one product image through a complete turntable revolution and returns to the starting pose so the result loops cleanly.\nVideo generation runs asynchronously. Poll \u0060GET /v2/generations/{generation_id}\u0060 with the returned \u0060generation_id\u0060 until the generation completes or fails.", @@ -2091,7 +2102,7 @@ "Setup": "This example assumes \u0060using Ideogram;\u0060 is in scope and \u0060apiKey\u0060 contains the required credential." }, { - "Order": 191, + "Order": 192, "Title": "Describe", "Slug": "post-describe", "Description": "Describe an image.\n\nSupported image formats include JPEG, PNG, and WebP.", @@ -2102,7 +2113,7 @@ "Setup": null }, { - "Order": 192, + "Order": 193, "Title": "Describe with Ideogram 4.0", "Slug": "post-describe-v4", "Description": "Describe an image with Ideogram 4.0 and return a structured\n\u0060V4JsonPrompt\u0060. The returned \u0060json_prompt\u0060 is a working JSON prompt\nthat can be passed directly as \u0060json_prompt\u0060 to the\n\u0060/v1/ideogram-v4/generate\u0060 family of endpoints.\n\nSupported image formats include JPEG, PNG, and WebP.", @@ -2113,7 +2124,7 @@ "Setup": null }, { - "Order": 193, + "Order": 194, "Title": "Get the public keys used to verify webhook signatures", "Slug": "get-webhook-signing-jwks", "Description": "Returns the set of Ed25519 public keys Ideogram uses to sign outbound\nwebhook payloads. Customers verify incoming webhooks by recomputing the\ncanonical signed message (\u0060request_id\\nuser_id\\ntimestamp\\nsha256_hex(body)\u0060)\nand checking the \u0060X-Ideogram-Webhook-Signature\u0060 header against any key\nin this document.\n\nThe document includes the current signing key plus any keys recently\nrotated out, so signatures already in flight remain verifiable across\nrotations. Cache for up to 24 hours; refresh sooner if a signature\nfails to verify against the cached set.\n\nThis endpoint is public and unauthenticated \u2014 no API key is required.", diff --git a/src/libs/Ideogram/openapi.json b/src/libs/Ideogram/openapi.json index 23412be..e3ea38c 100644 --- a/src/libs/Ideogram/openapi.json +++ b/src/libs/Ideogram/openapi.json @@ -9703,7 +9703,7 @@ }, "/v2/image/precise-edit/ideogram-4-5": { "post": { - "description": "Edit an image with Ideogram 4.5 and get the result back at that image's\nexact width and height. Upload the image as `image` using\n`multipart/form-data`, with optional `reference_images` and a `mask`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n\n`context_window` narrows the edit to one region of the image, so a\nlarge image keeps its detail: pass `x,y,width,height`, or `auto`\ntogether with a `mask`. The result always keeps the image's own width\nand height.\n", + "description": "Edit an image with Ideogram 4.5 and get the result back at that image's\nexact width and height. Upload the image as `image` using\n`multipart/form-data`, with optional `reference_images` and a `mask`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n\n`context_window` confines the edit to one region of the image, so a\nlarge image keeps its detail: pass `y_min,x_min,y_max,x_max`, or `auto`\ntogether with a `mask`. The result always keeps the image's own width\nand height.\n", "operationId": "post_precise_edit_image_v2_ideogram45", "parameters": [ { @@ -13519,6 +13519,98 @@ "x-openapi-router-controller": "external_api.generated.openapi.controllers.edit_workflow_controller" } }, + "/v2/tool/text-layerizer": { + "post": { + "description": "Turns a flat image into an editable design asynchronously: detected text\nis returned as positioned text blocks with matched fonts, sizes, and\ncolors, alongside a text-free base image and a standalone HTML page of\nthe editable design. Returns a `generation_id`; poll\n`GET /v2/generations/{generation_id}` or supply a `webhook_url`.", + "operationId": "post_text_layerizer", + "parameters": [ + { + "description": "When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n", + "in": "query", + "name": "dry_run", + "required": false, + "schema": { + "default": false, + "type": "boolean" + }, + "x-tool-description": "Validate and quote only; no generation, storage, billing, or safety review." + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "encoding": { + "image_asset_identifier": { + "contentType": "application/json" + } + }, + "schema": { + "$ref": "#/components/schemas/TextLayerizerRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/TextLayerizerRequest" + } + } + }, + "required": true, + "x-body-name": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TextLayerizerResponse" + } + } + }, + "description": "Layerization accepted; dry runs return the shared PriceQuote response." + }, + "400": { + "description": "Invalid source image, font file, or input combination." + }, + "401": { + "description": "Authentication required." + }, + "402": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerationErrorResponse" + } + } + }, + "description": "Insufficient credits." + }, + "403": { + "description": "Access denied." + }, + "404": { + "description": "Source not found." + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerationErrorResponse" + } + } + }, + "description": "Too many requests." + }, + "503": { + "description": "Layerization is unavailable." + } + }, + "summary": "Text Layerizer", + "tags": [ + "edit-workflow" + ], + "x-openapi-router-controller": "external_api.generated.openapi.controllers.edit_workflow_controller" + } + }, "/v2/tool/vectorizer": { "post": { "description": "Converts an image to SVG asynchronously.", @@ -15085,6 +15177,11 @@ }, { "properties": { + "layer_id": { + "description": "Identifier of this block's layer in the page at `html_url`; pass it to the page's editing API.", + "example": "text-0", + "type": "string" + }, "spans": { "description": "The block's colour runs in reading order. Present, with at least one\nrun, whenever `color` is set; concatenating the runs' `text` reproduces\nthe block's `text`. `color` reports the dominant colour.\n", "items": { @@ -15094,9 +15191,13 @@ "type": "array" } }, + "required": [ + "layer_id" + ], "type": "object" } - ] + ], + "title": "LayerizedTextBlock" }, "GenerateImageRequestV4": { "description": "Request body for Ideogram 4.0 image generation. Supply exactly one of\n`text_prompt` or `json_prompt`. When `text_prompt` is supplied,\nmagic-prompt is applied automatically. When `json_prompt` is supplied,\nmagic-prompt is skipped and the structured prompt is consumed\ndirectly.\n", @@ -24803,6 +24904,78 @@ }, "type": "object" }, + "TextLayerizerResponse": { + "example": { + "generation_id": "generation_id" + }, + "properties": { + "generation_id": { + "description": "URL-safe base64 generation ID.", + "title": "generation_id", + "type": "string" + } + }, + "required": [ + "generation_id" + ], + "title": "TextLayerizerResponse", + "type": "object" + }, + "TextLayerizerRequest": { + "description": "A request to layerize the text in one image. Provide exactly one of\n`image` or `image_asset_identifier`.\n", + "properties": { + "image": { + "description": "JPEG, PNG or WEBP source; at most 50 MB. Multipart only.", + "format": "binary", + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/components/schemas/AssetIdentifier" + }, + "prompt": { + "description": "A description of the image, used to guide text detection. When omitted, detection runs on the image alone.", + "maxLength": 10000, + "nullable": true, + "type": "string" + }, + "seed": { + "description": "Random seed. Set for reproducible generation.", + "example": 12345, + "maximum": 2147483647, + "minimum": 0, + "title": "Seed", + "type": "integer", + "x-tool-description": "Set for reproducible generation." + }, + "font_candidate_files": { + "description": "Candidate font files to make available for text style matching and to embed in the standalone HTML page. Supported formats .ttf, .otf, .woff, .woff2 (max 5 MB each, at most 5 files). Multipart only. You are responsible for holding the rights to embed and redistribute the fonts you upload.", + "items": { + "format": "binary", + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "private": { + "description": "Outputs are private by default. Enterprise outputs are always private.", + "type": "boolean" + }, + "target_collection_id": { + "description": "URL-safe base64 ID of a writable destination collection.", + "type": "string" + }, + "webhook_url": { + "description": "HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n", + "example": "https://api.example.com/webhooks/ideogram", + "format": "uri", + "maxLength": 2048, + "title": "webhook_url", + "type": "string", + "x-tool-description": "Signed completion callback; public HTTPS only (no private/internal hosts)." + } + }, + "type": "object" + }, "AdResizerResponse": { "description": "Acknowledgement that the ad resize was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n", "example": { @@ -29528,7 +29701,7 @@ }, "context_window": { "default": "none", - "description": "How much of the image being edited the model may see and change.\n`none`, the default, edits the whole image. A large image may come back smaller than it was sent.\n`auto` requires a `mask` and automatically selects an appropriate context region around the masked area.\n`x,y,width,height` names the region explicitly, in the edited image's own pixels with the origin at its top-left corner — for example `1024,512,2048,1536`. The region must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.\nWith `auto` or an explicit region, every pixel outside the region is returned exactly as supplied and the output keeps the image's own width and height.", + "description": "Which region of the image to edit.\n`none`, the default, edits the whole image. A large image may come back smaller than it was sent.\n`auto` requires a `mask` and automatically selects an appropriate context region around the masked area.\n`y_min,x_min,y_max,x_max` names the region explicitly, by its corners. Rows come first, matching the `bbox` ordering used elsewhere in this API, and the values are the edited image's own pixels with the origin at its top-left corner. For example `512,1024,2048,3072` is the region 2048 pixels wide and 1536 tall whose top-left corner is 1024 across and 512 down. The maximum edges are exclusive, so the region measures `x_max - x_min` by `y_max - y_min`. It must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.\nWith `auto` or an explicit region, only that region changes and the output keeps the image's own width and height.", "pattern": "^(none|auto|[0-9]+,[0-9]+,[0-9]+,[0-9]+)$", "type": "string", "x-tool-description": "Omit. Only usable with a file-uploaded image." @@ -37943,6 +38116,76 @@ "title": "VideoObject", "type": "object" }, + "TextLayerizerResultObject": { + "description": "One layerized design. Links are available for a limited period of time;\nif you would like to keep a file, you must download it.\n", + "properties": { + "object_type": { + "enum": [ + "layerized_design.generation" + ], + "title": "object_type", + "type": "string" + }, + "url": { + "description": "Signed link to the design image with its text intact. Empty when the image did not pass safety checks.", + "format": "uri", + "nullable": true, + "title": "url", + "type": "string" + }, + "base_image_url": { + "description": "Signed link to the base image with all detected text removed. Empty when the image did not pass safety checks.", + "format": "uri", + "nullable": true, + "title": "base_image_url", + "type": "string" + }, + "resolution": { + "description": "The resolution of the design, formatted as \"WIDTHxHEIGHT\".", + "example": "1024x1024", + "title": "resolution", + "type": "string" + }, + "is_image_safe": { + "description": "Whether the image passed safety checks. If false, the links are empty.", + "title": "is_image_safe", + "type": "boolean" + }, + "seed": { + "description": "Random seed. Set for reproducible generation.", + "example": 12345, + "maximum": 2147483647, + "minimum": 0, + "title": "Seed", + "type": "integer", + "x-tool-description": "Set for reproducible generation." + }, + "text_blocks": { + "description": "Flat list of detected text regions in the design.", + "items": { + "$ref": "#/components/schemas/LayerizedTextBlock" + }, + "title": "text_blocks", + "type": "array" + }, + "html_url": { + "description": "Signed link to a self-contained HTML page displaying the editable\ndesign, including curved text, gradients, outlines, and shadows. The\nrenderer, images, and fonts are embedded in the page, so it keeps\nworking offline once downloaded; the link itself expires after 24\nhours. Uploaded `font_candidate_files` are embedded as supplied, so\nredistributing the page is subject to those fonts' licenses. Empty\nwhen the image did not pass safety checks or the page could not be\nbuilt.\n\nThe page exposes one editing API for every text layer, whether it\nis drawn as HTML or on a canvas. Each layer is addressed by its\n`text_blocks[].layer_id`. Scripts in the page can call\n`window.layerize` (`ready`, `getTextLayers()`, `setText(id, text)`,\n`update(id, patch)`, `toJSON()`, `toPNG()`); a parent page that\nembeds it in an iframe sends `postMessage` requests such as\n`{\"type\": \"layerize:set-text\", \"id\": \"text-0\", \"text\": \"Hello\"}`\nand receives `layerize:ready`, `layerize:updated`, and\n`layerize:error` replies. The page is served sandboxed with an\nopaque origin, so it cannot read cookies or storage of the site\nthat embeds it.\n", + "format": "uri", + "nullable": true, + "title": "html_url", + "type": "string" + } + }, + "required": [ + "is_image_safe", + "object_type", + "resolution", + "seed", + "text_blocks" + ], + "title": "TextLayerizerResultObject", + "type": "object" + }, "LayeredAssetTextShadow": { "description": "Single CSS shadow for V4 vector text. Used by text_shadows and box_shadow. offset_x, offset_y, and blur are in px.", "example": { @@ -38729,7 +38972,8 @@ "svg.generation": "#/components/schemas/SvgGenerationObject", "image.generation": "#/components/schemas/ImageGenerationObject", "video.generation": "#/components/schemas/VideoObject", - "layerized_image": "#/components/schemas/LayerizedImageObject" + "layerized_image": "#/components/schemas/LayerizedImageObject", + "layerized_design.generation": "#/components/schemas/TextLayerizerResultObject" }, "propertyName": "object_type" }, @@ -38748,6 +38992,9 @@ }, { "$ref": "#/components/schemas/LayerizedImageObject" + }, + { + "$ref": "#/components/schemas/TextLayerizerResultObject" } ], "title": "GenerationResponse_data_inner"