From 6bf1bc750588d1db2dea0e3f361ed012e6f326c0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Jun 2026 19:46:54 +0000 Subject: [PATCH] feat: Updated OpenAPI spec --- ...nerateWorldMarbleV1WorldsGeneratePost.g.cs | 2 +- ...oDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs | 2 +- .../WorldLabs.JsonSerializerContext.g.cs | 1 + .../WorldLabs.JsonSerializerContextTypes.g.cs | 60 +- ...orldLabs.Models.PanoDepthToRgbRequest.g.cs | 4 +- ...orldLabs.Models.WorldsGenerateRequest.g.cs | 4 +- ...nerateWorldMarbleV1WorldsGeneratePost.g.cs | 2 +- ...oDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs | 2 +- src/libs/WorldLabs/openapi.yaml | 1417 ++++++++++------- 9 files changed, 855 insertions(+), 639 deletions(-) diff --git a/src/libs/WorldLabs/Generated/WorldLabs.IWorldLabsClient.GenerateWorldMarbleV1WorldsGeneratePost.g.cs b/src/libs/WorldLabs/Generated/WorldLabs.IWorldLabsClient.GenerateWorldMarbleV1WorldsGeneratePost.g.cs index c330dd9..dd62455 100644 --- a/src/libs/WorldLabs/Generated/WorldLabs.IWorldLabsClient.GenerateWorldMarbleV1WorldsGeneratePost.g.cs +++ b/src/libs/WorldLabs/Generated/WorldLabs.IWorldLabsClient.GenerateWorldMarbleV1WorldsGeneratePost.g.cs @@ -101,7 +101,7 @@ public partial interface IWorldLabsClient string? displayName = default, global::WorldLabs.AnyOf? model = default, global::WorldLabs.Permission? permission = default, - int? seed = default, + long? seed = default, global::System.Collections.Generic.IList? tags = default, global::WorldLabs.AutoSDKRequestOptions? requestOptions = default, global::System.Threading.CancellationToken cancellationToken = default); diff --git a/src/libs/WorldLabs/Generated/WorldLabs.IWorldLabsClient.PanoDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs b/src/libs/WorldLabs/Generated/WorldLabs.IWorldLabsClient.PanoDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs index 57b7f41..3d8057d 100644 --- a/src/libs/WorldLabs/Generated/WorldLabs.IWorldLabsClient.PanoDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs +++ b/src/libs/WorldLabs/Generated/WorldLabs.IWorldLabsClient.PanoDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs @@ -118,7 +118,7 @@ public partial interface IWorldLabsClient global::System.Threading.Tasks.Task PanoDepthToRgbMarbleV1PanoDepthToRgbPostAsync( global::WorldLabs.DepthPanoImage depthPanoImage, string textPrompt, - int? seed = default, + long? seed = default, double? zMax = default, double? zMin = default, global::WorldLabs.AutoSDKRequestOptions? requestOptions = default, diff --git a/src/libs/WorldLabs/Generated/WorldLabs.JsonSerializerContext.g.cs b/src/libs/WorldLabs/Generated/WorldLabs.JsonSerializerContext.g.cs index 35e3581..a2822f4 100644 --- a/src/libs/WorldLabs/Generated/WorldLabs.JsonSerializerContext.g.cs +++ b/src/libs/WorldLabs/Generated/WorldLabs.JsonSerializerContext.g.cs @@ -142,6 +142,7 @@ namespace WorldLabs [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::WorldLabs.DepthPanoImage), TypeInfoPropertyName = "DepthPanoImage2")] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::WorldLabs.PanoDepthToRgbRequestDepthPanoImageDiscriminator))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::WorldLabs.PanoDepthToRgbRequestDepthPanoImageDiscriminatorSource), TypeInfoPropertyName = "PanoDepthToRgbRequestDepthPanoImageDiscriminatorSource2")] + [global::System.Text.Json.Serialization.JsonSerializable(typeof(long))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::WorldLabs.Permission))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::WorldLabs.Prompt))] [global::System.Text.Json.Serialization.JsonSerializable(typeof(global::WorldLabs.Content2), TypeInfoPropertyName = "Content22")] diff --git a/src/libs/WorldLabs/Generated/WorldLabs.JsonSerializerContextTypes.g.cs b/src/libs/WorldLabs/Generated/WorldLabs.JsonSerializerContextTypes.g.cs index 860c183..b41c4dd 100644 --- a/src/libs/WorldLabs/Generated/WorldLabs.JsonSerializerContextTypes.g.cs +++ b/src/libs/WorldLabs/Generated/WorldLabs.JsonSerializerContextTypes.g.cs @@ -244,115 +244,119 @@ public sealed partial class JsonSerializerContextTypes /// /// /// - public global::WorldLabs.Permission? Type54 { get; set; } + public long? Type54 { get; set; } /// /// /// - public global::WorldLabs.Prompt? Type55 { get; set; } + public global::WorldLabs.Permission? Type55 { get; set; } /// /// /// - public global::WorldLabs.Content2? Type56 { get; set; } + public global::WorldLabs.Prompt? Type56 { get; set; } /// /// /// - public global::WorldLabs.SphericallyLocatedContentInputContentDiscriminator? Type57 { get; set; } + public global::WorldLabs.Content2? Type57 { get; set; } /// /// /// - public global::WorldLabs.SphericallyLocatedContentInputContentDiscriminatorSource? Type58 { get; set; } + public global::WorldLabs.SphericallyLocatedContentInputContentDiscriminator? Type58 { get; set; } /// /// /// - public global::WorldLabs.SplatAssets? Type59 { get; set; } + public global::WorldLabs.SphericallyLocatedContentInputContentDiscriminatorSource? Type59 { get; set; } /// /// /// - public global::WorldLabs.WorldSemanticsMetadata? Type60 { get; set; } + public global::WorldLabs.SplatAssets? Type60 { get; set; } /// /// /// - public global::System.Collections.Generic.Dictionary? Type61 { get; set; } + public global::WorldLabs.WorldSemanticsMetadata? Type61 { get; set; } /// /// /// - public global::System.Collections.Generic.IList>? Type62 { get; set; } + public global::System.Collections.Generic.Dictionary? Type62 { get; set; } /// /// /// - public global::WorldLabs.AnyOf? Type63 { get; set; } + public global::System.Collections.Generic.IList>? Type63 { get; set; } /// /// /// - public global::WorldLabs.VideoPromptInput? Type64 { get; set; } + public global::WorldLabs.AnyOf? Type64 { get; set; } /// /// /// - public global::WorldLabs.VideoPrompt? Type65 { get; set; } + public global::WorldLabs.VideoPromptInput? Type65 { get; set; } /// /// /// - public global::WorldLabs.VideoPromptInputVideoPromptDiscriminator? Type66 { get; set; } + public global::WorldLabs.VideoPrompt? Type66 { get; set; } /// /// /// - public global::WorldLabs.VideoPromptInputVideoPromptDiscriminatorSource? Type67 { get; set; } + public global::WorldLabs.VideoPromptInputVideoPromptDiscriminator? Type67 { get; set; } /// /// /// - public global::WorldLabs.VideoPromptOutput? Type68 { get; set; } + public global::WorldLabs.VideoPromptInputVideoPromptDiscriminatorSource? Type68 { get; set; } /// /// /// - public global::WorldLabs.WorldAssets2? Type69 { get; set; } + public global::WorldLabs.VideoPromptOutput? Type69 { get; set; } /// /// /// - public global::WorldLabs.WorldPromptVariant1? Type70 { get; set; } + public global::WorldLabs.WorldAssets2? Type70 { get; set; } /// /// /// - public global::WorldLabs.WorldTextPromptOutput? Type71 { get; set; } + public global::WorldLabs.WorldPromptVariant1? Type71 { get; set; } /// /// /// - public global::WorldLabs.WorldWorldPromptVariant1Discriminator? Type72 { get; set; } + public global::WorldLabs.WorldTextPromptOutput? Type72 { get; set; } /// /// /// - public global::WorldLabs.WorldWorldPromptVariant1DiscriminatorType? Type73 { get; set; } + public global::WorldLabs.WorldWorldPromptVariant1Discriminator? Type73 { get; set; } /// /// /// - public global::WorldLabs.WorldTextPromptInput? Type74 { get; set; } + public global::WorldLabs.WorldWorldPromptVariant1DiscriminatorType? Type74 { get; set; } /// /// /// - public global::WorldLabs.WorldsGenerateRequest? Type75 { get; set; } + public global::WorldLabs.WorldTextPromptInput? Type75 { get; set; } /// /// /// - public global::WorldLabs.AnyOf? Type76 { get; set; } + public global::WorldLabs.WorldsGenerateRequest? Type76 { get; set; } /// /// /// - public global::WorldLabs.WorldsGenerateRequestModelVariant1? Type77 { get; set; } + public global::WorldLabs.AnyOf? Type77 { get; set; } /// /// /// - public global::WorldLabs.WorldsGenerateRequestModelVariant2? Type78 { get; set; } + public global::WorldLabs.WorldsGenerateRequestModelVariant1? Type78 { get; set; } /// /// /// - public global::WorldLabs.WorldPrompt? Type79 { get; set; } + public global::WorldLabs.WorldsGenerateRequestModelVariant2? Type79 { get; set; } /// /// /// - public global::WorldLabs.WorldsGenerateRequestWorldPromptDiscriminator? Type80 { get; set; } + public global::WorldLabs.WorldPrompt? Type80 { get; set; } /// /// /// - public global::WorldLabs.WorldsGenerateRequestWorldPromptDiscriminatorType? Type81 { get; set; } + public global::WorldLabs.WorldsGenerateRequestWorldPromptDiscriminator? Type81 { get; set; } + /// + /// + /// + public global::WorldLabs.WorldsGenerateRequestWorldPromptDiscriminatorType? Type82 { get; set; } /// /// diff --git a/src/libs/WorldLabs/Generated/WorldLabs.Models.PanoDepthToRgbRequest.g.cs b/src/libs/WorldLabs/Generated/WorldLabs.Models.PanoDepthToRgbRequest.g.cs index 1b05388..0ab5859 100644 --- a/src/libs/WorldLabs/Generated/WorldLabs.Models.PanoDepthToRgbRequest.g.cs +++ b/src/libs/WorldLabs/Generated/WorldLabs.Models.PanoDepthToRgbRequest.g.cs @@ -36,7 +36,7 @@ public sealed partial class PanoDepthToRgbRequest /// Random seed for reproducible generation. /// [global::System.Text.Json.Serialization.JsonPropertyName("seed")] - public int? Seed { get; set; } + public long? Seed { get; set; } /// /// Text description of the desired appearance. @@ -87,7 +87,7 @@ public sealed partial class PanoDepthToRgbRequest public PanoDepthToRgbRequest( global::WorldLabs.DepthPanoImage depthPanoImage, string textPrompt, - int? seed, + long? seed, double? zMax, double? zMin) { diff --git a/src/libs/WorldLabs/Generated/WorldLabs.Models.WorldsGenerateRequest.g.cs b/src/libs/WorldLabs/Generated/WorldLabs.Models.WorldsGenerateRequest.g.cs index 2e09a01..7920f18 100644 --- a/src/libs/WorldLabs/Generated/WorldLabs.Models.WorldsGenerateRequest.g.cs +++ b/src/libs/WorldLabs/Generated/WorldLabs.Models.WorldsGenerateRequest.g.cs @@ -33,7 +33,7 @@ public sealed partial class WorldsGenerateRequest /// Random seed for generation /// [global::System.Text.Json.Serialization.JsonPropertyName("seed")] - public int? Seed { get; set; } + public long? Seed { get; set; } /// /// Optional tags for the world (max 10 tags, each up to 32 characters) @@ -86,7 +86,7 @@ public WorldsGenerateRequest( string? displayName, global::WorldLabs.AnyOf? model, global::WorldLabs.Permission? permission, - int? seed, + long? seed, global::System.Collections.Generic.IList? tags) { this.DisplayName = displayName; diff --git a/src/libs/WorldLabs/Generated/WorldLabs.WorldLabsClient.GenerateWorldMarbleV1WorldsGeneratePost.g.cs b/src/libs/WorldLabs/Generated/WorldLabs.WorldLabsClient.GenerateWorldMarbleV1WorldsGeneratePost.g.cs index 585dd06..382ff2f 100644 --- a/src/libs/WorldLabs/Generated/WorldLabs.WorldLabsClient.GenerateWorldMarbleV1WorldsGeneratePost.g.cs +++ b/src/libs/WorldLabs/Generated/WorldLabs.WorldLabsClient.GenerateWorldMarbleV1WorldsGeneratePost.g.cs @@ -578,7 +578,7 @@ partial void ProcessGenerateWorldMarbleV1WorldsGeneratePostResponseContent( string? displayName = default, global::WorldLabs.AnyOf? model = default, global::WorldLabs.Permission? permission = default, - int? seed = default, + long? seed = default, global::System.Collections.Generic.IList? tags = default, global::WorldLabs.AutoSDKRequestOptions? requestOptions = default, global::System.Threading.CancellationToken cancellationToken = default) diff --git a/src/libs/WorldLabs/Generated/WorldLabs.WorldLabsClient.PanoDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs b/src/libs/WorldLabs/Generated/WorldLabs.WorldLabsClient.PanoDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs index 694c729..60b1cc7 100644 --- a/src/libs/WorldLabs/Generated/WorldLabs.WorldLabsClient.PanoDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs +++ b/src/libs/WorldLabs/Generated/WorldLabs.WorldLabsClient.PanoDepthToRgbMarbleV1PanoDepthToRgbPost.g.cs @@ -595,7 +595,7 @@ partial void ProcessPanoDepthToRgbMarbleV1PanoDepthToRgbPostResponseContent( public async global::System.Threading.Tasks.Task PanoDepthToRgbMarbleV1PanoDepthToRgbPostAsync( global::WorldLabs.DepthPanoImage depthPanoImage, string textPrompt, - int? seed = default, + long? seed = default, double? zMax = default, double? zMin = default, global::WorldLabs.AutoSDKRequestOptions? requestOptions = default, diff --git a/src/libs/WorldLabs/openapi.yaml b/src/libs/WorldLabs/openapi.yaml index 90ce1b1..25cd165 100644 --- a/src/libs/WorldLabs/openapi.yaml +++ b/src/libs/WorldLabs/openapi.yaml @@ -1,32 +1,34 @@ components: schemas: Content: - description: 'Represents content (media, text, images) that can be stored inline - or via URL. + description: >- + Represents content (media, text, images) that can be stored inline or + via URL. - Supports both direct data storage (up to 10MB) and URL references (up to 20MB).' + Supports both direct data storage (up to 10MB) and URL references (up to + 20MB). properties: data_base64: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Data Base64 extension: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: File extension without dot examples: - - jpg - - png - - pdf - - txt + - jpg + - png + - pdf + - txt title: Extension uri: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Uri title: Content type: object @@ -35,11 +37,11 @@ components: properties: remaining_credits: description: Remaining API credits available to the authenticated user. - minimum: 0.0 + minimum: 0 title: Remaining Credits type: number required: - - remaining_credits + - remaining_credits title: CreditsResponse type: object DataBase64Reference: @@ -51,8 +53,8 @@ components: type: string extension: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: File extension without dot (e.g., 'jpg', 'png') title: Extension source: @@ -61,7 +63,7 @@ components: title: Source type: string required: - - data_base64 + - data_base64 title: DataBase64Reference type: object DeleteWorldResponse: @@ -76,27 +78,29 @@ components: title: World Id type: string required: - - world_id - - deleted + - world_id + - deleted title: DeleteWorldResponse type: object DepthPanoPrompt: - description: 'For models conditioned on a depth pano and text. + description: >- + For models conditioned on a depth pano and text. When depth_pano_image is a log-encoded PNG, z_min and z_max are required - to decode it correctly. When it is an EXR file containing raw float depth + to decode it correctly. When it is an EXR file containing raw float + depth values, z_min and z_max will both be ignored. - Please set z_min and z_max both to None when using an EXR file.' + Please set z_min and z_max both to None when using an EXR file. properties: depth_pano_image: $ref: '#/components/schemas/Content' text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Text Prompt type: const: depth-pano @@ -105,16 +109,16 @@ components: type: string z_max: anyOf: - - type: number - - type: 'null' + - type: number + - type: 'null' title: Z Max z_min: anyOf: - - type: number - - type: 'null' + - type: number + - type: 'null' title: Z Min required: - - depth_pano_image + - depth_pano_image title: DepthPanoPrompt type: object GenerateWorldResponse: @@ -122,9 +126,9 @@ components: properties: created_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Creation timestamp title: Created At done: @@ -133,21 +137,21 @@ components: type: boolean error: anyOf: - - $ref: '#/components/schemas/OperationError' - - type: 'null' + - $ref: '#/components/schemas/OperationError' + - type: 'null' description: Error information if the operation failed expires_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Expiration timestamp title: Expires At metadata: anyOf: - - additionalProperties: true - type: object - - type: 'null' + - additionalProperties: true + type: object + - type: 'null' description: Service-specific metadata, such as progress percentage title: Metadata operation_id: @@ -156,30 +160,31 @@ components: type: string response: anyOf: - - {} - - type: 'null' - description: Result payload when done=true and no error. Structure depends - on operation type. + - {} + - type: 'null' + description: >- + Result payload when done=true and no error. Structure depends on + operation type. title: Response updated_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Last update timestamp title: Updated At required: - - operation_id - - done + - operation_id + - done title: GenerateWorldResponse type: object GetOperationResponse_Union_World__PanoDepthToRgbResult__: properties: created_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Creation timestamp title: Created At done: @@ -188,21 +193,21 @@ components: type: boolean error: anyOf: - - $ref: '#/components/schemas/OperationError' - - type: 'null' + - $ref: '#/components/schemas/OperationError' + - type: 'null' description: Error information if the operation failed expires_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Expiration timestamp title: Expires At metadata: anyOf: - - additionalProperties: true - type: object - - type: 'null' + - additionalProperties: true + type: object + - type: 'null' description: Service-specific metadata, such as progress percentage title: Metadata operation_id: @@ -211,22 +216,23 @@ components: type: string response: anyOf: - - $ref: '#/components/schemas/World' - - $ref: '#/components/schemas/PanoDepthToRgbResult' - - type: 'null' - description: Result payload when done=true and no error. Structure depends - on operation type. + - $ref: '#/components/schemas/World' + - $ref: '#/components/schemas/PanoDepthToRgbResult' + - type: 'null' + description: >- + Result payload when done=true and no error. Structure depends on + operation type. title: Response updated_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Last update timestamp title: Updated At required: - - operation_id - - done + - operation_id + - done title: GetOperationResponse[Union[World, PanoDepthToRgbResult]] type: object HTTPValidationError: @@ -239,20 +245,22 @@ components: title: HTTPValidationError type: object ImagePrompt: - description: 'Image-to-world generation. + description: >- + Image-to-world generation. - Generates a world from an image. text_prompt is optional - if not provided, + Generates a world from an image. text_prompt is optional - if not + provided, it will be generated via recaptioning. - Recommended image formats: jpg, jpeg, png, webp.' + Recommended image formats: jpg, jpeg, png, webp. properties: disable_recaption: anyOf: - - type: boolean - - type: 'null' + - type: boolean + - type: 'null' description: If True, use text_prompt as-is without recaptioning title: Disable Recaption image_prompt: @@ -264,20 +272,20 @@ components: uri: '#/components/schemas/UriReference' propertyName: source oneOf: - - $ref: '#/components/schemas/MediaAssetReference' - - $ref: '#/components/schemas/UriReference' - - $ref: '#/components/schemas/DataBase64Reference' + - $ref: '#/components/schemas/MediaAssetReference' + - $ref: '#/components/schemas/UriReference' + - $ref: '#/components/schemas/DataBase64Reference' title: Image Prompt is_pano: anyOf: - - type: boolean - - type: 'null' + - type: boolean + - type: 'null' description: Whether the provided image is already a panorama title: Is Pano text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Optional text guidance (auto-generated if not provided) title: Text Prompt type: @@ -286,7 +294,7 @@ components: title: Type type: string required: - - image_prompt + - image_prompt title: ImagePrompt type: object ImageryAssets: @@ -294,8 +302,8 @@ components: properties: pano_url: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Panorama image URL title: Pano Url title: ImageryAssets @@ -309,8 +317,8 @@ components: $ref: '#/components/schemas/Content' text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Text Prompt type: const: inpaint-pano @@ -318,113 +326,115 @@ components: title: Type type: string required: - - pano_image - - pano_mask + - pano_image + - pano_mask title: InpaintPanoPrompt type: object ListWorldsRequest: description: Request to list API-generated worlds with optional filters. examples: - - model: marble-1.0 - page_size: 20 - sort_by: created_at - status: SUCCEEDED - - page_size: 50 - sort_by: created_at - status: SUCCEEDED - tags: - - fantasy - - nature - - created_after: '2024-01-01T00:00:00Z' - created_before: '2024-12-31T23:59:59Z' - page_size: 100 - sort_by: created_at - - model: marble-1.0-draft - page_size: 30 - tags: - - landscape - - page_size: 20 - page_token: eyJzbmFwc2hvdF90aW1lIjoiMjAyNC0wMS0wMVQwMDowMDowMFoiLCJsYXN0X2NyZWF0ZWRfYXQiOiIyMDI0LTAxLTAxVDAwOjAwOjAwWiIsImxhc3RfaWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ== - sort_by: created_at + - model: marble-1.0 + page_size: 20 + sort_by: created_at + status: SUCCEEDED + - page_size: 50 + sort_by: created_at + status: SUCCEEDED + tags: + - fantasy + - nature + - created_after: '2024-01-01T00:00:00Z' + created_before: '2024-12-31T23:59:59Z' + page_size: 100 + sort_by: created_at + - model: marble-1.0-draft + page_size: 30 + tags: + - landscape + - page_size: 20 + page_token: >- + eyJzbmFwc2hvdF90aW1lIjoiMjAyNC0wMS0wMVQwMDowMDowMFoiLCJsYXN0X2NyZWF0ZWRfYXQiOiIyMDI0LTAxLTAxVDAwOjAwOjAwWiIsImxhc3RfaWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ== + sort_by: created_at properties: created_after: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Filter worlds created after this timestamp (inclusive) title: Created After created_before: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Filter worlds created before this timestamp (exclusive) title: Created Before is_public: anyOf: - - type: boolean - - type: 'null' - description: Filter by visibility. true=public only, false=private only, - null=all + - type: boolean + - type: 'null' + description: Filter by visibility. true=public only, false=private only, null=all title: Is Public model: anyOf: - - enum: - - marble-1.0-draft - - marble-1.0 - - marble-1.1 - - marble-1.1-plus - type: string - - enum: - - Marble 0.1-mini - - Marble 0.1-plus - - Marble 1.1-plus - type: string - - type: 'null' - description: Filter by model used for generation. Legacy names are deprecated; + - enum: + - marble-1.0-draft + - marble-1.0 + - marble-1.1 + - marble-1.1-plus + type: string + - enum: + - Marble 0.1-mini + - Marble 0.1-plus + - Marble 1.1-plus + type: string + - type: 'null' + description: >- + Filter by model used for generation. Legacy names are deprecated; use the new lowercase names. title: Model page_size: default: 20 description: Number of results per page (1-100) - maximum: 100.0 - minimum: 1.0 + maximum: 100 + minimum: 1 title: Page Size type: integer page_token: anyOf: - - type: string - - type: 'null' - description: Cursor token for pagination (opaque base64 string from previous - response). Use cursor from next_page_token in previous response for consistent - pagination. + - type: string + - type: 'null' + description: >- + Cursor token for pagination (opaque base64 string from previous + response). Use cursor from next_page_token in previous response for + consistent pagination. title: Page Token sort_by: default: created_at description: Sort results by created_at or updated_at enum: - - created_at - - updated_at + - created_at + - updated_at title: Sort By type: string status: anyOf: - - enum: - - SUCCEEDED - - PENDING - - FAILED - - RUNNING - type: string - - type: 'null' + - enum: + - SUCCEEDED + - PENDING + - FAILED + - RUNNING + type: string + - type: 'null' description: Filter by world status title: Status tags: anyOf: - - items: - type: string - type: array - - type: 'null' + - items: + type: string + type: array + - type: 'null' description: Filter by tags (returns worlds with ANY of these tags) title: Tags title: ListWorldsRequest @@ -434,8 +444,8 @@ components: properties: next_page_token: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Token for fetching the next page of results title: Next Page Token worlds: @@ -445,16 +455,15 @@ components: title: Worlds type: array required: - - worlds + - worlds title: ListWorldsResponse type: object MediaAsset: - description: 'A user-uploaded media asset stored in managed storage. - + description: |- + A user-uploaded media asset stored in managed storage. MediaAssets can be images, videos, or binary blobs that are used - - as input to world generation.' + as input to world generation. properties: created_at: description: Creation timestamp @@ -463,13 +472,13 @@ components: type: string extension: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: File extension without dot examples: - - mp4 - - png - - jpg + - mp4 + - png + - jpg title: Extension file_name: description: File name @@ -479,38 +488,38 @@ components: $ref: '#/components/schemas/MediaAssetKind' description: High-level media type examples: - - image - - video + - image + - video media_asset_id: description: Server-generated media asset identifier title: Media Asset Id type: string metadata: anyOf: - - additionalProperties: true - type: object - - type: 'null' + - additionalProperties: true + type: object + - type: 'null' description: Optional application-specific metadata title: Metadata updated_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Last update timestamp title: Updated At required: - - media_asset_id - - file_name - - kind - - created_at + - media_asset_id + - file_name + - kind + - created_at title: MediaAsset type: object MediaAssetKind: description: High-level media asset type. enum: - - image - - video + - image + - video title: MediaAssetKind type: string MediaAssetPrepareUploadRequest: @@ -518,13 +527,13 @@ components: properties: extension: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: File extension without dot examples: - - mp4 - - png - - jpg + - mp4 + - png + - jpg title: Extension file_name: description: File name @@ -535,18 +544,18 @@ components: $ref: '#/components/schemas/MediaAssetKind' description: High-level media type examples: - - image - - video + - image + - video metadata: anyOf: - - additionalProperties: true - type: object - - type: 'null' + - additionalProperties: true + type: object + - type: 'null' description: Optional application-specific metadata title: Metadata required: - - file_name - - kind + - file_name + - kind title: MediaAssetPrepareUploadRequest type: object MediaAssetPrepareUploadResponse: @@ -559,8 +568,8 @@ components: $ref: '#/components/schemas/UploadUrlInfo' description: Upload URL information required: - - media_asset - - upload_info + - media_asset + - upload_info title: MediaAssetPrepareUploadResponse type: object MediaAssetReference: @@ -576,7 +585,7 @@ components: title: Source type: string required: - - media_asset_id + - media_asset_id title: MediaAssetReference type: object MeshAssets: @@ -584,25 +593,24 @@ components: properties: collider_mesh_url: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Collider mesh URL title: Collider Mesh Url title: MeshAssets type: object MultiImagePrompt-Input: - description: 'Multi-image-to-world generation. - + description: |- + Multi-image-to-world generation. Generates a world from multiple images. text_prompt is optional. - - Recommended image formats: jpg, jpeg, png, webp.' + Recommended image formats: jpg, jpeg, png, webp. properties: disable_recaption: anyOf: - - type: boolean - - type: 'null' + - type: boolean + - type: 'null' description: If True, use text_prompt as-is without recaptioning title: Disable Recaption multi_image_prompt: @@ -613,14 +621,15 @@ components: type: array reconstruct_images: default: false - description: Whether to use reconstruction mode (allows up to 8 images, - otherwise 4) + description: >- + Whether to use reconstruction mode (allows up to 8 images, otherwise + 4) title: Reconstruct Images type: boolean text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Optional text guidance (auto-generated if not provided) title: Text Prompt type: @@ -629,7 +638,7 @@ components: title: Type type: string required: - - multi_image_prompt + - multi_image_prompt title: MultiImagePrompt type: object MultiImagePrompt-Output: @@ -646,8 +655,8 @@ components: type: boolean text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Text Prompt type: const: multi-image @@ -655,7 +664,7 @@ components: title: Type type: string required: - - multi_image_prompt + - multi_image_prompt title: MultiImagePrompt type: object OperationError: @@ -663,14 +672,14 @@ components: properties: code: anyOf: - - type: integer - - type: 'null' + - type: integer + - type: 'null' description: Error code title: Code message: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Error message title: Message title: OperationError @@ -679,9 +688,9 @@ components: properties: created_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Creation timestamp title: Created At done: @@ -690,21 +699,21 @@ components: type: boolean error: anyOf: - - $ref: '#/components/schemas/OperationError' - - type: 'null' + - $ref: '#/components/schemas/OperationError' + - type: 'null' description: Error information if the operation failed expires_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Expiration timestamp title: Expires At metadata: anyOf: - - additionalProperties: true - type: object - - type: 'null' + - additionalProperties: true + type: object + - type: 'null' description: Service-specific metadata, such as progress percentage title: Metadata operation_id: @@ -713,50 +722,75 @@ components: type: string response: anyOf: - - $ref: '#/components/schemas/PanoDepthToRgbResult' - - type: 'null' - description: Result payload when done=true and no error. Structure depends - on operation type. + - $ref: '#/components/schemas/PanoDepthToRgbResult' + - type: 'null' + description: >- + Result payload when done=true and no error. Structure depends on + operation type. updated_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Last update timestamp title: Updated At required: - - operation_id - - done + - operation_id + - done title: Operation[PanoDepthToRgbResult] type: object PanoDepthToRgbRequest: - description: "Request to generate an RGB panorama from a depth panorama.\n\n\ - Provide a depth panorama and a text prompt describing\nthe desired appearance.\ - \ The depth map supplies the\nscene geometry; the model synthesizes textures\ - \ that\nloosely adhere to that geometry and returns a panoramic RGB image.\n\ - \nAccepted depth inputs:\n\n* **EXR**: float depth values. Omit ``z_min``\n\ - \ and ``z_max``.\n* **PNG**: depth values normalized to [0, 1].\n Provide\ - \ both ``z_min`` and ``z_max`` so the service\n can decode the PNG back into\ - \ metric depth.\n\nFor a complete PNG-based workflow, see the\n`web-chisel-depth-png\ - \ example `.\n\ - \nThis endpoint returns a long-running ``Operation``.\nPoll ``GET /operations/{operation_id}``\ - \ until\n``done`` is ``true``, then read the generated\npanorama URL from\ - \ ``response.pano_url``." + description: >- + Request to generate an RGB panorama from a depth panorama. + + + Provide a depth panorama and a text prompt describing + + the desired appearance. The depth map supplies the + + scene geometry; the model synthesizes textures that + + loosely adhere to that geometry and returns a panoramic RGB image. + + + Accepted depth inputs: + + + * **EXR**: float depth values. Omit ``z_min`` + and ``z_max``. + * **PNG**: depth values normalized to [0, 1]. + Provide both ``z_min`` and ``z_max`` so the service + can decode the PNG back into metric depth. + + For a complete PNG-based workflow, see the + + `web-chisel-depth-png example + `. + + + This endpoint returns a long-running ``Operation``. + + Poll ``GET /operations/{operation_id}`` until + + ``done`` is ``true``, then read the generated + + panorama URL from ``response.pano_url``. examples: - - depth_pano_image: - source: uri - uri: https://example.com/depth.exr - text_prompt: A cozy cabin interior with warm wooden walls - - depth_pano_image: - source: uri - uri: https://example.com/depth.png - text_prompt: A futuristic space station - z_max: 100.0 - z_min: 0.1 + - depth_pano_image: + source: uri + uri: https://example.com/depth.exr + text_prompt: A cozy cabin interior with warm wooden walls + - depth_pano_image: + source: uri + uri: https://example.com/depth.png + text_prompt: A futuristic space station + z_max: 100 + z_min: 0.1 properties: depth_pano_image: - description: Depth panorama image (EXR or PNG). Provide via URI, media_asset, - or base64 (max 100 MB). + description: >- + Depth panorama image (EXR or PNG). Provide via URI, media_asset, or + base64 (max 100 MB). discriminator: mapping: data_base64: '#/components/schemas/DataBase64Reference' @@ -764,16 +798,16 @@ components: uri: '#/components/schemas/UriReference' propertyName: source oneOf: - - $ref: '#/components/schemas/MediaAssetReference' - - $ref: '#/components/schemas/UriReference' - - $ref: '#/components/schemas/DataBase64Reference' + - $ref: '#/components/schemas/MediaAssetReference' + - $ref: '#/components/schemas/UriReference' + - $ref: '#/components/schemas/DataBase64Reference' title: Depth Pano Image seed: anyOf: - - maximum: 4294967295.0 - minimum: 0.0 - type: integer - - type: 'null' + - maximum: 4294967295 + minimum: 0 + type: integer + - type: 'null' description: Random seed for reproducible generation. title: Seed text_prompt: @@ -782,39 +816,41 @@ components: type: string z_max: anyOf: - - exclusiveMinimum: 0.0 - type: number - - type: 'null' - description: Maximum depth. Required for PNG depth maps (normalized to [0, - 1]). Must be provided together with z_min and must be greater than z_min. + - exclusiveMinimum: 0 + type: number + - type: 'null' + description: >- + Maximum depth. Required for PNG depth maps (normalized to [0, 1]). + Must be provided together with z_min and must be greater than z_min. Omit for EXR depth maps. title: Z Max z_min: anyOf: - - exclusiveMinimum: 0.0 - type: number - - type: 'null' - description: Minimum depth. Required for PNG depth maps (normalized to [0, - 1]). Must be provided together with z_max. Omit for EXR depth maps. + - exclusiveMinimum: 0 + type: number + - type: 'null' + description: >- + Minimum depth. Required for PNG depth maps (normalized to [0, 1]). + Must be provided together with z_max. Omit for EXR depth maps. title: Z Min required: - - depth_pano_image - - text_prompt + - depth_pano_image + - text_prompt title: PanoDepthToRgbRequest type: object PanoDepthToRgbResult: - description: 'Result from depth-to-RGB panorama generation. - + description: |- + Result from depth-to-RGB panorama generation. Returned inside ``Operation.response`` when the - - operation completes successfully (``done=true``).' + operation completes successfully (``done=true``). properties: pano_url: anyOf: - - type: string - - type: 'null' - description: URL of the generated RGB panorama image. Available when the + - type: string + - type: 'null' + description: >- + URL of the generated RGB panorama image. Available when the operation succeeds. title: Pano Url title: PanoDepthToRgbResult @@ -843,11 +879,10 @@ components: title: Permission type: object Prompt: - description: 'For world models generating a world from a single image (+ text). - + description: |- + For world models generating a world from a single image (+ text). Images can be generated using the :image-generation method. - - If no text prompt is provided, it will be generated via recaption.' + If no text prompt is provided, it will be generated via recaption. properties: image_prompt: $ref: '#/components/schemas/Content' @@ -857,8 +892,8 @@ components: type: boolean text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Text Prompt type: const: image @@ -866,7 +901,7 @@ components: title: Type type: string required: - - image_prompt + - image_prompt title: Prompt type: object SphericallyLocatedContent-Input: @@ -874,8 +909,8 @@ components: properties: azimuth: anyOf: - - type: number - - type: 'null' + - type: number + - type: 'null' description: Azimuth angle in degrees title: Azimuth content: @@ -887,12 +922,12 @@ components: uri: '#/components/schemas/UriReference' propertyName: source oneOf: - - $ref: '#/components/schemas/MediaAssetReference' - - $ref: '#/components/schemas/UriReference' - - $ref: '#/components/schemas/DataBase64Reference' + - $ref: '#/components/schemas/MediaAssetReference' + - $ref: '#/components/schemas/UriReference' + - $ref: '#/components/schemas/DataBase64Reference' title: Content required: - - content + - content title: SphericallyLocatedContent type: object SphericallyLocatedContent-Output: @@ -900,29 +935,29 @@ components: properties: azimuth: anyOf: - - type: number - - type: 'null' + - type: number + - type: 'null' title: Azimuth data_base64: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Data Base64 extension: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: File extension without dot examples: - - jpg - - png - - pdf - - txt + - jpg + - png + - pdf + - txt title: Extension uri: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Uri title: SphericallyLocatedContent type: object @@ -931,15 +966,15 @@ components: properties: semantics_metadata: anyOf: - - $ref: '#/components/schemas/WorldSemanticsMetadata' - - type: 'null' + - $ref: '#/components/schemas/WorldSemanticsMetadata' + - type: 'null' description: Semantic metadata for the world spz_urls: anyOf: - - additionalProperties: - type: string - type: object - - type: 'null' + - additionalProperties: + type: string + type: object + - type: 'null' description: URLs for SPZ format Gaussian splat files title: Spz Urls title: SplatAssets @@ -949,16 +984,16 @@ components: properties: curl_example: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Optional curl example for convenience title: Curl Example required_headers: anyOf: - - additionalProperties: - type: string - type: object - - type: 'null' + - additionalProperties: + type: string + type: object + - type: 'null' description: Headers that MUST be included when uploading (e.g. Content-Type) title: Required Headers upload_method: @@ -970,8 +1005,8 @@ components: title: Upload Url type: string required: - - upload_url - - upload_method + - upload_url + - upload_method title: UploadUrlInfo type: object UriReference: @@ -987,7 +1022,7 @@ components: title: Uri type: string required: - - uri + - uri title: UriReference type: object ValidationError: @@ -995,8 +1030,8 @@ components: loc: items: anyOf: - - type: string - - type: integer + - type: string + - type: integer title: Location type: array msg: @@ -1006,32 +1041,30 @@ components: title: Error Type type: string required: - - loc - - msg - - type + - loc + - msg + - type title: ValidationError type: object VideoPrompt-Input: - description: 'Video-to-world generation. - + description: |- + Video-to-world generation. Generates a world from a video. text_prompt is optional. - Recommended video formats: mp4, webm, mov, avi. - - Maximum video size: 100MB.' + Maximum video size: 100MB. properties: disable_recaption: anyOf: - - type: boolean - - type: 'null' + - type: boolean + - type: 'null' description: If True, use text_prompt as-is without recaptioning title: Disable Recaption text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Optional text guidance (auto-generated if not provided) title: Text Prompt type: @@ -1048,12 +1081,12 @@ components: uri: '#/components/schemas/UriReference' propertyName: source oneOf: - - $ref: '#/components/schemas/MediaAssetReference' - - $ref: '#/components/schemas/UriReference' - - $ref: '#/components/schemas/DataBase64Reference' + - $ref: '#/components/schemas/MediaAssetReference' + - $ref: '#/components/schemas/UriReference' + - $ref: '#/components/schemas/DataBase64Reference' title: Video Prompt required: - - video_prompt + - video_prompt title: VideoPrompt type: object VideoPrompt-Output: @@ -1061,8 +1094,8 @@ components: properties: text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Text Prompt type: const: video @@ -1072,7 +1105,7 @@ components: video_prompt: $ref: '#/components/schemas/Content' required: - - video_prompt + - video_prompt title: VideoPrompt type: object World: @@ -1080,14 +1113,14 @@ components: properties: assets: anyOf: - - $ref: '#/components/schemas/WorldAssets' - - type: 'null' + - $ref: '#/components/schemas/WorldAssets' + - type: 'null' description: Generated world assets created_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Creation timestamp title: Created At display_name: @@ -1096,28 +1129,28 @@ components: type: string model: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Model used for generation title: Model permission: anyOf: - - $ref: '#/components/schemas/Permission' - - type: 'null' + - $ref: '#/components/schemas/Permission' + - type: 'null' description: Access control permissions for the world tags: anyOf: - - items: - type: string - type: array - - type: 'null' + - items: + type: string + type: array + - type: 'null' description: Tags associated with the world title: Tags updated_at: anyOf: - - format: date-time - type: string - - type: 'null' + - format: date-time + type: string + - type: 'null' description: Last update timestamp title: Updated At world_id: @@ -1130,29 +1163,29 @@ components: type: string world_prompt: anyOf: - - discriminator: - mapping: - depth-pano: '#/components/schemas/DepthPanoPrompt' - image: '#/components/schemas/Prompt' - inpaint-pano: '#/components/schemas/InpaintPanoPrompt' - multi-image: '#/components/schemas/MultiImagePrompt-Output' - text: '#/components/schemas/WorldTextPrompt-Output' - video: '#/components/schemas/VideoPrompt-Output' - propertyName: type - oneOf: - - $ref: '#/components/schemas/WorldTextPrompt-Output' - - $ref: '#/components/schemas/Prompt' - - $ref: '#/components/schemas/MultiImagePrompt-Output' - - $ref: '#/components/schemas/VideoPrompt-Output' - - $ref: '#/components/schemas/DepthPanoPrompt' - - $ref: '#/components/schemas/InpaintPanoPrompt' - - type: 'null' + - discriminator: + mapping: + depth-pano: '#/components/schemas/DepthPanoPrompt' + image: '#/components/schemas/Prompt' + inpaint-pano: '#/components/schemas/InpaintPanoPrompt' + multi-image: '#/components/schemas/MultiImagePrompt-Output' + text: '#/components/schemas/WorldTextPrompt-Output' + video: '#/components/schemas/VideoPrompt-Output' + propertyName: type + oneOf: + - $ref: '#/components/schemas/WorldTextPrompt-Output' + - $ref: '#/components/schemas/Prompt' + - $ref: '#/components/schemas/MultiImagePrompt-Output' + - $ref: '#/components/schemas/VideoPrompt-Output' + - $ref: '#/components/schemas/DepthPanoPrompt' + - $ref: '#/components/schemas/InpaintPanoPrompt' + - type: 'null' description: World prompt title: World Prompt required: - - world_id - - display_name - - world_marble_url + - world_id + - display_name + - world_marble_url title: World type: object WorldAssets: @@ -1160,29 +1193,29 @@ components: properties: caption: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: AI-generated description of the world title: Caption imagery: anyOf: - - $ref: '#/components/schemas/ImageryAssets' - - type: 'null' + - $ref: '#/components/schemas/ImageryAssets' + - type: 'null' description: Imagery assets mesh: anyOf: - - $ref: '#/components/schemas/MeshAssets' - - type: 'null' + - $ref: '#/components/schemas/MeshAssets' + - type: 'null' description: Mesh assets splats: anyOf: - - $ref: '#/components/schemas/SplatAssets' - - type: 'null' + - $ref: '#/components/schemas/SplatAssets' + - type: 'null' description: Gaussian splat assets thumbnail_url: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Thumbnail URL for the world title: Thumbnail Url title: WorldAssets @@ -1199,8 +1232,8 @@ components: properties: ground_plane_offset: anyOf: - - type: number - - type: 'null' + - type: number + - type: 'null' title: Ground Plane Offset description: | Vertical (Y-axis) offset, in meters, of the detected ground plane @@ -1208,8 +1241,8 @@ components: `metric_scale_factor` to place the ground at y=0. metric_scale_factor: anyOf: - - type: number - - type: 'null' + - type: number + - type: 'null' title: Metric Scale Factor description: | Multiplicative factor that converts raw asset coordinates to @@ -1219,21 +1252,21 @@ components: title: WorldSemanticsMetadata type: object WorldTextPrompt-Input: - description: 'Text-to-world generation. - + description: |- + Text-to-world generation. - Generates a world from a text description. text_prompt is REQUIRED.' + Generates a world from a text description. text_prompt is REQUIRED. properties: disable_recaption: anyOf: - - type: boolean - - type: 'null' + - type: boolean + - type: 'null' description: If True, use text_prompt as-is without recaptioning title: Disable Recaption text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' description: Optional text guidance (auto-generated if not provided) title: Text Prompt type: @@ -1248,8 +1281,8 @@ components: properties: text_prompt: anyOf: - - type: string - - type: 'null' + - type: string + - type: 'null' title: Text Prompt type: const: text @@ -1259,74 +1292,76 @@ components: title: WorldTextPrompt type: object WorldsGenerateRequest: - description: Request to generate a world from text, image, multi-image, or video + description: >- + Request to generate a world from text, image, multi-image, or video input. examples: - - display_name: Enchanted Forest - model: marble-1.0 - permission: - public: false - seed: 42 - tags: - - fantasy - - nature - world_prompt: - text_prompt: A mystical forest with glowing mushrooms - type: text - - display_name: World from Image - model: marble-1.0-draft - world_prompt: - image_prompt: - source: uri - uri: https://example.com/my-image.jpg - is_pano: false - text_prompt: A beautiful landscape - type: image - - permission: - public: true - world_prompt: - type: video - video_prompt: - media_asset_id: 550e8400e29b41d4a716446655440000 - source: media_asset - - display_name: World from Multiple Images - model: marble-1.1 - world_prompt: - multi_image_prompt: - - azimuth: 0 - content: - source: uri - uri: https://example.com/image1.jpg - - azimuth: 180 - content: + - display_name: Enchanted Forest + model: marble-1.0 + permission: + public: false + seed: 42 + tags: + - fantasy + - nature + world_prompt: + text_prompt: A mystical forest with glowing mushrooms + type: text + - display_name: World from Image + model: marble-1.0-draft + world_prompt: + image_prompt: source: uri - uri: https://example.com/image2.jpg - type: multi-image + uri: https://example.com/my-image.jpg + is_pano: false + text_prompt: A beautiful landscape + type: image + - permission: + public: true + world_prompt: + type: video + video_prompt: + media_asset_id: 550e8400e29b41d4a716446655440000 + source: media_asset + - display_name: World from Multiple Images + model: marble-1.1 + world_prompt: + multi_image_prompt: + - azimuth: 0 + content: + source: uri + uri: https://example.com/image1.jpg + - azimuth: 180 + content: + source: uri + uri: https://example.com/image2.jpg + type: multi-image properties: display_name: anyOf: - - maxLength: 64 - type: string - - type: 'null' + - maxLength: 64 + type: string + - type: 'null' description: Optional display name (max 64 characters) title: Display Name model: anyOf: - - enum: - - marble-1.0-draft - - marble-1.0 - - marble-1.1 - - marble-1.1-plus - type: string - - enum: - - Marble 0.1-mini - - Marble 0.1-plus - - Marble 1.1-plus - type: string + - enum: + - marble-1.0-draft + - marble-1.0 + - marble-1.1 + - marble-1.1-plus + type: string + - enum: + - Marble 0.1-mini + - Marble 0.1-plus + - Marble 1.1-plus + type: string default: marble-1.0 - description: The model to use for generation. marble-1.1-plus includes dynamic - world sizing. Legacy names ('Marble 0.1-plus', etc.) still work but are - deprecated and will be removed in a future release. + description: >- + The model to use for generation. marble-1.1-plus includes dynamic + world sizing. Legacy names ('Marble 0.1-plus', etc.) still work but + are deprecated and will be removed in a future release. title: Model permission: $ref: '#/components/schemas/Permission' @@ -1338,19 +1373,19 @@ components: description: The permission for the world seed: anyOf: - - maximum: 4294967295.0 - minimum: 0.0 - type: integer - - type: 'null' + - maximum: 4294967295 + minimum: 0 + type: integer + - type: 'null' description: Random seed for generation title: Seed tags: anyOf: - - items: - type: string - maxItems: 10 - type: array - - type: 'null' + - items: + type: string + maxItems: 10 + type: array + - type: 'null' description: Optional tags for the world (max 10 tags, each up to 32 characters) title: Tags world_prompt: @@ -1363,13 +1398,13 @@ components: video: '#/components/schemas/VideoPrompt-Input' propertyName: type oneOf: - - $ref: '#/components/schemas/WorldTextPrompt-Input' - - $ref: '#/components/schemas/ImagePrompt' - - $ref: '#/components/schemas/MultiImagePrompt-Input' - - $ref: '#/components/schemas/VideoPrompt-Input' + - $ref: '#/components/schemas/WorldTextPrompt-Input' + - $ref: '#/components/schemas/ImagePrompt' + - $ref: '#/components/schemas/MultiImagePrompt-Input' + - $ref: '#/components/schemas/VideoPrompt-Input' title: World Prompt required: - - world_prompt + - world_prompt title: WorldsGenerateRequest type: object securitySchemes: @@ -1387,10 +1422,15 @@ openapi: 3.1.0 paths: /marble/v1/credits: get: - description: "Get remaining API credits for the authenticated user.\n\nReturns:\n\ - \ CreditsResponse with the current aggregate API credit balance.\n\nRaises:\n\ - \ HTTPException: 404 if the caller is not an API-enabled user\n HTTPException:\ - \ 503 if the billing backend is unavailable" + description: |- + Get remaining API credits for the authenticated user. + + Returns: + CreditsResponse with the current aggregate API credit balance. + + Raises: + HTTPException: 404 if the caller is not an API-enabled user + HTTPException: 503 if the billing backend is unavailable operationId: get_credits_marble_v1_credits_get responses: '200': @@ -1416,19 +1456,28 @@ paths: summary: Healthz /marble/v1/media-assets/{media_asset_id}: get: - description: "Get a media asset by ID.\n\nRetrieves metadata for a previously\ - \ created media asset.\n\nArgs:\n media_asset_id: The media asset identifier.\n\ - \nReturns:\n MediaAsset object with media_asset_id, file_name, extension,\ - \ kind,\n metadata, created_at, and updated_at.\n\nRaises:\n HTTPException:\ - \ 404 if not found" + description: |- + Get a media asset by ID. + + Retrieves metadata for a previously created media asset. + + Args: + media_asset_id: The media asset identifier. + + Returns: + MediaAsset object with media_asset_id, file_name, extension, kind, + metadata, created_at, and updated_at. + + Raises: + HTTPException: 404 if not found operationId: get_media_asset_marble_v1_media_assets__media_asset_id__get parameters: - - in: path - name: media_asset_id - required: true - schema: - title: Media Asset Id - type: string + - in: path + name: media_asset_id + required: true + schema: + title: Media Asset Id + type: string responses: '200': content: @@ -1445,31 +1494,104 @@ paths: summary: Get Media Asset /marble/v1/media-assets:prepare_upload: post: - description: "Prepare a media asset upload for use in world generation.\n\n\ - This API endpoint creates a media asset record and returns a signed upload\ - \ URL.\nUse this workflow to upload images or videos that you want to reference\ - \ in world\ngeneration requests.\n\n## Workflow\n\n1. **Prepare Upload** (this\ - \ endpoint): Get a `media_asset_id` and `upload_url`\n2. **Upload File**:\ - \ Use the signed URL to upload your file\n3. **Generate World**: Reference\ - \ the `media_asset_id` in `/worlds:generate` with\n source type \"media_asset\"\ - \n\n## Request Parameters\n\n- `file_name`: Your file's name (e.g., \"landscape.jpg\"\ - )\n- `extension`: File extension without dot (e.g., \"jpg\", \"png\", \"mp4\"\ - )\n- `kind`: Either \"image\" or \"video\"\n- `metadata`: Optional custom\ - \ metadata object\n\n## Response\n\nReturns a `MediaAssetPrepareUploadResponse`\ - \ containing:\n\n- `media_asset`: Object with `media_asset_id` (use this in\ - \ world generation)\n- `upload_info`: Object with `upload_url`, `required_headers`,\ - \ and `curl_example`\n\n## Uploading Your File\n\nUse the returned `upload_url`\ - \ and `required_headers` to upload your file:\n\n```bash\ncurl --request PUT\ - \ \\\n --url \\\n --header \"Content-Type: \"\ - \ \\\n --header \": \" \\\n --upload-file /path/to/your/file\n\ - ```\n\nReplace:\n- ``: The `upload_url` from the response\n- ``:\ - \ MIME type (e.g., `image/png`, `image/jpeg`, `video/mp4`)\n- `:\ - \ `: Each header from `required_headers`\n- `/path/to/your/file`:\ - \ Path to your local file\n\n## Example Usage in World Generation\n\nAfter\ - \ uploading, use the `media_asset_id` in a world generation request:\n\n```json\n\ - {\n \"world_prompt\": {\n \"type\": \"image\",\n \"image_prompt\":\ - \ {\n \"source\": \"media_asset\",\n \"media_asset_id\": \"\"\ - \n }\n }\n}\n```" + description: >- + Prepare a media asset upload for use in world generation. + + + This API endpoint creates a media asset record and returns a signed + upload URL. + + Use this workflow to upload images or videos that you want to reference + in world + + generation requests. + + + ## Workflow + + + 1. **Prepare Upload** (this endpoint): Get a `media_asset_id` and + `upload_url` + + 2. **Upload File**: Use the signed URL to upload your file + + 3. **Generate World**: Reference the `media_asset_id` in + `/worlds:generate` with + source type "media_asset" + + ## Request Parameters + + + - `file_name`: Your file's name (e.g., "landscape.jpg") + + - `extension`: File extension without dot (e.g., "jpg", "png", "mp4") + + - `kind`: Either "image" or "video" + + - `metadata`: Optional custom metadata object + + + ## Response + + + Returns a `MediaAssetPrepareUploadResponse` containing: + + + - `media_asset`: Object with `media_asset_id` (use this in world + generation) + + - `upload_info`: Object with `upload_url`, `required_headers`, and + `curl_example` + + + ## Uploading Your File + + + Use the returned `upload_url` and `required_headers` to upload your + file: + + + ```bash + + curl --request PUT \ + --url \ + --header "Content-Type: " \ + --header ": " \ + --upload-file /path/to/your/file + ``` + + + Replace: + + - ``: The `upload_url` from the response + + - ``: MIME type (e.g., `image/png`, `image/jpeg`, + `video/mp4`) + + - `: `: Each header from `required_headers` + + - `/path/to/your/file`: Path to your local file + + + ## Example Usage in World Generation + + + After uploading, use the `media_asset_id` in a world generation request: + + + ```json + + { + "world_prompt": { + "type": "image", + "image_prompt": { + "source": "media_asset", + "media_asset_id": "" + } + } + } + + ``` operationId: prepare_media_asset_upload_marble_v1_media_assets_prepare_upload_post requestBody: content: @@ -1493,32 +1615,45 @@ paths: summary: Prepare a media asset upload /marble/v1/operations/{operation_id}: get: - description: "Get an operation by ID.\n\nPoll this endpoint to check the status\ - \ of a long-running operation.\nWhen done=true, the response field contains\ - \ the generated world.\n\nArgs:\n operation_id: The operation identifier\ - \ from /worlds:generate.\n\nReturns:\n GetOperationResponse[World] with:\n\ - \ - operation_id: Operation identifier\n - created_at: Creation\ - \ timestamp\n - updated_at: Last update timestamp\n - expires_at:\ - \ Expiration timestamp\n - done: true when complete, false while in\ - \ progress\n - error: Error details if failed, null otherwise\n \ - \ - metadata: Progress information and world_id\n - response: Generated\ - \ World if done=true, null otherwise\n\nRaises:\n HTTPException: 401 if\ - \ unauthorized\n HTTPException: 404 if operation not found\n HTTPException:\ - \ 500 if request fails" + description: |- + Get an operation by ID. + + Poll this endpoint to check the status of a long-running operation. + When done=true, the response field contains the generated world. + + Args: + operation_id: The operation identifier from /worlds:generate. + + Returns: + GetOperationResponse[World] with: + - operation_id: Operation identifier + - created_at: Creation timestamp + - updated_at: Last update timestamp + - expires_at: Expiration timestamp + - done: true when complete, false while in progress + - error: Error details if failed, null otherwise + - metadata: Progress information and world_id + - response: Generated World if done=true, null otherwise + + Raises: + HTTPException: 401 if unauthorized + HTTPException: 404 if operation not found + HTTPException: 500 if request fails operationId: get_operation_marble_v1_operations__operation_id__get parameters: - - in: path - name: operation_id - required: true - schema: - title: Operation Id - type: string + - in: path + name: operation_id + required: true + schema: + title: Operation Id + type: string responses: '200': content: application/json: schema: - $ref: '#/components/schemas/GetOperationResponse_Union_World__PanoDepthToRgbResult__' + $ref: >- + #/components/schemas/GetOperationResponse_Union_World__PanoDepthToRgbResult__ description: Successful Response '422': content: @@ -1529,19 +1664,49 @@ paths: summary: Get Operation /marble/v1/pano:depth_to_rgb: post: - description: "Generate an RGB panorama from a depth panorama.\n\nProvide a depth\ - \ panorama and a text prompt\ndescribing the desired appearance. The depth\ - \ map\nsupplies the scene geometry; the model synthesizes\ntextures that match\ - \ that geometry and returns a\npanoramic RGB image.\n\nAccepted depth inputs:\n\ - \n* **EXR**: float depth values. Omit\n ``z_min`` and ``z_max``.\n* **PNG**:\ - \ depth values normalized to [0, 1].\n Provide both ``z_min`` and ``z_max``\ - \ so the\n service can decode the PNG correctly.\n\nFor a complete PNG-based\ - \ workflow, see the\n[web-chisel-depth-png example](https://github.com/worldlabsai/worldlabs-api-examples/tree/main/web-chisel-depth-png).\n\ - \nReturns a long-running ``Operation``. Poll\n``GET /operations/{operation_id}``\ - \ until\n``done`` is ``true``, then read the generated\npanorama URL from\ - \ ``response.pano_url``.\n\nRaises:\n HTTPException: 400 if invalid request\n\ - \ HTTPException: 402 if insufficient credits\n HTTPException: 500 if\ - \ generation could not start" + description: >- + Generate an RGB panorama from a depth panorama. + + + Provide a depth panorama and a text prompt + + describing the desired appearance. The depth map + + supplies the scene geometry; the model synthesizes + + textures that match that geometry and returns a + + panoramic RGB image. + + + Accepted depth inputs: + + + * **EXR**: float depth values. Omit + ``z_min`` and ``z_max``. + * **PNG**: depth values normalized to [0, 1]. + Provide both ``z_min`` and ``z_max`` so the + service can decode the PNG correctly. + + For a complete PNG-based workflow, see the + + [web-chisel-depth-png + example](https://github.com/worldlabsai/worldlabs-api-examples/tree/main/web-chisel-depth-png). + + + Returns a long-running ``Operation``. Poll + + ``GET /operations/{operation_id}`` until + + ``done`` is ``true``, then read the generated + + panorama URL from ``response.pano_url``. + + + Raises: + HTTPException: 400 if invalid request + HTTPException: 402 if insufficient credits + HTTPException: 500 if generation could not start operationId: pano_depth_to_rgb_marble_v1_pano_depth_to_rgb_post requestBody: content: @@ -1560,8 +1725,9 @@ paths: content: application/json: example: - detail: Insufficient API credits to start this request. Add credits - or enable auto-refill at https://platform.worldlabs.ai/billing. + detail: >- + Insufficient API credits to start this request. Add credits or + enable auto-refill at https://platform.worldlabs.ai/billing. schema: additionalProperties: true type: object @@ -1575,20 +1741,30 @@ paths: summary: Pano Depth To Rgb /marble/v1/worlds/{world_id}: delete: - description: "Delete a world by ID.\n\nPermanently deletes a world and its associated\ - \ assets.\nOnly the world owner can delete a world.\n\nArgs:\n world_id:\ - \ The unique identifier of the world to delete.\n\nReturns:\n DeleteWorldResponse\ - \ confirming the deletion.\n\nRaises:\n HTTPException: 403 if user is not\ - \ the world owner\n HTTPException: 404 if world not found\n HTTPException:\ - \ 500 if deletion fails" + description: |- + Delete a world by ID. + + Permanently deletes a world and its associated assets. + Only the world owner can delete a world. + + Args: + world_id: The unique identifier of the world to delete. + + Returns: + DeleteWorldResponse confirming the deletion. + + Raises: + HTTPException: 403 if user is not the world owner + HTTPException: 404 if world not found + HTTPException: 500 if deletion fails operationId: delete_world_marble_v1_worlds__world_id__delete parameters: - - in: path - name: world_id - required: true - schema: - title: World Id - type: string + - in: path + name: world_id + required: true + schema: + title: World Id + type: string responses: '200': content: @@ -1604,21 +1780,33 @@ paths: description: Validation Error summary: Delete World get: - description: "Get a world by ID.\n\nRetrieves a world's details including generated\ - \ assets if available.\nOnly the world owner or users with access to public\ - \ worlds can retrieve them.\n\nArgs:\n world_id: The unique identifier\ - \ of the world.\n\nReturns:\n World object with world_id, display_name,\ - \ tags, assets, created_at,\n updated_at, permission, model, world_prompt,\ - \ and world_marble_url.\n\nRaises:\n HTTPException: 404 if world not found\ - \ or access denied" + description: >- + Get a world by ID. + + + Retrieves a world's details including generated assets if available. + + Only the world owner or users with access to public worlds can retrieve + them. + + + Args: + world_id: The unique identifier of the world. + + Returns: + World object with world_id, display_name, tags, assets, created_at, + updated_at, permission, model, world_prompt, and world_marble_url. + + Raises: + HTTPException: 404 if world not found or access denied operationId: get_world_marble_v1_worlds__world_id__get parameters: - - in: path - name: world_id - required: true - schema: - title: World Id - type: string + - in: path + name: world_id + required: true + schema: + title: World Id + type: string responses: '200': content: @@ -1635,16 +1823,25 @@ paths: summary: Get World /marble/v1/worlds:generate: post: - description: "Start world generation.\n\nCreates a new world generation job\ - \ and returns a long-running operation.\nPoll the /operations/{operation_id}\ - \ endpoint to check generation status\nand retrieve the generated world when\ - \ complete.\n\nArgs:\n request: The world generation request containing\ - \ world_prompt, display_name,\n tags, model, seed, and permission settings.\n\ - \nReturns:\n GenerateWorldResponse with operation_id and timestamps. Use\ - \ the operation_id\n to poll for completion.\n\nRaises:\n HTTPException:\ - \ 400 if invalid request or content violates policies\n HTTPException:\ - \ 402 if insufficient credits\n HTTPException: 500 if generation could\ - \ not be started" + description: |- + Start world generation. + + Creates a new world generation job and returns a long-running operation. + Poll the /operations/{operation_id} endpoint to check generation status + and retrieve the generated world when complete. + + Args: + request: The world generation request containing world_prompt, display_name, + tags, model, seed, and permission settings. + + Returns: + GenerateWorldResponse with operation_id and timestamps. Use the operation_id + to poll for completion. + + Raises: + HTTPException: 400 if invalid request or content violates policies + HTTPException: 402 if insufficient credits + HTTPException: 500 if generation could not be started operationId: generate_world_marble_v1_worlds_generate_post requestBody: content: @@ -1663,8 +1860,9 @@ paths: content: application/json: example: - detail: Insufficient API credits to start this request. Add credits - or enable auto-refill at https://platform.worldlabs.ai/billing. + detail: >- + Insufficient API credits to start this request. Add credits or + enable auto-refill at https://platform.worldlabs.ai/billing. schema: additionalProperties: true type: object @@ -1678,19 +1876,32 @@ paths: summary: Generate World /marble/v1/worlds:list: post: - description: "List worlds with optional filters.\n\nReturns worlds created through\ - \ the API with optional filtering and pagination.\n\nArgs:\n request: List\ - \ request with optional filters:\n - page_size: Number of results per\ - \ page (default: 10)\n - page_token: Pagination token from previous\ - \ response\n - status: Filter by status (e.g., \"COMPLETED\")\n \ - \ - model: Filter by model name (e.g., \"marble-1.0-plus\")\n -\ - \ tags: Filter by tags (matches worlds with any tag)\n - is_public:\ - \ Filter by visibility (true=public, false=private, null=all)\n - created_after:\ - \ Filter by creation time (after timestamp)\n - created_before: Filter\ - \ by creation time (before timestamp)\n - sort_by: Sort order (\"created_at\"\ - \ or \"updated_at\")\n\nReturns:\n ListWorldsResponse with worlds list\ - \ and next_page_token for pagination.\n\nRaises:\n HTTPException: 400 if\ - \ invalid parameters\n HTTPException: 500 if request fails" + description: >- + List worlds with optional filters. + + + Returns worlds created through the API with optional filtering and + pagination. + + + Args: + request: List request with optional filters: + - page_size: Number of results per page (default: 10) + - page_token: Pagination token from previous response + - status: Filter by status (e.g., "COMPLETED") + - model: Filter by model name (e.g., "marble-1.0-plus") + - tags: Filter by tags (matches worlds with any tag) + - is_public: Filter by visibility (true=public, false=private, null=all) + - created_after: Filter by creation time (after timestamp) + - created_before: Filter by creation time (before timestamp) + - sort_by: Sort order ("created_at" or "updated_at") + + Returns: + ListWorldsResponse with worlds list and next_page_token for pagination. + + Raises: + HTTPException: 400 if invalid parameters + HTTPException: 500 if request fails operationId: list_worlds_marble_v1_worlds_list_post requestBody: content: @@ -1713,7 +1924,7 @@ paths: description: Validation Error summary: List Worlds security: -- ApiKeyAuth: [] + - ApiKeyAuth: [] servers: -- description: World API - url: https://api.worldlabs.ai + - description: World API + url: https://api.worldlabs.ai