{"openapi":"3.1.0","info":{"title":"Virtuall External API","version":"1.0.0","description":"REST API for external integrations with the Virtuall platform.\n\n## Authentication\nAll endpoints except `/v1/health`, `/v1/docs`, and `/v1/reference` require authentication. Send your API key as `X-Api-Key: <api-key>` (the raw key, no prefix); a customer/Auth0 Bearer JWT in the `Authorization` header is also accepted.\nWhen you create an API key, requests made with it are attributed to your Virtuall user.\n\n## Errors\nErrors use the envelope `{ code, message, details?, requestId }`. Common `code` values:\n`UNAUTHORIZED`, `VALIDATION_ERROR`, `INVALID_ENGINE`, `INVALID_INPUT`, `INVALID_PARAMS`, `INVALID_FILE`,\n`INSUFFICIENT_BALANCE`, `TRIAL_EXPIRED`, `NOT_FOUND`, `RATE_LIMIT_EXCEEDED`, `INTERNAL_ERROR`.\n\n## Rate limiting\nProtected responses include `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset`.\nExceeding the limit returns `429` with a `Retry-After` header.\n\n## Account\nUse `GET /v1/account/identity` to inspect the authenticated acting user, their studio role and its policies, and the active studio. Use `GET /v1/account/usage` for the studio's token balance, request limit, and generation and asset counts.\n\n## Usage analytics\nUse `GET /v1/usage` to query credit spend by user, engine, output format, current user-group membership, and an inclusive date range of up to 366 days. Both date bounds are required. Repeat a dimension parameter to filter by multiple values. Every response includes the filtered grand total and totals per user, in credits and EUR.\n\n## Engines and Model Library\nUse `GET /v1/engines` to discover the non-deprecated first-party engines and Model Library models available to the authenticated user. For first-party engines, submit the engine `name` as `model`. Model Library entries have `external: true`; submit their engine `id` as `model`. Their engine, input, and parameter `id` values all use the public `model-library/` namespace. In both cases, submit the returned input `key` as `mode` and parameter `key` values in `params`.\n\n## Media URLs\nTreat output and download URLs as temporary. Signed media URLs have a nominal 24-hour lifetime. Fetch `GET /v1/generations/{id}` again to refresh an output URL, or `GET /v1/files/{id}/download-url` to refresh a file download URL. Keep the generation or file ID rather than storing a media URL as a permanent link. Already-public URLs may have a different lifetime.\n\n## Webhooks\nRegister endpoints via `/v1/webhooks` (API-key clients only). Events: `generation.completed`,\n`generation.failed`. Delivery is a `POST` with body `{ sessionId, outputs: [{ id, status, type }] }`\nand headers `X-Webhook-Event`, `X-Webhook-Delivery`, and `X-Webhook-Signature: sha256=<hmac>`\n(HMAC-SHA256 of the raw body, keyed by the endpoint secret).\n"},"tags":[{"name":"Engines","description":"The generation catalogue available to the authenticated user. Deprecated, retired, and post-production-only engines are not advertised.\n\nFor a first-party engine, submit its `name` as `model` in `POST /v1/generations`. For a Model Library entry, submit its engine `id` as `model`. Model Library entries have `external: true`, and every public identifier belonging to one—the engine `id`, its input `id` values, and its parameter `id` values—uses the `model-library/` namespace. Provider-internal identifiers are never part of the public contract.\n\nParameter metadata is sparse. `min`, `max`, and `step` are omitted when that constraint is unavailable. `options` is omitted when the parameter has no fixed option list. Clients must treat omitted fields as unconstrained or not applicable, rather than as zero or an empty allowed set."},{"name":"Account","description":"Information about the authenticated caller and their active studio.\n\n`GET /v1/account/identity` returns the acting user (`id`, `email`, `name`, and an `imageUrl` that is pre-signed for a stored profile picture and passed through unchanged for a public one), the active `studio`, the caller's `role` in it, and the `policies` that role grants — one `{ resource, action, scope }` entry per grant. Use them to determine which resources and actions are available to the caller, and how far each reaches (`all`, `assigned`, or `owned`). Group-scoped grants are not included.\n\n`GET /v1/account/usage` returns the active studio's token balance, the caller's per-minute request limit, and current generation and asset counts. Generation periods use UTC boundaries."},{"name":"Usage","description":"Studio-scoped credit-spend analytics.\n\nFilters are combined with AND across dimensions and OR within a repeated dimension. For example, `?userId=<a>&userId=<b>&format=IMAGE` returns IMAGE spend by either user. User-group filters use current membership. `startDate` and `endDate` are required inclusive ISO 8601 timestamps, and the range cannot exceed 366 days.\n\nOnly `userId`, `engineId`, `format`, `userGroupId`, `startDate`, and `endDate` are accepted; unknown query parameters are rejected."}],"servers":[{"url":"../","description":"Current server"}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"API key, sent as `X-Api-Key: <your-api-key>` (the raw key, no prefix). A key you create attributes its requests to your Virtuall user."},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Customer-signed JWT (validated against your registered JWKS/public key) or an Auth0 plugin token."}},"schemas":{"Health":{"type":"object","properties":{"status":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"version":{"type":"string"}},"required":["status","timestamp","version"]},"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}},"requestId":{"type":"string"},"errorCode":{"type":"string"}},"required":["code","message"]},"AssetPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Asset"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]},"Asset":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":["string","null"]},"status":{"type":"string","enum":["QUEUE","IN_PROGRESS","DONE"]},"tags":{"type":"array","items":{"type":"string"}},"projectId":{"type":["string","null"],"format":"uuid"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","description","status","tags","projectId","createdAt"]},"Pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["cursor","hasMore"]},"AssetCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1000},"projectId":{"type":"string","format":"uuid"},"tags":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":50}},"required":["name"]},"AssetUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1000},"tags":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":50},"projectId":{"type":["string","null"],"format":"uuid"}}},"Generation":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","enum":["PENDING","PROCESSING","COMPLETED","FAILED"]},"model":{"type":"string"},"mode":{"type":"string"},"assetId":{"type":["string","null"],"format":"uuid"},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/Output"}},"outputCount":{"type":"number"},"moodBoard":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","status","createdAt"]},"Output":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["PENDING","PROCESSING","COMPLETED","FAILED"]},"type":{"type":"string"},"progress":{"type":"number"},"url":{"type":["string","null"],"description":"Temporary output URL when available. Fetch GET /v1/generations/{id} again to obtain a fresh URL; do not persist this URL as a permanent asset link."},"createdAt":{"type":"string","format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"},"errorCode":{"type":["string","null"]}},"required":["id","status"]},"GenerationCreateRequest":{"oneOf":[{"$ref":"#/components/schemas/Lynx_text_to_model_Request"},{"$ref":"#/components/schemas/Lynx_image_to_model_Request"},{"$ref":"#/components/schemas/Lynx_multiview_to_model_Request"},{"$ref":"#/components/schemas/Lynx_model_to_texture_Request"},{"$ref":"#/components/schemas/Lynx_model_to_segment_Request"},{"$ref":"#/components/schemas/Lynx_model_to_optimize_mesh_Request"},{"$ref":"#/components/schemas/Lynx_model_to_optimize_uv_Request"},{"$ref":"#/components/schemas/Panther_text_to_model_Request"},{"$ref":"#/components/schemas/Panther_image_to_model_Request"},{"$ref":"#/components/schemas/Panther_multiview_to_model_Request"},{"$ref":"#/components/schemas/Panther_model_to_texture_Request"},{"$ref":"#/components/schemas/Panther_model_to_segment_Request"},{"$ref":"#/components/schemas/Panther_model_to_optimize_mesh_Request"},{"$ref":"#/components/schemas/Panther_model_to_optimize_uv_Request"},{"$ref":"#/components/schemas/Owl_text_to_image_Request"},{"$ref":"#/components/schemas/Sparrow_text_to_image_Request"},{"$ref":"#/components/schemas/Raven_text_to_image_Request"},{"$ref":"#/components/schemas/Orca_text_to_video_Request"},{"$ref":"#/components/schemas/Orca_extend_video_Request"},{"$ref":"#/components/schemas/Orca_upscale_video_Request"},{"$ref":"#/components/schemas/Orca_concat_videos_Request"},{"$ref":"#/components/schemas/Sea_Horse_Pro_text_to_video_Request"},{"$ref":"#/components/schemas/Sea_Horse_Pro_extend_video_Request"},{"$ref":"#/components/schemas/Sea_Horse_Pro_upscale_video_Request"},{"$ref":"#/components/schemas/Sea_Horse_Pro_concat_videos_Request"},{"$ref":"#/components/schemas/Orca_Pro_text_to_video_Request"},{"$ref":"#/components/schemas/ModelLibraryGenerationRequest"}]},"Lynx_text_to_model_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Lynx"]},"mode":{"type":"string","enum":["text_to_model"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Lynx_text_to_model_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","prompt","assetId"],"title":"Lynx — Text to 3D","description":"PRECISION · MESH GENERATION & OPTIMIZATION — Advanced 3D mesh generation with detailed geometry and strong low-poly capabilities. Best for complex models, optimized game assets, and geometry-focused production workflows."},"Lynx_text_to_model_Params":{"type":"object","properties":{"negative_prompt":{"type":"string"},"mesh_detail":{"type":"string","enum":["Low poly","High poly"]},"max_polycount":{"type":"number"},"auto_size":{"type":"string","enum":["no","yes"]}}},"Lynx_image_to_model_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Lynx"]},"mode":{"type":"string","enum":["image_to_model"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"minItems":1,"maxItems":1,"description":"Exactly one input image. Role is not used."},"params":{"$ref":"#/components/schemas/Lynx_image_to_model_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","files","assetId"],"title":"Lynx — Image to 3D","description":"PRECISION · MESH GENERATION & OPTIMIZATION — Advanced 3D mesh generation with detailed geometry and strong low-poly capabilities. Best for complex models, optimized game assets, and geometry-focused production workflows."},"Lynx_image_to_model_Params":{"type":"object","properties":{"mesh_detail":{"type":"string","enum":["Low poly","High poly"]},"max_polycount":{"type":"number"},"auto_size":{"type":"string","enum":["no","yes"]}}},"Lynx_multiview_to_model_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Lynx"]},"mode":{"type":"string","enum":["multiview_to_model"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["front","back","left","right"]}},"required":["id"]},"minItems":1,"maxItems":4,"description":"1–4 views. `front` is required; roles must be unique across the array."},"params":{"$ref":"#/components/schemas/Lynx_multiview_to_model_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","files","assetId"],"title":"Lynx — Multi-view to 3D","description":"PRECISION · MESH GENERATION & OPTIMIZATION — Advanced 3D mesh generation with detailed geometry and strong low-poly capabilities. Best for complex models, optimized game assets, and geometry-focused production workflows."},"Lynx_multiview_to_model_Params":{"type":"object","properties":{"mesh_detail":{"type":"string","enum":["Low poly","High poly"]},"max_polycount":{"type":"number"},"auto_size":{"type":"string","enum":["no","yes"]}}},"Lynx_model_to_texture_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Lynx"]},"mode":{"type":"string","enum":["model_to_texture"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Lynx_model_to_texture_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Lynx — Model to Texture","description":"PRECISION · MESH GENERATION & OPTIMIZATION — Advanced 3D mesh generation with detailed geometry and strong low-poly capabilities. Best for complex models, optimized game assets, and geometry-focused production workflows."},"Lynx_model_to_texture_Params":{"type":"object","properties":{}},"Lynx_model_to_segment_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Lynx"]},"mode":{"type":"string","enum":["model_to_segment"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Lynx_model_to_segment_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Lynx — Model to Segment","description":"PRECISION · MESH GENERATION & OPTIMIZATION — Advanced 3D mesh generation with detailed geometry and strong low-poly capabilities. Best for complex models, optimized game assets, and geometry-focused production workflows."},"Lynx_model_to_segment_Params":{"type":"object","properties":{}},"Lynx_model_to_optimize_mesh_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Lynx"]},"mode":{"type":"string","enum":["model_to_optimize_mesh"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Lynx_model_to_optimize_mesh_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Lynx — Model to Optimize Mesh","description":"PRECISION · MESH GENERATION & OPTIMIZATION — Advanced 3D mesh generation with detailed geometry and strong low-poly capabilities. Best for complex models, optimized game assets, and geometry-focused production workflows."},"Lynx_model_to_optimize_mesh_Params":{"type":"object","properties":{}},"Lynx_model_to_optimize_uv_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Lynx"]},"mode":{"type":"string","enum":["model_to_optimize_uv"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Lynx_model_to_optimize_uv_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Lynx — Model to Optimize UV","description":"PRECISION · MESH GENERATION & OPTIMIZATION — Advanced 3D mesh generation with detailed geometry and strong low-poly capabilities. Best for complex models, optimized game assets, and geometry-focused production workflows."},"Lynx_model_to_optimize_uv_Params":{"type":"object","properties":{}},"Panther_text_to_model_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Panther"]},"mode":{"type":"string","enum":["text_to_model"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Panther_text_to_model_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","prompt","assetId"],"title":"Panther — Text to 3D","description":"PRODUCTION · HIGH-FIDELITY MESHES & TEXTURES — Professional 3D generation combining high-quality geometry with exceptional texture creation. Best for richly textured assets, detailed materials, and visually demanding production workflows."},"Panther_text_to_model_Params":{"type":"object","properties":{"symmetry":{"type":"string","enum":["off","auto","on"]},"topology":{"type":"string","enum":["quad","triangle"]},"mesh_detail":{"type":"string","enum":["Low poly","High poly"]}}},"Panther_image_to_model_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Panther"]},"mode":{"type":"string","enum":["image_to_model"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"minItems":1,"maxItems":1,"description":"Exactly one input image. Role is not used."},"params":{"$ref":"#/components/schemas/Panther_image_to_model_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","files","assetId"],"title":"Panther — Image to 3D","description":"PRODUCTION · HIGH-FIDELITY MESHES & TEXTURES — Professional 3D generation combining high-quality geometry with exceptional texture creation. Best for richly textured assets, detailed materials, and visually demanding production workflows."},"Panther_image_to_model_Params":{"type":"object","properties":{"symmetry":{"type":"string","enum":["off","auto","on"]},"topology":{"type":"string","enum":["quad","triangle"]},"mesh_detail":{"type":"string","enum":["Low poly","High poly"]},"face_count":{"type":"string","enum":["1K","2K","4K","8K","15K"]},"generate_texture":{"type":"string","enum":["no","yes"]},"refinement":{"type":"string","enum":["off","on"]}}},"Panther_multiview_to_model_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Panther"]},"mode":{"type":"string","enum":["multiview_to_model"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["front","back","left","right"]}},"required":["id"]},"minItems":1,"maxItems":4,"description":"1–4 views. `front` is required; roles must be unique across the array."},"params":{"$ref":"#/components/schemas/Panther_multiview_to_model_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","files","assetId"],"title":"Panther — Multiview to 3D","description":"PRODUCTION · HIGH-FIDELITY MESHES & TEXTURES — Professional 3D generation combining high-quality geometry with exceptional texture creation. Best for richly textured assets, detailed materials, and visually demanding production workflows."},"Panther_multiview_to_model_Params":{"type":"object","properties":{"symmetry":{"type":"string","enum":["off","auto","on"]},"topology":{"type":"string","enum":["quad","triangle"]},"mesh_detail":{"type":"string","enum":["High poly"]},"generate_texture":{"type":"string","enum":["no","yes"]}}},"Panther_model_to_texture_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Panther"]},"mode":{"type":"string","enum":["model_to_texture"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Panther_model_to_texture_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Panther — Model to Texture","description":"PRODUCTION · HIGH-FIDELITY MESHES & TEXTURES — Professional 3D generation combining high-quality geometry with exceptional texture creation. Best for richly textured assets, detailed materials, and visually demanding production workflows."},"Panther_model_to_texture_Params":{"type":"object","properties":{}},"Panther_model_to_segment_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Panther"]},"mode":{"type":"string","enum":["model_to_segment"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Panther_model_to_segment_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Panther — Model to Segment","description":"PRODUCTION · HIGH-FIDELITY MESHES & TEXTURES — Professional 3D generation combining high-quality geometry with exceptional texture creation. Best for richly textured assets, detailed materials, and visually demanding production workflows."},"Panther_model_to_segment_Params":{"type":"object","properties":{}},"Panther_model_to_optimize_mesh_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Panther"]},"mode":{"type":"string","enum":["model_to_optimize_mesh"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Panther_model_to_optimize_mesh_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Panther — Model to Optimize Mesh","description":"PRODUCTION · HIGH-FIDELITY MESHES & TEXTURES — Professional 3D generation combining high-quality geometry with exceptional texture creation. Best for richly textured assets, detailed materials, and visually demanding production workflows."},"Panther_model_to_optimize_mesh_Params":{"type":"object","properties":{}},"Panther_model_to_optimize_uv_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Panther"]},"mode":{"type":"string","enum":["model_to_optimize_uv"]},"prompt":{"type":"string","maxLength":600},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]}},"params":{"$ref":"#/components/schemas/Panther_model_to_optimize_uv_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Panther — Model to Optimize UV","description":"PRODUCTION · HIGH-FIDELITY MESHES & TEXTURES — Professional 3D generation combining high-quality geometry with exceptional texture creation. Best for richly textured assets, detailed materials, and visually demanding production workflows."},"Panther_model_to_optimize_uv_Params":{"type":"object","properties":{}},"Owl_text_to_image_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Owl"]},"mode":{"type":"string","enum":["text_to_image"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["reference"]}},"required":["id"]},"maxItems":10,"description":"Accepted file types: `reference` (max 10)."},"params":{"$ref":"#/components/schemas/Owl_text_to_image_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","prompt","assetId"],"title":"Owl — Text to Image","description":"VERSATILE · RELIABLE IMAGE GENERATION — Powerful, consistent image generation and editing across a wide range of styles and use cases. Best for everyday creative production, photorealistic visuals, and precise control over composition and details."},"Owl_text_to_image_Params":{"type":"object","properties":{"speed":{"type":"string","enum":["Quality","Fast"]},"aspect_ratio":{"type":"string","enum":["1:1","4:3","16:9","9:16","3:4","21:9"]},"size":{"type":"string","enum":["1K","2K","4K"]},"temperature":{"type":"number","minimum":0,"maximum":2},"top_p":{"type":"number","minimum":0,"maximum":1}}},"Sparrow_text_to_image_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Sparrow"]},"mode":{"type":"string","enum":["text_to_image"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["reference"]}},"required":["id"]},"maxItems":10,"description":"Accepted file types: `reference` (max 10)."},"params":{"$ref":"#/components/schemas/Sparrow_text_to_image_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","prompt","assetId"],"title":"Sparrow — Text to Image","description":"CREATIVE · CINEMATIC VISUALS — Expressive image generation with strong cinematic styling and artistic interpretation. Best for concept art, atmospheric environments, character design, and imaginative visual exploration."},"Sparrow_text_to_image_Params":{"type":"object","properties":{"speed":{"type":"string","enum":["Quality","Fast"]}}},"Raven_text_to_image_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Raven"]},"mode":{"type":"string","enum":["text_to_image"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["reference"]}},"required":["id"]},"maxItems":16,"description":"Accepted file types: `reference` (max 16)."},"params":{"$ref":"#/components/schemas/Raven_text_to_image_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","prompt","assetId"],"title":"Raven — Text to Image","description":"PREMIUM · HIGH-FIDELITY IMAGE PRODUCTION — Premium image generation and editing with precise detail preservation, accurate text rendering, and native transparent PNG output. Best for polished production assets, marketing visuals, icons, sprites, and reference-driven editing."},"Raven_text_to_image_Params":{"type":"object","properties":{"quality":{"type":"string","enum":["Low","Medium","High"]},"aspect_ratio":{"type":"string","enum":["1:1","3:2","2:3","16:9","9:16"]},"background":{"type":"string","enum":["Auto","Transparent","Opaque"]}}},"Orca_text_to_video_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Orca"]},"mode":{"type":"string","enum":["text_to_video"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["reference","first_frame","last_frame"]}},"required":["id"]},"maxItems":5,"description":"Accepted file types: `reference` (max 3), `first_frame` (max 1), `last_frame` (max 1). Each file must include a `type` when using this mode."},"params":{"$ref":"#/components/schemas/Orca_text_to_video_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","prompt","assetId"],"title":"Orca — Text to Video","description":"STANDARD · RELIABLE VIDEO GENERATION — Reliable video generation with smooth, consistent motion. Best for everyday production, clean animations, simple transitions, and straightforward text-to-video workflows."},"Orca_text_to_video_Params":{"type":"object","properties":{"image_mode":{"type":"string","enum":["Reference","Keyframes"]},"duration":{"type":"string","enum":["4s","6s","8s"]},"resolution":{"type":"string","enum":["720p"]},"aspect_ratio":{"type":"string","enum":["16:9","9:16"]},"generate_audio":{"type":"string","enum":["no","yes"]}}},"Orca_extend_video_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Orca"]},"mode":{"type":"string","enum":["extend_video"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["source_video"]}},"required":["id"]},"maxItems":1,"description":"Accepted file types: `source_video` (max 1)."},"params":{"$ref":"#/components/schemas/Orca_extend_video_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Orca — Extend Video","description":"STANDARD · RELIABLE VIDEO GENERATION — Reliable video generation with smooth, consistent motion. Best for everyday production, clean animations, simple transitions, and straightforward text-to-video workflows."},"Orca_extend_video_Params":{"type":"object","properties":{"aspect_ratio":{"type":"string","enum":["16:9","9:16"]}}},"Orca_upscale_video_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Orca"]},"mode":{"type":"string","enum":["upscale_video"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["source_video"]}},"required":["id"]},"maxItems":1,"description":"Accepted file types: `source_video` (max 1)."},"params":{"$ref":"#/components/schemas/Orca_upscale_video_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Orca — Upscale Video","description":"STANDARD · RELIABLE VIDEO GENERATION — Reliable video generation with smooth, consistent motion. Best for everyday production, clean animations, simple transitions, and straightforward text-to-video workflows."},"Orca_upscale_video_Params":{"type":"object","properties":{"target_width":{"type":"number"},"target_height":{"type":"number"},"preset":{"type":"string","enum":["ultrafast","superfast","veryfast","faster","fast","medium","slow","slower","veryslow"]},"crf":{"type":"number","minimum":0,"maximum":51}}},"Orca_concat_videos_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Orca"]},"mode":{"type":"string","enum":["concat_videos"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["source_video"]}},"required":["id"]},"maxItems":10,"description":"Accepted file types: `source_video` (max 10)."},"params":{"$ref":"#/components/schemas/Orca_concat_videos_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Orca — Concat Videos","description":"STANDARD · RELIABLE VIDEO GENERATION — Reliable video generation with smooth, consistent motion. Best for everyday production, clean animations, simple transitions, and straightforward text-to-video workflows."},"Orca_concat_videos_Params":{"type":"object","properties":{}},"Sea_Horse_Pro_text_to_video_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Sea Horse Pro"]},"mode":{"type":"string","enum":["text_to_video"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["reference","source_video","source_audio"]}},"required":["id"]},"maxItems":50,"description":"Accepted file types: `reference` (max 30), `source_video` (max 10), `source_audio` (max 10). Each file must include a `type` when using this mode."},"params":{"$ref":"#/components/schemas/Sea_Horse_Pro_text_to_video_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","prompt","assetId"],"title":"Sea Horse Pro — Text to Video","description":"PROFESSIONAL · HIGH-END VIDEO PRODUCTION — Professional multimodal video generation with clips up to 30 seconds, extensive reference control, motion guidance, and localized editing. Best for cinematic sequences, complex animations, and high-end creative production. Facial reference inputs are currently restricted to prevent deepfakes. Additional content moderation applies."},"Sea_Horse_Pro_text_to_video_Params":{"type":"object","properties":{"auto_length":{"type":"string","enum":["on","off"]},"duration":{"type":"integer","minimum":4,"maximum":30},"resolution":{"type":"string","enum":["480p","720p"]},"aspect_ratio":{"type":"string","enum":["16:9","4:3","1:1","3:4","9:16","21:9"]},"generate_audio":{"type":"string","enum":["no","yes"]}}},"Sea_Horse_Pro_extend_video_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Sea Horse Pro"]},"mode":{"type":"string","enum":["extend_video"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["source_video"]}},"required":["id"]},"maxItems":1,"description":"Accepted file types: `source_video` (max 1)."},"params":{"$ref":"#/components/schemas/Sea_Horse_Pro_extend_video_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Sea Horse Pro — Extend Video","description":"PROFESSIONAL · HIGH-END VIDEO PRODUCTION — Professional multimodal video generation with clips up to 30 seconds, extensive reference control, motion guidance, and localized editing. Best for cinematic sequences, complex animations, and high-end creative production. Facial reference inputs are currently restricted to prevent deepfakes. Additional content moderation applies."},"Sea_Horse_Pro_extend_video_Params":{"type":"object","properties":{"aspect_ratio":{"type":"string","enum":["16:9","4:3","1:1","3:4","9:16","21:9"]}}},"Sea_Horse_Pro_upscale_video_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Sea Horse Pro"]},"mode":{"type":"string","enum":["upscale_video"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["source_video"]}},"required":["id"]},"maxItems":1,"description":"Accepted file types: `source_video` (max 1)."},"params":{"$ref":"#/components/schemas/Sea_Horse_Pro_upscale_video_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Sea Horse Pro — Upscale Video","description":"PROFESSIONAL · HIGH-END VIDEO PRODUCTION — Professional multimodal video generation with clips up to 30 seconds, extensive reference control, motion guidance, and localized editing. Best for cinematic sequences, complex animations, and high-end creative production. Facial reference inputs are currently restricted to prevent deepfakes. Additional content moderation applies."},"Sea_Horse_Pro_upscale_video_Params":{"type":"object","properties":{"target_width":{"type":"number"},"target_height":{"type":"number"},"preset":{"type":"string","enum":["ultrafast","superfast","veryfast","faster","fast","medium","slow","slower","veryslow"]},"crf":{"type":"number","minimum":0,"maximum":51}}},"Sea_Horse_Pro_concat_videos_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Sea Horse Pro"]},"mode":{"type":"string","enum":["concat_videos"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["source_video"]}},"required":["id"]},"maxItems":10,"description":"Accepted file types: `source_video` (max 10)."},"params":{"$ref":"#/components/schemas/Sea_Horse_Pro_concat_videos_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Sea Horse Pro — Concat Videos","description":"PROFESSIONAL · HIGH-END VIDEO PRODUCTION — Professional multimodal video generation with clips up to 30 seconds, extensive reference control, motion guidance, and localized editing. Best for cinematic sequences, complex animations, and high-end creative production. Facial reference inputs are currently restricted to prevent deepfakes. Additional content moderation applies."},"Sea_Horse_Pro_concat_videos_Params":{"type":"object","properties":{}},"Orca_Pro_text_to_video_Request":{"type":"object","properties":{"model":{"type":"string","enum":["Orca Pro"]},"mode":{"type":"string","enum":["text_to_video"]},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["reference","first_frame"]}},"required":["id"]},"maxItems":7,"description":"Accepted file types: `reference` (max 6), `first_frame` (max 1). Each file must include a `type` when using this mode."},"params":{"$ref":"#/components/schemas/Orca_Pro_text_to_video_Params"},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","prompt","assetId"],"title":"Orca Pro — Text to Video","description":"ADVANCED · VIDEO CREATION — Advanced multimodal video creation with native audio. Best for guided scenes and short clips using text, a starting frame, or reference images. Currently produces ~10-second clips at 720p; existing-video input and editing are not supported."},"Orca_Pro_text_to_video_Params":{"type":"object","properties":{"image_mode":{"type":"string","enum":["Reference","Keyframes"]},"aspect_ratio":{"type":"string","enum":["16:9","9:16"]}}},"ModelLibraryGenerationRequest":{"type":"object","properties":{"model":{"type":"string","pattern":"^model-library\\/.+$"},"mode":{"type":"string","minLength":1},"prompt":{"type":"string","maxLength":10000},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["front","back","left","right"]},"type":{"type":"string","minLength":1}},"required":["id"]},"maxItems":20},"params":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"assetId":{"type":"string","format":"uuid"},"outputCount":{"type":"integer","minimum":1,"maximum":5,"default":1}},"required":["model","mode","assetId"],"title":"Model Library model","description":"A studio-enabled Model Library model. Use the engine id, input key, parameter keys and file types returned by GET /v1/engines."},"GenerationPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Generation"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]},"UploadUrl":{"type":"object","properties":{"fileId":{"type":"string","format":"uuid"},"uploadUrl":{"type":"string"},"expiresIn":{"type":"number"}},"required":["fileId","uploadUrl","expiresIn"]},"UploadUrlRequest":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":255},"mimeType":{"type":"string","minLength":1},"purpose":{"type":"string","enum":["generation-input","asset-design"],"default":"generation-input"}},"required":["filename","mimeType"]},"FileMetadata":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"mimeType":{"type":["string","null"]},"uploaded":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","mimeType","uploaded","createdAt"]},"FilePage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FileMetadata"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]},"DownloadUrl":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for this file. Request GET /v1/files/{id}/download-url again when the URL expires."},"expiresIn":{"type":"number","description":"Nominal signing lifetime in seconds. Refresh signed URLs before reuse; already-public URLs may have a different lifetime."}},"required":["downloadUrl","expiresIn"]},"AccountUsage":{"type":"object","properties":{"studio":{"type":"object","properties":{"name":{"type":"string"},"tokenBalance":{"type":"number"}},"required":["name","tokenBalance"]},"rateLimits":{"type":"object","properties":{"limit":{"type":"number"}},"required":["limit"]},"usage":{"type":"object","properties":{"generationsToday":{"type":"number"},"generationsThisMonth":{"type":"number"},"assetsTotal":{"type":"number"}},"required":["generationsToday","generationsThisMonth","assetsTotal"]}},"required":["studio","rateLimits","usage"]},"AccountIdentity":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":["string","null"]},"name":{"type":["string","null"]},"imageUrl":{"type":["string","null"],"description":"Profile picture URL: a pre-signed URL for a stored picture, a public URL passed through unchanged, or null when the user has none (or the stored one could not be signed)."}},"required":["id","email","name","imageUrl"]},"studio":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"],"description":"The studio every request from this caller is scoped to."},"role":{"type":["object","null"],"properties":{"id":{"type":["string","null"],"format":"uuid"},"name":{"type":"string"}},"required":["id","name"],"description":"The caller's role in that studio, or null when they hold none. `id` is null for a legacy role not yet migrated to the policy-role tables."},"policies":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string","description":"e.g. `projects`, `assets`, `generations`."},"action":{"type":"string","enum":["read","create","update","delete"]},"scope":{"type":"string","enum":["all","owned","assigned"],"description":"`all` — every resource of that type in the studio; `assigned` — only the ones the user is assigned to; `owned` — only the ones they created."}},"required":["resource","action","scope"]},"description":"Effective grants of that studio role. Empty when no role is assigned. Group-scoped grants are not included."}},"required":["user","studio","role","policies"]},"UsageReport":{"type":"object","properties":{"regularCreditCostEur":{"type":"number","minimum":0},"overdraftCreditCostEur":{"type":"number","minimum":0},"totalSpend":{"type":"object","properties":{"credits":{"type":"integer","minimum":0},"regularCredits":{"type":"integer","minimum":0},"overdraftCredits":{"type":"integer","minimum":0},"eur":{"type":"number","minimum":0}},"required":["credits","regularCredits","overdraftCredits","eur"]},"perUserTotals":{"type":"array","items":{"type":"object","properties":{"userId":{"type":["string","null"],"format":"uuid"},"userName":{"type":"string"},"userEmail":{"type":["string","null"]},"credits":{"type":"integer","minimum":0},"regularCredits":{"type":"integer","minimum":0},"overdraftCredits":{"type":"integer","minimum":0},"eur":{"type":"number","minimum":0}},"required":["userId","userName","userEmail","credits","regularCredits","overdraftCredits","eur"]}}},"required":["regularCreditCostEur","overdraftCreditCostEur","totalSpend","perUserTotals"]},"ProjectPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]},"Project":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","name","description","thumbnailUrl","createdAt","updatedAt"]},"ProjectCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1000}},"required":["name"]},"ProjectUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1000}}},"WebhookPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}},"required":["data"]},"Webhook":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","url","events","isActive","createdAt"]},"WebhookCreated":{"allOf":[{"$ref":"#/components/schemas/Webhook"},{"type":"object","properties":{"secret":{"type":"string"}},"required":["secret"]}]},"WebhookCreate":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["url","events"]},"WebhookUpdate":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string"},"minItems":1},"isActive":{"type":"boolean"}}},"WebhookTestResult":{"type":"object","properties":{"success":{"type":"boolean"},"statusCode":{"type":"number"},"error":{"type":"string"}},"required":["success"]},"BatchAssetCreateResult":{"type":"object","properties":{"created":{"type":"array","items":{"$ref":"#/components/schemas/Asset"}},"errors":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"error":{"type":"string"}},"required":["index","error"]}}},"required":["created","errors"]},"BatchAssetCreate":{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1000},"projectId":{"type":"string","format":"uuid"},"tags":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":50}},"required":["name"]},"minItems":1,"maxItems":100}},"required":["assets"]},"BatchAssetDeleteResult":{"type":"object","properties":{"deleted":{"type":"array","items":{"type":"string"}},"errors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"error":{"type":"string"}},"required":["id","error"]}}},"required":["deleted","errors"]},"BatchAssetDelete":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":100}},"required":["ids"]},"EnginePage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Engine"}}},"required":["data"]},"Engine":{"type":"object","properties":{"id":{"type":"string","description":"Stable catalogue identifier. For Model Library entries, submit this value as `model`; first-party engines use their `name` as `model`. Model Library identifiers use the `model-library/` namespace."},"name":{"type":"string"},"external":{"type":"boolean","description":"True for a studio-enabled Model Library entry; false for a first-party engine."},"status":{"type":"string"},"description":{"type":["string","null"]},"type":{"type":"string"},"output":{"type":"array","items":{"type":"string"}},"maxOutputs":{"type":"integer","exclusiveMinimum":0},"inputs":{"type":"array","items":{"$ref":"#/components/schemas/EngineInput"}}},"required":["id","name","external","status","type","inputs"]},"EngineInput":{"type":"object","properties":{"id":{"type":"string","description":"Stable public input identifier. Model Library identifiers use the `model-library/` namespace."},"key":{"type":"string","description":"Stable mode selector submitted as `mode` in `POST /v1/generations`."},"name":{"type":"string"},"type":{"type":"string"},"stage":{"type":"string"},"params":{"type":"array","items":{"$ref":"#/components/schemas/EngineParameter"}},"references":{"type":"array","items":{"type":"string"}},"maxReferences":{"type":"array","items":{"type":"integer"}},"imageAspectRatio":{"$ref":"#/components/schemas/EngineImageAspectRatio"},"maxOutputs":{"type":"integer","exclusiveMinimum":0}},"required":["id","key","name","type"]},"EngineParameter":{"type":"object","properties":{"id":{"type":"string","description":"Stable public parameter identifier. Model Library identifiers use the `model-library/` namespace."},"key":{"type":"string","description":"Stable parameter key submitted as a property of `params` in `POST /v1/generations`."},"label":{"type":"string"},"type":{"type":"string"},"placeholder":{"type":["string","null"]},"defaultValue":{"type":["string","null"]},"min":{"type":"number","description":"Minimum accepted value. Omitted when not applicable."},"max":{"type":"number","description":"Maximum accepted value. Omitted when not applicable."},"step":{"type":"number","description":"Accepted value increment. Omitted when not applicable."},"options":{"type":"array","items":{"type":"string"},"description":"Allowed values for a fixed-choice parameter. Omitted when no fixed option list applies."}},"required":["id","key","label","type"]},"EngineImageAspectRatio":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"]}},"parameters":{}},"paths":{"/v1/health":{"get":{"operationId":"getHealth","tags":["Health"],"security":[],"responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/assets":{"get":{"operationId":"listAssets","tags":["Assets"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["QUEUE","IN_PROGRESS","DONE"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"name","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"projectId","in":"query"}],"responses":{"200":{"description":"List of assets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetPage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createAsset","tags":["Assets"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetCreate"}}}},"responses":{"201":{"description":"Created asset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/assets/{id}":{"get":{"operationId":"getAsset","tags":["Assets"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Asset details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Asset not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateAsset","tags":["Assets"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetUpdate"}}}},"responses":{"200":{"description":"Updated asset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Asset not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteAsset","tags":["Assets"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Asset deleted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Asset not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/generations":{"post":{"operationId":"createGeneration","tags":["Generations"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationCreateRequest"}}}},"responses":{"201":{"description":"Generation created and queued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Generation"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Insufficient balance or trial expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"get":{"operationId":"listGenerations","tags":["Generations"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["PENDING","PROCESSING","COMPLETED","FAILED"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"assetId","in":"query"}],"responses":{"200":{"description":"Paginated list of generations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationPage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/generations/{id}":{"get":{"operationId":"getGeneration","tags":["Generations"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Generation details with outputs","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Generation"},{"type":"object","properties":{},"required":["outputs"]}]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Generation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/files/upload-url":{"post":{"operationId":"uploadUrl","tags":["Files"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadUrlRequest"}}}},"responses":{"201":{"description":"Pre-signed upload URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadUrl"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/files/{id}/confirm":{"post":{"operationId":"confirmUpload","tags":["Files"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Upload confirmed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileMetadata"}}}},"400":{"description":"Object not found in storage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"File not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/files":{"get":{"operationId":"listFiles","tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"List of files uploaded by the studio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilePage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/files/{id}":{"get":{"operationId":"getFile","tags":["Files"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"File metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileMetadata"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"File not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteFile","tags":["Files"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"File deleted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"File not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/files/{id}/download-url":{"get":{"operationId":"downloadUrl","tags":["Files"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Pre-signed download URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DownloadUrl"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"File not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/account/usage":{"get":{"operationId":"getUsage","tags":["Account"],"responses":{"200":{"description":"Account usage statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUsage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/account/identity":{"get":{"operationId":"getIdentity","tags":["Account"],"responses":{"200":{"description":"The acting user, their studio role, and its policies","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountIdentity"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/usage":{"get":{"operationId":"getUsageAnalytics","tags":["Usage"],"parameters":[{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":100,"description":"User UUID. Repeat the parameter to include usage from multiple users."},"required":false,"description":"User UUID. Repeat the parameter to include usage from multiple users.","name":"userId","in":"query"},{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"minItems":1,"maxItems":100,"description":"Engine ID. Repeat the parameter to include multiple engines."},"required":false,"description":"Engine ID. Repeat the parameter to include multiple engines.","name":"engineId","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["ASSET_PACK","PREVIEW","TEXTURE","SEGMENT","ASSEMBLE","OPTIMIZE_MESH","OPTIMIZE_UV","IMAGE","VIDEO"]},"minItems":1,"maxItems":100,"description":"Generated output format. Repeat the parameter to include multiple formats."},"required":false,"description":"Generated output format. Repeat the parameter to include multiple formats.","name":"format","in":"query"},{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":100,"description":"Current user-group UUID. Repeat the parameter to include members of multiple groups."},"required":false,"description":"Current user-group UUID. Repeat the parameter to include members of multiple groups.","name":"userGroupId","in":"query"},{"schema":{"type":["number","null"],"minimum":0,"maximum":1000,"default":0.06,"description":"EUR cost assigned to each regular credit when calculating spend.","example":0.06},"required":false,"description":"EUR cost assigned to each regular credit when calculating spend.","name":"regularCreditCostEur","in":"query"},{"schema":{"type":["number","null"],"minimum":0,"maximum":1000,"default":0.06,"description":"EUR cost assigned to each overdraft credit when calculating spend.","example":0.06},"required":false,"description":"EUR cost assigned to each overdraft credit when calculating spend.","name":"overdraftCreditCostEur","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Inclusive ISO 8601 timestamp with a timezone offset.","example":"2026-09-01T00:00:00Z"},"required":true,"description":"Inclusive ISO 8601 timestamp with a timezone offset.","name":"startDate","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Inclusive ISO 8601 timestamp with a timezone offset.","example":"2026-09-01T00:00:00Z"},"required":true,"description":"Inclusive ISO 8601 timestamp with a timezone offset.","name":"endDate","in":"query"}],"responses":{"200":{"description":"Filtered studio credit spend, as a grand total and totals per user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageReport"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/projects":{"get":{"operationId":"listProjects","tags":["Projects"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"List of projects","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createProject","tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"description":"Created project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/projects/{id}":{"get":{"operationId":"getProject","tags":["Projects"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Project details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateProject","tags":["Projects"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"200":{"description":"Updated project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteProject","tags":["Projects"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Project deleted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/webhooks":{"get":{"operationId":"listWebhooks","tags":["Webhooks"],"responses":{"200":{"description":"List of webhook endpoints","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createWebhook","tags":["Webhooks"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"Created webhook (secret shown once)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreated"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/webhooks/{id}":{"patch":{"operationId":"updateWebhook","tags":["Webhooks"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"Updated webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteWebhook","tags":["Webhooks"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Webhook deleted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/webhooks/{id}/test":{"post":{"operationId":"testWebhook","tags":["Webhooks"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Test delivery result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/batch/assets":{"post":{"operationId":"batchCreate","tags":["Batch"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAssetCreate"}}}},"responses":{"201":{"description":"Batch creation results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAssetCreateResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"batchDelete","tags":["Batch"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAssetDelete"}}}},"responses":{"200":{"description":"Batch deletion results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAssetDeleteResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/engines":{"get":{"operationId":"listEngines","tags":["Engines"],"description":"Lists the non-deprecated generation engines available to the authenticated user. Model Library resource IDs use the public `model-library/` namespace. Parameter constraints and option lists are omitted when not applicable.","responses":{"200":{"description":"List of available engines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnginePage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication required or invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource unavailable or API feature disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"webhooks":{}}