{
  "openapi": "3.1.0",
  "info": {
    "title": "Layer REST API",
    "description": "REST API for AI-powered game asset creation on the Layer platform.\n\n## Authentication\n\nEvery endpoint requires a Bearer token in the `Authorization` header, except the ones a\nclient reads while deciding whether to integrate at all: `openapi.json`, `versioning`, and\nthe interactive docs.\n\n```\nAuthorization: Bearer <token>\n```\n\n### Personal Access Tokens (recommended)\n\nThe simplest way to authenticate is with a Personal Access Token (PAT):\n\n1. Log in to [app.layer.ai](https://app.layer.ai)\n2. Go to **Settings > Personal Access Tokens**\n3. Click **Create Token**, give it a name, and copy the token value\n4. Pass it as `Authorization: Bearer <your-pat-token>`\n\nPATs are long-lived and ideal for scripts, CI pipelines, and partner integrations.\n\n### OAuth2 (browser-based)\n\nFor browser-based applications, use the Auth0 OAuth2 flow. Redirect users to\nthe Layer login page, exchange the authorization code for a JWT access token,\nand use it as `Authorization: Bearer <jwt>`.\n\n## Creative Units\n\nGenerations consume Creative Units (CUs). Use the estimate endpoints to check\ncost before executing. Check workspace balance via `GET /v1/workspaces/{id}`.\n\n## Pagination\n\nList endpoints support cursor-based pagination via `limit` and `cursor` query\nparameters. Responses include a `pagination` object with `next_cursor`,\n`has_more_results`, and `total_count`. Cursors are opaque — do not parse or\nconstruct them.\n\n## Errors\n\nAll errors return [RFC 9457 Problem Details](https://www.rfc-editor.org/rfc/rfc9457) with\ncontent type `application/problem+json`:\n\n```json\n{\n  \"type\": \"https://api.layer.ai/errors/ERROR_CODE\",\n  \"title\": \"Human-readable title\",\n  \"status\": 404,\n  \"detail\": \"Detailed description of what went wrong.\"\n}\n```\n\nBranch on `type`, not on `title` or `detail` — those are prose and may be reworded. `type`\nis a stable opaque identifier whose last path segment is the machine-readable error code; it\nis not a live URL and does not resolve to a page. Documentation lives at\n[docs.layer.ai](https://docs.layer.ai).\n\nCommon status codes: `401` (unauthenticated), `403` (forbidden), `404` (not found),\n`422` (invalid input), `429` (rate limited).\n\nCreative Units are not checked when a run is submitted, so an underfunded workspace\ndoes not fail at submission time. Call the estimate endpoint and read\n`has_sufficient_creative_units` to check up front; otherwise the run is accepted and\nthen reaches a terminal `FAILED` state with `error_code` `INSUFFICIENT_BALANCE`.\n\n## Idempotency\n\nA lost response is indistinguishable from a request that never arrived, and retrying a\ngeneration spends Creative Units again. Send an idempotency key on any unsafe request and a\nretry is free:\n\n```\nIdempotency-Key: 7c9e6679-7425-40de-944b-e07fc1f90ae7\n```\n\nThe first request with a given key executes. Every later request with the same key returns\nthat first response, with `Idempotent-Replayed: true` added, without executing anything.\nAny opaque string up to 255 characters works; a UUID per logical operation is the usual\nchoice. Keys are scoped to your credential's owner and replayable for 24 hours.\n\nThree cases are not replays:\n\n- **A different request under the same key** returns `422` `IDEMPOTENCY_KEY_REUSED`. The key\n  covers the method, path, and body it was first used with, so this is a client bug rather\n  than a retry — returning some other request's result would be worse than an error.\n- **A retry while the original is still running** returns `409`\n  `IDEMPOTENT_REQUEST_IN_PROGRESS` with `Retry-After`, because the result does not exist yet.\n- **A failed request** does not reserve its key. Nothing was spent, so a retry executes\n  rather than replaying the error.\n\nKeys on safe methods are ignored — `GET` is already repeatable.\n\n## Rate limits\n\nQuotas are per user and apply to the compute operations that spend Creative Units:\nstarting a generation and starting a training run.\n\nEvery response describes the quotas in force, including one that rejected you for having\nno credential — a client that has not authenticated yet is the one that most needs to know\nwhat budget it will be planning against:\n\n```\nRateLimit-Policy: \"generation\";q=60;w=60, \"generation-video\";q=30;w=60, \"training\";q=10;w=3600\n```\n\nA quota named after a modality narrows the one it extends: a video generation spends from\nboth `generation` and `generation-video`, so the tighter of the two decides.\n\nOnce you are authenticated, responses from the operations a quota governs also report what\nis left of it:\n\n```\nRateLimit: \"generation\";r=57;t=3\nRateLimit-Limit: 60\nRateLimit-Remaining: 57\nRateLimit-Reset: 3\n```\n\n`RateLimit-Policy` and `RateLimit` are the standard structured fields — `q` is the quota,\n`w` the window in seconds, `r` the units left, `t` the seconds until the quota is fully\nrestored. The `RateLimit-Limit`/`-Remaining`/`-Reset` triple repeats the tightest quota for\nclients that parse the older convention.\n\nExceeding a quota returns `429` with a `Retry-After` header; wait that many seconds before\nretrying.\n## Versioning and deprecation\n\nThe API version is the first path segment. `/v1` and `/v2` are both stable and served\ntogether; v1 routes are unaffected by v2.\n\n`/v2` is a complete surface — every resource is reachable under it, so a client can pin\n`/v2` and never fall back. It differs from v1 in the generation surface: inference runs\ntake reference sets — trained subjects, styles, and characters — alongside a base model,\nand the v1 `/models` catalog is split into `/base-models` and `/reference-sets`.\n\nEvery other resource is the same endpoint under both prefixes: identical handler, request\nbody, and response shape. Their v2 operation ids carry a `V2` suffix so generated clients\nget one symbol per published path.\n\nBackward-compatible additions — a new endpoint, a new optional request field, a new\nresponse field — ship into an existing version without notice. Anything that could break a\nclient gets a new version instead.\n\nNothing is withdrawn without notice. When an operation or a version is deprecated:\n\n1. It is marked `deprecated: true` in `openapi.json`.\n2. Every response from it carries `Deprecation`\n   ([RFC 9745](https://www.rfc-editor.org/rfc/rfc9745)) with the date it was deprecated,\n   `Sunset` ([RFC 8594](https://www.rfc-editor.org/rfc/rfc8594)) with the earliest date it\n   may stop working, and a `Link` header with `rel=\"deprecation\"` to this policy and\n   `rel=\"successor-version\"` to its replacement.\n3. It keeps working until the sunset date, which is at least 180 days after the\n   deprecation date.\n\nPoll `openapi.json` or watch for `Deprecation` on your own traffic — both carry the same\ntimeline.\n",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.app.layer.ai/api",
      "description": "Layer API"
    }
  ],
  "paths": {
    "/v1/workspaces": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "List workspaces",
        "description": "List all workspaces the authenticated user belongs to, with Creative Units balance details.",
        "operationId": "listWorkspaces",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to get the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to get the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWorkspacesOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Get workspace",
        "description": "Get details for a single workspace including Creative Units balance.",
        "operationId": "getWorkspace",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/usage": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Get workspace usage",
        "description": "Creative Units balance plus total and per-day consumption over the last `days` days.",
        "operationId": "getWorkspaceUsage",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 365,
              "minimum": 1,
              "description": "How many days back to report.",
              "default": 30,
              "title": "Days"
            },
            "description": "How many days back to report."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceUsageOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "List workspaces",
        "description": "List all workspaces the authenticated user belongs to, with Creative Units balance details.",
        "operationId": "listWorkspacesV2",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to get the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to get the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWorkspacesOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Get workspace",
        "description": "Get details for a single workspace including Creative Units balance.",
        "operationId": "getWorkspaceV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceInfo"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/usage": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Get workspace usage",
        "description": "Creative Units balance plus total and per-day consumption over the last `days` days.",
        "operationId": "getWorkspaceUsageV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 365,
              "minimum": 1,
              "description": "How many days back to report.",
              "default": 30,
              "title": "Days"
            },
            "description": "How many days back to report."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceUsageOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/projects": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "List projects",
        "operationId": "listProjects",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "include_archived",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include archived projects in the results.",
              "default": false,
              "title": "Include Archived"
            },
            "description": "Include archived projects in the results."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListProjectsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Create project",
        "operationId": "createProject",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/projects/{project_id}": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Get project",
        "operationId": "getProject",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Projects"
        ],
        "summary": "Update project",
        "operationId": "updateProject",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProjectBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "Delete project",
        "operationId": "deleteProject",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/projects/{project_id}/members": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Add project members",
        "operationId": "addProjectMembers",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddProjectMembersBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectMembersOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/projects/{project_id}/members/{user_id}": {
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "Remove project member",
        "operationId": "removeProjectMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the user.",
              "title": "User Id"
            },
            "description": "Id of the user."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/projects": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "List projects",
        "operationId": "listProjectsV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "include_archived",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include archived projects in the results.",
              "default": false,
              "title": "Include Archived"
            },
            "description": "Include archived projects in the results."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListProjectsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Create project",
        "operationId": "createProjectV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/projects/{project_id}": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Get project",
        "operationId": "getProjectV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Projects"
        ],
        "summary": "Update project",
        "operationId": "updateProjectV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProjectBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "Delete project",
        "operationId": "deleteProjectV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/projects/{project_id}/members": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Add project members",
        "operationId": "addProjectMembersV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddProjectMembersBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectMembersOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/projects/{project_id}/members/{user_id}": {
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "Remove project member",
        "operationId": "removeProjectMemberV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the project.",
              "title": "Project Id"
            },
            "description": "Id of the project."
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the user.",
              "title": "User Id"
            },
            "description": "Id of the user."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/members": {
      "get": {
        "tags": [
          "Members"
        ],
        "summary": "List workspace members",
        "operationId": "listWorkspaceMembers",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMembersOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Members"
        ],
        "summary": "Invite workspace member",
        "operationId": "inviteWorkspaceMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteMemberBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/members/{user_id}": {
      "patch": {
        "tags": [
          "Members"
        ],
        "summary": "Update workspace member",
        "operationId": "updateWorkspaceMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the user.",
              "title": "User Id"
            },
            "description": "Id of the user."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/members": {
      "get": {
        "tags": [
          "Members"
        ],
        "summary": "List workspace members",
        "operationId": "listWorkspaceMembersV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMembersOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Members"
        ],
        "summary": "Invite workspace member",
        "operationId": "inviteWorkspaceMemberV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteMemberBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/members/{user_id}": {
      "patch": {
        "tags": [
          "Members"
        ],
        "summary": "Update workspace member",
        "operationId": "updateWorkspaceMemberV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the user.",
              "title": "User Id"
            },
            "description": "Id of the user."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/groups": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "List groups",
        "operationId": "listGroups",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Groups"
        ],
        "summary": "Create group",
        "operationId": "createGroup",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGroupBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/groups/{group_id}": {
      "patch": {
        "tags": [
          "Groups"
        ],
        "summary": "Update group role",
        "operationId": "updateGroupRole",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGroupBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Delete group",
        "operationId": "deleteGroup",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/groups/{group_id}/members": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "List group members",
        "operationId": "listGroupMembers",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupMembersOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Groups"
        ],
        "summary": "Add group member",
        "operationId": "addGroupMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddGroupMemberBody"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/groups/{group_id}/members/{user_id}": {
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Remove group member",
        "operationId": "removeGroupMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the user.",
              "title": "User Id"
            },
            "description": "Id of the user."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/groups/{group_id}/usage-limit": {
      "put": {
        "tags": [
          "Groups"
        ],
        "summary": "Set group usage limit",
        "operationId": "setGroupUsageLimit",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetUsageLimitBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Remove group usage limit",
        "operationId": "removeGroupUsageLimit",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/groups": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "List groups",
        "operationId": "listGroupsV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Groups"
        ],
        "summary": "Create group",
        "operationId": "createGroupV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGroupBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/groups/{group_id}": {
      "patch": {
        "tags": [
          "Groups"
        ],
        "summary": "Update group role",
        "operationId": "updateGroupRoleV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGroupBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Delete group",
        "operationId": "deleteGroupV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/groups/{group_id}/members": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "List group members",
        "operationId": "listGroupMembersV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupMembersOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Groups"
        ],
        "summary": "Add group member",
        "operationId": "addGroupMemberV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddGroupMemberBody"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/groups/{group_id}/members/{user_id}": {
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Remove group member",
        "operationId": "removeGroupMemberV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the user.",
              "title": "User Id"
            },
            "description": "Id of the user."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/groups/{group_id}/usage-limit": {
      "put": {
        "tags": [
          "Groups"
        ],
        "summary": "Set group usage limit",
        "operationId": "setGroupUsageLimitV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetUsageLimitBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Remove group usage limit",
        "operationId": "removeGroupUsageLimitV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the group.",
              "title": "Group Id"
            },
            "description": "Id of the group."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/models": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "List models",
        "description": "List available AI models in a workspace with optional filtering by modality, capabilities, and text search.",
        "operationId": "listModels",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "modality",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "image",
                    "video",
                    "three_d",
                    "audio",
                    "text"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by modality",
              "title": "Modality"
            },
            "description": "Filter by modality"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Full-text search on model name/description",
              "title": "Search"
            },
            "description": "Full-text search on model name/description"
          },
          {
            "name": "supports_reference_images",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Require reference image support",
              "title": "Supports Reference Images"
            },
            "description": "Require reference image support"
          },
          {
            "name": "inpainting",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Require inpainting support",
              "title": "Inpainting"
            },
            "description": "Require inpainting support"
          },
          {
            "name": "outpainting",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Require outpainting support",
              "title": "Outpainting"
            },
            "description": "Require outpainting support"
          },
          {
            "name": "generate_audio",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Require audio generation with video",
              "title": "Generate Audio"
            },
            "description": "Require audio generation with video"
          },
          {
            "name": "text_to_3d",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Require text-to-3D",
              "title": "Text To 3D"
            },
            "description": "Require text-to-3D"
          },
          {
            "name": "image_to_3d",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Require image-to-3D",
              "title": "Image To 3D"
            },
            "description": "Require image-to-3D"
          },
          {
            "name": "text_to_speech",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Require text-to-speech",
              "title": "Text To Speech"
            },
            "description": "Require text-to-speech"
          },
          {
            "name": "sound_effect",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Require sound effect generation",
              "title": "Sound Effect"
            },
            "description": "Require sound effect generation"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListModelsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/models/{model_id}": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "Get model",
        "description": "Get full details for a specific model including capabilities, timing, and prompt format.",
        "operationId": "getModel",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the model, as returned by the list models endpoint.",
              "title": "Model Id"
            },
            "description": "Id of the model, as returned by the list models endpoint."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetModelRESTOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/base-models": {
      "get": {
        "tags": [
          "Base Models"
        ],
        "summary": "List base models",
        "description": "List the base models enabled for this workspace, sourced from the model registry. Results come back in Layer's recommended order, which reflects synced quality and popularity signals and can therefore shift between requests. Reference sets are listed separately under /reference-sets.",
        "operationId": "listBaseModels",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "modality",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Modality"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by output modality",
              "title": "Modality"
            },
            "description": "Filter by output modality"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Full-text search on name, aliases, and description",
              "title": "Search"
            },
            "description": "Full-text search on name, aliases, and description"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBaseModelsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/base-models/defaults": {
      "get": {
        "tags": [
          "Base Models"
        ],
        "summary": "Get recommended base models",
        "description": "Layer's curated recommendations, filtered to the models this workspace may run. Use this to pick a model when the caller named a modality or an intent but not a specific `base_model_id`: take entry `[0]` of the matching bucket, falling through to later entries if it is unavailable. Prefer `preferred_by_use_case` over `featured_by_modality` when the intent is known, since it is finer-grained.\n\nThe curation changes as models ship and are retired, so clients should re-read this periodically rather than hard-coding a model id.",
        "operationId": "getBaseModelDefaults",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseModelDefaultsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/base-models/{base_model_id}": {
      "get": {
        "tags": [
          "Base Models"
        ],
        "summary": "Get base model",
        "description": "Get a base model's capabilities, pricing, and typical generation time.",
        "operationId": "getBaseModel",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "base_model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The base model, named by the id the list endpoint returns, or by its slug, display name, or alias.",
              "title": "Base Model Id"
            },
            "description": "The base model, named by the id the list endpoint returns, or by its slug, display name, or alias."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseModelDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/base-models/{slug}/inference-schema": {
      "get": {
        "tags": [
          "Base Models",
          "Inferences"
        ],
        "summary": "Get a model's inference input schema",
        "description": "Return the JSON Schema for a base model's inference form — the shape of the `input` accepted by POST /base-models/{slug}/inferences. Property render hints live under `x-layer`.",
        "operationId": "getInferenceSchema",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The base model, named by the id the list endpoint returns, or by its slug, display name, or alias.",
              "title": "Slug"
            },
            "description": "The base model, named by the id the list endpoint returns, or by its slug, display name, or alias."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Getinferenceschema"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/base-models/{slug}/inferences": {
      "post": {
        "tags": [
          "Base Models",
          "Inferences"
        ],
        "summary": "Run an inference with a base model",
        "description": "Start a generation with the given base model. The request body is the model's inference form (see GET /base-models/{slug}/inference-schema for its shape). Returns immediately with an inference id; poll GET /workspaces/{workspace_id}/inferences/{inference_id} for results.",
        "operationId": "runInference",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The base model, named by the id the list endpoint returns, or by its slug, display name, or alias.",
              "title": "Slug"
            },
            "description": "The base model, named by the id the list endpoint returns, or by its slug, display name, or alias."
          },
          {
            "name": "session_name",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Organize this run under a named session. A new session is created if none matches.",
              "title": "Session Name"
            },
            "description": "Organize this run under a named session. A new session is created if none matches."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true,
                "title": "Input"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteForgeOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/reference-sets": {
      "get": {
        "tags": [
          "Reference Sets"
        ],
        "summary": "List reference sets",
        "description": "List the workspace's reference sets. Pass a returned `reference_set_id` in the `reference_sets` array of an inference request. Only sets that are ready to generate with are listed: archived sets, and empty ones with no files, no trained model and no prompt fragments, are omitted.",
        "operationId": "listReferenceSets",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ],
              "description": "Full-text search on name/description",
              "title": "Search"
            },
            "description": "Full-text search on name/description"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListReferenceSetsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Training"
        ],
        "summary": "Create a reference set",
        "description": "Create a reference set (a curated collection of already-uploaded files) that can then be trained into a custom style/LoRA. Upload files first via the Files API, then pass their IDs here.",
        "operationId": "createReferenceSetV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReferenceSetRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateReferenceSetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/reference-sets/{reference_set_id}": {
      "get": {
        "tags": [
          "Reference Sets"
        ],
        "summary": "Get reference set",
        "description": "Get a reference set's metadata and every attached file with a download URL.",
        "operationId": "getReferenceSet",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "reference_set_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the reference set.",
              "title": "Reference Set Id"
            },
            "description": "Id of the reference set."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReferenceSetOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/workflows": {
      "get": {
        "tags": [
          "Workflows"
        ],
        "summary": "List workflows",
        "description": "List available generation workflows (published blueprints) in a workspace.",
        "operationId": "listWorkflows",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Full-text search on workflow name/description",
              "title": "Search"
            },
            "description": "Full-text search on workflow name/description"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWorkflowsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/workflows/{workflow_id}/estimate": {
      "post": {
        "tags": [
          "Workflows"
        ],
        "summary": "Estimate workflow price",
        "description": "Estimate the Creative Units cost of running a workflow with given inputs.",
        "operationId": "estimateWorkflowPrice",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "workflow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workflow.",
              "title": "Workflow Id"
            },
            "description": "Id of the workflow."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstimateWorkflowPriceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateWorkflowPriceOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/workflows/{workflow_id}/runs": {
      "post": {
        "tags": [
          "Workflows"
        ],
        "summary": "Execute workflow",
        "description": "Start a workflow execution. Returns immediately with a run ID. Poll with GET /workspaces/{workspace_id}/workflows/{workflow_id}/runs/{run_id} for results. Creative Units are not checked here: an underfunded workspace is still accepted and the run then reports FAILURE with error_code BlueprintInsufficientBalanceError. Use the estimate endpoint's has_sufficient_creative_units to check before submitting.",
        "operationId": "executeWorkflow",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "workflow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workflow.",
              "title": "Workflow Id"
            },
            "description": "Id of the workflow."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteWorkflowRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteWorkflowOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/workflows/{workflow_id}/runs/{run_id}": {
      "get": {
        "tags": [
          "Workflows"
        ],
        "summary": "Get workflow run",
        "description": "Get the status and results of a workflow run.",
        "operationId": "getWorkflowRun",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "workflow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workflow.",
              "title": "Workflow Id"
            },
            "description": "Id of the workflow."
          },
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workflow run.",
              "title": "Run Id"
            },
            "description": "Id of the workflow run."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkflowRunOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/workflows": {
      "get": {
        "tags": [
          "Workflows"
        ],
        "summary": "List workflows",
        "description": "List available generation workflows (published blueprints) in a workspace.",
        "operationId": "listWorkflowsV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Full-text search on workflow name/description",
              "title": "Search"
            },
            "description": "Full-text search on workflow name/description"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWorkflowsOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/workflows/{workflow_id}/estimate": {
      "post": {
        "tags": [
          "Workflows"
        ],
        "summary": "Estimate workflow price",
        "description": "Estimate the Creative Units cost of running a workflow with given inputs.",
        "operationId": "estimateWorkflowPriceV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "workflow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workflow.",
              "title": "Workflow Id"
            },
            "description": "Id of the workflow."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstimateWorkflowPriceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateWorkflowPriceOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/workflows/{workflow_id}/runs": {
      "post": {
        "tags": [
          "Workflows"
        ],
        "summary": "Execute workflow",
        "description": "Start a workflow execution. Returns immediately with a run ID. Poll with GET /workspaces/{workspace_id}/workflows/{workflow_id}/runs/{run_id} for results. Creative Units are not checked here: an underfunded workspace is still accepted and the run then reports FAILURE with error_code BlueprintInsufficientBalanceError. Use the estimate endpoint's has_sufficient_creative_units to check before submitting.",
        "operationId": "executeWorkflowV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "workflow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workflow.",
              "title": "Workflow Id"
            },
            "description": "Id of the workflow."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteWorkflowRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteWorkflowOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/workflows/{workflow_id}/runs/{run_id}": {
      "get": {
        "tags": [
          "Workflows"
        ],
        "summary": "Get workflow run",
        "description": "Get the status and results of a workflow run.",
        "operationId": "getWorkflowRunV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "workflow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workflow.",
              "title": "Workflow Id"
            },
            "description": "Id of the workflow."
          },
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workflow run.",
              "title": "Run Id"
            },
            "description": "Id of the workflow run."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkflowRunOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/inferences/estimate": {
      "post": {
        "tags": [
          "Inferences"
        ],
        "summary": "Estimate inference price",
        "description": "Estimate the Creative Units cost of an inference with given parameters.",
        "operationId": "estimateInferencePrice",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstimateInferencePriceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateForgePriceOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/inferences": {
      "post": {
        "tags": [
          "Inferences"
        ],
        "summary": "Execute inference",
        "description": "Start an AI inference (image, video, 3D, or audio). Returns immediately with an ID. Poll with GET /workspaces/{workspace_id}/inferences/{inference_id} for results. Creative Units are not checked here: an underfunded workspace is still accepted and the run then reports FAILED with error_code INSUFFICIENT_BALANCE. Use the estimate endpoint's has_sufficient_creative_units to check before submitting.",
        "operationId": "executeInference",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteInferenceRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteForgeOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/inferences/{inference_id}": {
      "get": {
        "tags": [
          "Inferences"
        ],
        "summary": "Get inference run",
        "description": "Get the status and results of an inference run.",
        "operationId": "getInferenceRun",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "inference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the generation.",
              "title": "Inference Id"
            },
            "description": "Id of the generation."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetForgeRunOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/inferences/{inference_id}/cancel": {
      "post": {
        "tags": [
          "Inferences"
        ],
        "summary": "Cancel inference run",
        "description": "Request cancellation of an in-flight inference. Fire-and-forget: returns immediately after signalling the run to stop. Poll GET /workspaces/{workspace_id}/inferences/{inference_id} for the eventual CANCELLED status. A run that already COMPLETED can no longer be cancelled and returns INFERENCE_ALREADY_COMPLETE; the other terminal states are idempotent no-ops.",
        "operationId": "cancelInference",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "inference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the generation.",
              "title": "Inference Id"
            },
            "description": "Id of the generation."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetForgeRunOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/inferences/{inference_id}/cancel": {
      "post": {
        "tags": [
          "Inferences"
        ],
        "summary": "Cancel inference run",
        "description": "Request cancellation of an in-flight inference. Fire-and-forget: returns immediately after signalling the run to stop. Poll GET /workspaces/{workspace_id}/inferences/{inference_id} for the eventual CANCELLED status. A run that already COMPLETED can no longer be cancelled and returns INFERENCE_ALREADY_COMPLETE; the other terminal states are idempotent no-ops.",
        "operationId": "cancelInferenceV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "inference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the generation.",
              "title": "Inference Id"
            },
            "description": "Id of the generation."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetForgeRunOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/inferences/estimate": {
      "post": {
        "tags": [
          "Inferences"
        ],
        "summary": "Estimate inference price",
        "description": "Estimate the Creative Units cost of an inference with given parameters. Prices through the same reference-set translation and model selection as the execute endpoint, so the price matches what execution charges for identical inputs.\n\nReference-set errors: `REFERENCE_SET_NOT_FOUND` (404 — unknown, deleted, or outside this workspace's reach), `NO_COMPATIBLE_MODEL` (422 — no enabled base model can apply these sets), `REFERENCE_SET_REQUIRED` (422 — the chosen model needs an applicable set), `REFERENCE_SET_CONFLICT` (422 — two sets supply the same singular adapter), and `INPUT_FILE_REQUIRED` (422 — the sets select an edit-only model with no asset to edit).",
        "operationId": "estimateInferencePriceV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstimateInferencePriceV2Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateInferencePriceV2Output"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/inferences": {
      "post": {
        "tags": [
          "Inferences"
        ],
        "summary": "Execute inference",
        "description": "Start an AI inference (image, video, 3D, or audio). Pass a `base_model_id`, at least one entry in `reference_sets`, or both — with reference sets alone a compatible base model is picked from them. Returns immediately with an ID. Poll with GET /v2/workspaces/{workspace_id}/inferences/{inference_id} for results. Creative Units are not checked here: an underfunded workspace is still accepted and the run then reports FAILED with error_code INSUFFICIENT_BALANCE. Use the estimate endpoint's has_sufficient_creative_units to check before submitting.\n\nReference-set errors: `REFERENCE_SET_NOT_FOUND` (404 — unknown, deleted, or outside this workspace's reach), `NO_COMPATIBLE_MODEL` (422 — no enabled base model can apply these sets), `REFERENCE_SET_REQUIRED` (422 — the chosen model needs an applicable set), `REFERENCE_SET_CONFLICT` (422 — two sets supply the same singular adapter), and `INPUT_FILE_REQUIRED` (422 — the sets select an edit-only model with no asset to edit).",
        "operationId": "executeInferenceV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteInferenceV2Request"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteInferenceV2Output"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/inferences/{inference_id}": {
      "get": {
        "tags": [
          "Inferences"
        ],
        "summary": "Get inference run",
        "description": "Get the status and results of an inference run, plus what each attached reference set contributed to it.",
        "operationId": "getInferenceRunV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "inference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the generation.",
              "title": "Inference Id"
            },
            "description": "Id of the generation."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInferenceRunV2Output"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/reference-sets": {
      "post": {
        "tags": [
          "Training"
        ],
        "summary": "Create a reference set",
        "description": "Create a reference set (a curated collection of already-uploaded files) that can then be trained into a custom style/LoRA. Upload files first via the Files API, then pass their IDs here.",
        "operationId": "createReferenceSet",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReferenceSetRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateReferenceSetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/training-runs/estimate": {
      "post": {
        "tags": [
          "Training"
        ],
        "summary": "Estimate training price",
        "description": "Estimate the Creative Units cost of training a LoRA for a reference set.",
        "operationId": "estimateTrainingPrice",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstimateTrainingPriceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateTrainingPriceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/training-runs": {
      "post": {
        "tags": [
          "Training"
        ],
        "summary": "Start a training run",
        "description": "Start training a custom style/LoRA from a reference set. Returns immediately with a run ID. Poll GET /workspaces/{workspace_id}/training-runs/{training_run_id} for progress. Creative Units are reserved at submission; call the estimate endpoint first to check cost.",
        "operationId": "startTrainingRun",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartTrainingRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartTrainingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Training"
        ],
        "summary": "List training runs",
        "description": "List a workspace's training runs, newest first, filterable by reference set and state.",
        "operationId": "listTrainingRuns",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "reference_set_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter to one reference set.",
              "title": "Reference Set Id"
            },
            "description": "Filter to one reference set."
          },
          {
            "name": "status_filter",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "any",
                "in_progress",
                "terminal_success",
                "terminal_failure"
              ],
              "type": "string",
              "description": "Filter by coarse run state.",
              "default": "any",
              "title": "Status Filter"
            },
            "description": "Filter by coarse run state."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTrainingRunsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/training-runs/{training_run_id}": {
      "get": {
        "tags": [
          "Training"
        ],
        "summary": "Get a training run",
        "description": "Get the status and progress of a training run.",
        "operationId": "getTrainingRun",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "training_run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the training run.",
              "title": "Training Run Id"
            },
            "description": "Id of the training run."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTrainingRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/training-runs/{training_run_id}/cancel": {
      "post": {
        "tags": [
          "Training"
        ],
        "summary": "Cancel a training run",
        "description": "Cancel an in-flight training run and release any reserved Creative Units.",
        "operationId": "cancelTrainingRun",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "training_run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the training run.",
              "title": "Training Run Id"
            },
            "description": "Id of the training run."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelTrainingRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/training-runs/{training_run_id}/model": {
      "get": {
        "tags": [
          "Training"
        ],
        "summary": "Get a run's trained model",
        "description": "Get the trained finetune (LoRA) produced by a completed training run.",
        "operationId": "getTrainedModel",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "training_run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the training run.",
              "title": "Training Run Id"
            },
            "description": "Id of the training run."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrainedModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/training-runs/estimate": {
      "post": {
        "tags": [
          "Training"
        ],
        "summary": "Estimate training price",
        "description": "Estimate the Creative Units cost of training a LoRA for a reference set.",
        "operationId": "estimateTrainingPriceV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstimateTrainingPriceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateTrainingPriceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/training-runs": {
      "post": {
        "tags": [
          "Training"
        ],
        "summary": "Start a training run",
        "description": "Start training a custom style/LoRA from a reference set. Returns immediately with a run ID. Poll GET /workspaces/{workspace_id}/training-runs/{training_run_id} for progress. Creative Units are reserved at submission; call the estimate endpoint first to check cost.",
        "operationId": "startTrainingRunV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartTrainingRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartTrainingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Training"
        ],
        "summary": "List training runs",
        "description": "List a workspace's training runs, newest first, filterable by reference set and state.",
        "operationId": "listTrainingRunsV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "reference_set_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter to one reference set.",
              "title": "Reference Set Id"
            },
            "description": "Filter to one reference set."
          },
          {
            "name": "status_filter",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "any",
                "in_progress",
                "terminal_success",
                "terminal_failure"
              ],
              "type": "string",
              "description": "Filter by coarse run state.",
              "default": "any",
              "title": "Status Filter"
            },
            "description": "Filter by coarse run state."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum number of results to return.",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum number of results to return."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor from a previous response to fetch the next page.",
              "title": "Cursor"
            },
            "description": "Cursor from a previous response to fetch the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTrainingRunsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/training-runs/{training_run_id}": {
      "get": {
        "tags": [
          "Training"
        ],
        "summary": "Get a training run",
        "description": "Get the status and progress of a training run.",
        "operationId": "getTrainingRunV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "training_run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the training run.",
              "title": "Training Run Id"
            },
            "description": "Id of the training run."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTrainingRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/training-runs/{training_run_id}/cancel": {
      "post": {
        "tags": [
          "Training"
        ],
        "summary": "Cancel a training run",
        "description": "Cancel an in-flight training run and release any reserved Creative Units.",
        "operationId": "cancelTrainingRunV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "training_run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the training run.",
              "title": "Training Run Id"
            },
            "description": "Id of the training run."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelTrainingRunResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/training-runs/{training_run_id}/model": {
      "get": {
        "tags": [
          "Training"
        ],
        "summary": "Get a run's trained model",
        "description": "Get the trained finetune (LoRA) produced by a completed training run.",
        "operationId": "getTrainedModelV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "training_run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the training run.",
              "title": "Training Run Id"
            },
            "description": "Id of the training run."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrainedModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/files/upload-url": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Request signed upload URL (recommended)",
        "description": "Get a signed URL to upload a file directly to storage, bypassing the server. This is the recommended upload method for large files.\n\n**Flow:**\n1. Call this endpoint with content_type and file_size_bytes\n2. POST to the returned upload_url with header `x-goog-resumable: start` to get a session URI\n3. PUT your file content to the session URI (supports chunked/resumable uploads)\n4. Use the returned file_id as input to generation endpoints\n\nAllowed types: application/x-zip-compressed, application/zip, audio/mpeg, audio/wav, font/otf, font/ttf, image/jpeg, image/png, image/webp, video/mp4. Max size: 64 MB. Upload URL expires in 15 minutes.",
        "operationId": "requestFileUploadUrl",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestUploadUrlRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestUploadUrlResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/files/upload-url": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Request signed upload URL (recommended)",
        "description": "Get a signed URL to upload a file directly to storage, bypassing the server. This is the recommended upload method for large files.\n\n**Flow:**\n1. Call this endpoint with content_type and file_size_bytes\n2. POST to the returned upload_url with header `x-goog-resumable: start` to get a session URI\n3. PUT your file content to the session URI (supports chunked/resumable uploads)\n4. Use the returned file_id as input to generation endpoints\n\nAllowed types: application/x-zip-compressed, application/zip, audio/mpeg, audio/wav, font/otf, font/ttf, image/jpeg, image/png, image/webp, video/mp4. Max size: 64 MB. Upload URL expires in 15 minutes.",
        "operationId": "requestFileUploadUrlV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestUploadUrlRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestUploadUrlResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/scoring-rules": {
      "get": {
        "tags": [
          "Scoring"
        ],
        "summary": "List output scoring rules",
        "description": "The scoring rules in force for a workspace, or for a project inside it. Each rule is a studio's own standard that generated assets are judged against, scored 0-100.\n\nRules are authored in the app under workspace or project settings; this API reads them so a caller can pick which to score against and interpret the scores that come back — the same number means different things under different rules.",
        "operationId": "listScoringRules",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Limit the results to rules scoped to this project.",
              "title": "Project Id"
            },
            "description": "Limit the results to rules scoped to this project."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListScoringRulesOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/scores": {
      "post": {
        "tags": [
          "Scoring"
        ],
        "summary": "Score files against the scope's rules",
        "description": "Queue scoring of up to 100 files against the output scoring rules in force.\n\nAccepted and asynchronous: every (file, rule) pair is a vision-model call that spends Creative Units, and the verdicts land over the following seconds to minutes. Poll `GET /v1/workspaces/{workspace_id}/files/{file_id}/scores` for the results.\n\nScoring a file again is allowed and appends a fresh verdict rather than replacing the previous one. A scope with no rules in force queues nothing and reports zero pairs.",
        "operationId": "scoreFiles",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScoreFilesBody"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScoreFilesOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/files/{file_id}/scores": {
      "get": {
        "tags": [
          "Scoring"
        ],
        "summary": "Read a file's scores",
        "description": "The output scoring verdicts recorded against one file: the current score per rule, plus the headline score stamped on the file by whichever rule its scope nominated.\n\nAn empty `scores` list means the file has not been judged, not that it scored zero.",
        "operationId": "getFileScores",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "file_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the file.",
              "title": "File Id"
            },
            "description": "Id of the file."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileScoresOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/scoring-rules": {
      "get": {
        "tags": [
          "Scoring"
        ],
        "summary": "List output scoring rules",
        "description": "The scoring rules in force for a workspace, or for a project inside it. Each rule is a studio's own standard that generated assets are judged against, scored 0-100.\n\nRules are authored in the app under workspace or project settings; this API reads them so a caller can pick which to score against and interpret the scores that come back — the same number means different things under different rules.",
        "operationId": "listScoringRulesV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "project_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Limit the results to rules scoped to this project.",
              "title": "Project Id"
            },
            "description": "Limit the results to rules scoped to this project."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListScoringRulesOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/scores": {
      "post": {
        "tags": [
          "Scoring"
        ],
        "summary": "Score files against the scope's rules",
        "description": "Queue scoring of up to 100 files against the output scoring rules in force.\n\nAccepted and asynchronous: every (file, rule) pair is a vision-model call that spends Creative Units, and the verdicts land over the following seconds to minutes. Poll `GET /v1/workspaces/{workspace_id}/files/{file_id}/scores` for the results.\n\nScoring a file again is allowed and appends a fresh verdict rather than replacing the previous one. A scope with no rules in force queues nothing and reports zero pairs.",
        "operationId": "scoreFilesV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Opaque key making this request safe to retry. The first request with a given key executes; a later request with the same key returns that first response with `Idempotent-Replayed: true` instead of executing again. The key covers the method, path, query, and body it was first used with; reusing it for a different request is rejected with 422. Replayable for 24 hours.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScoreFilesBody"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScoreFilesOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspace_id}/files/{file_id}/scores": {
      "get": {
        "tags": [
          "Scoring"
        ],
        "summary": "Read a file's scores",
        "description": "The output scoring verdicts recorded against one file: the current score per rule, plus the headline score stamped on the file by whichever rule its scope nominated.\n\nAn empty `scores` list means the file has not been judged, not that it scored zero.",
        "operationId": "getFileScoresV2",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the workspace that owns the resource.",
              "title": "Workspace Id"
            },
            "description": "Id of the workspace that owns the resource."
          },
          {
            "name": "file_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Id of the file.",
              "title": "File Id"
            },
            "description": "Id of the file."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileScoresOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated — missing or invalid Bearer token.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "The request with this `Idempotency-Key` is still running — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Invalid input parameters, or an `Idempotency-Key` reused for a different request.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited — retry after the number of seconds in `Retry-After`.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://api.layer.ai/errors/ERROR_CODE"
                    },
                    "title": {
                      "type": "string",
                      "example": "Error Title"
                    },
                    "status": {
                      "type": "integer",
                      "example": 400
                    },
                    "detail": {
                      "type": "string",
                      "example": "Human-readable description."
                    }
                  },
                  "required": [
                    "type",
                    "title",
                    "status",
                    "detail"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/versioning": {
      "get": {
        "summary": "Versioning and deprecation policy",
        "description": "How this API is versioned and how deprecations are announced.",
        "operationId": "getVersioningPolicy",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {}
            }
          }
        },
        "security": []
      }
    },
    "/cli-auth": {
      "get": {
        "summary": "Get command-line client auth configuration",
        "description": "The OAuth client configuration for logging a user in from a command-line client. Read this before starting a login: it names the authorization server, the public client id to use, and the loopback ports that are registered as callbacks.\n\nAuthorization-code logins must use PKCE — the client is public, so the code verifier is what proves the token request came from the client that started the flow.",
        "operationId": "getCliAuthConfiguration",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliAuthConfiguration"
                }
              }
            }
          }
        },
        "security": []
      }
    }
  },
  "components": {
    "schemas": {
      "AddGroupMemberBody": {
        "properties": {
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id",
            "description": "Id of the workspace member to add to the group."
          }
        },
        "type": "object",
        "required": [
          "user_id"
        ],
        "title": "AddGroupMemberBody"
      },
      "AddProjectMembersBody": {
        "properties": {
          "user_ids": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "maxItems": 50,
            "minItems": 1,
            "title": "User Ids",
            "description": "Ids of workspace members to add. All must already be active workspace members."
          }
        },
        "type": "object",
        "required": [
          "user_ids"
        ],
        "title": "AddProjectMembersBody"
      },
      "BaseModelCapabilitiesREST": {
        "properties": {
          "session_modes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Session Modes",
            "description": "Supported modes: create, create_video, create_3_d, create_speech, create_sound_effect, prompt_edit_image, etc."
          },
          "text_prompt": {
            "type": "boolean",
            "title": "Text Prompt",
            "default": false
          },
          "text_prompt_required": {
            "type": "boolean",
            "title": "Text Prompt Required",
            "default": false
          },
          "negative_prompt": {
            "type": "boolean",
            "title": "Negative Prompt",
            "default": false
          },
          "seed": {
            "type": "boolean",
            "title": "Seed",
            "default": false
          },
          "inpainting": {
            "type": "boolean",
            "title": "Inpainting",
            "default": false
          },
          "outpainting": {
            "type": "boolean",
            "title": "Outpainting",
            "default": false
          },
          "tileability": {
            "type": "boolean",
            "title": "Tileability",
            "default": false
          },
          "guidance_file_types": {
            "items": {
              "$ref": "#/components/schemas/ToolGuidanceFileTypeSupport"
            },
            "type": "array",
            "title": "Guidance File Types",
            "description": "Supported guidance inputs and their per-type file limits. `init_image` is the source image an edit model modifies; `reference_image` supplies subjects to reproduce; `ip_adapter` is legacy IP-Adapter style-only transfer."
          },
          "duration_seconds": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Duration Seconds",
            "description": "Supported video durations in seconds"
          },
          "duration_seconds_min": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds Min",
            "description": "Audio models: shortest clip this model generates, in seconds."
          },
          "duration_seconds_max": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds Max",
            "description": "Audio models: longest clip this model generates, in seconds. Pass duration_seconds between the min and max; a request outside them is refused."
          },
          "duration_seconds_required": {
            "type": "boolean",
            "title": "Duration Seconds Required",
            "description": "This model has no default clip length; without duration_seconds the shortest is used.",
            "default": false
          },
          "generate_audio": {
            "type": "boolean",
            "title": "Generate Audio",
            "default": false
          },
          "lipsync": {
            "type": "boolean",
            "title": "Lipsync",
            "default": false
          },
          "textures": {
            "type": "boolean",
            "title": "Textures",
            "default": false
          },
          "quad_mesh": {
            "type": "boolean",
            "title": "Quad Mesh",
            "default": false
          },
          "pbr_materials": {
            "type": "boolean",
            "title": "Pbr Materials",
            "default": false
          },
          "generate_parts": {
            "type": "boolean",
            "title": "Generate Parts",
            "default": false
          },
          "text_to_speech": {
            "type": "boolean",
            "title": "Text To Speech",
            "default": false
          },
          "sound_effect": {
            "type": "boolean",
            "title": "Sound Effect",
            "default": false
          },
          "camera_transform": {
            "type": "boolean",
            "title": "Camera Transform",
            "default": false
          },
          "output_aspect_ratios": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Output Aspect Ratios"
          },
          "output_size_envelope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Output Size Envelope"
          }
        },
        "type": "object",
        "title": "BaseModelCapabilitiesREST",
        "description": "ToolModelCapabilities without the MCP token-saving serializer — returns all fields for REST."
      },
      "BaseModelDefaultsOutput": {
        "properties": {
          "featured_by_modality": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "propertyNames": {
              "$ref": "#/components/schemas/Modality"
            },
            "type": "object",
            "title": "Featured By Modality",
            "description": "Recommended base models per output modality, best first. `[0]` is the default for a request that names only a modality."
          },
          "preferred_by_use_case": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "propertyNames": {
              "$ref": "#/components/schemas/InferenceUseCase"
            },
            "type": "object",
            "title": "Preferred By Use Case",
            "description": "Recommended base models per use case, best first. Finer-grained than modality — prefer this when the caller's intent is known."
          },
          "base_models": {
            "items": {
              "$ref": "#/components/schemas/BaseModelSummary"
            },
            "type": "array",
            "title": "Base Models",
            "description": "Details for every base model named above, deduplicated, so a client can render a recommendation without a second request."
          }
        },
        "type": "object",
        "required": [
          "featured_by_modality",
          "preferred_by_use_case",
          "base_models"
        ],
        "title": "BaseModelDefaultsOutput",
        "description": "Layer's curated recommendations, filtered to what this workspace may run.\n\nBoth maps are ordered best-first, and entry ``[0]`` is the pick to use when the\ncaller expresses no preference. Later entries are genuine fallbacks, so a client\nholding a stale copy can walk the list. Buckets left empty by workspace filtering\nare omitted rather than returned empty, so a present key always has a usable pick."
      },
      "BaseModelDetail": {
        "properties": {
          "base_model_id": {
            "type": "string",
            "title": "Base Model Id",
            "description": "Base model identifier, e.g. flux-dev — pass it as `base_model_id`."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Display name."
          },
          "aliases": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Aliases",
            "description": "Community nicknames this model is also known by.",
            "default": []
          },
          "modality": {
            "$ref": "#/components/schemas/Modality",
            "description": "image, video, three_d, or audio."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Short description."
          },
          "price_per_unit": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Per Unit",
            "description": "CU cost per measurement unit."
          },
          "price_unit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Unit",
            "description": "Measurement unit, e.g. megapixel, second, generation."
          },
          "inference_timing": {
            "type": "string",
            "title": "Inference Timing",
            "description": "Typical generation time range, e.g. '5-15s'."
          },
          "capabilities": {
            "$ref": "#/components/schemas/BaseModelCapabilitiesREST",
            "description": "Supported inputs, sizes, and generation features."
          }
        },
        "type": "object",
        "required": [
          "base_model_id",
          "name",
          "modality",
          "inference_timing",
          "capabilities"
        ],
        "title": "BaseModelDetail"
      },
      "BaseModelSummary": {
        "properties": {
          "base_model_id": {
            "type": "string",
            "title": "Base Model Id",
            "description": "Base model identifier, e.g. flux-dev — pass it as `base_model_id`."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Display name."
          },
          "aliases": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Aliases",
            "description": "Community nicknames this model is also known by.",
            "default": []
          },
          "modality": {
            "$ref": "#/components/schemas/Modality",
            "description": "image, video, three_d, or audio."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Short description."
          },
          "price_per_unit": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Per Unit",
            "description": "CU cost per measurement unit."
          },
          "price_unit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Unit",
            "description": "Measurement unit, e.g. megapixel, second, generation."
          },
          "inference_timing": {
            "type": "string",
            "title": "Inference Timing",
            "description": "Typical generation time range, e.g. '5-15s'."
          }
        },
        "type": "object",
        "required": [
          "base_model_id",
          "name",
          "modality",
          "inference_timing"
        ],
        "title": "BaseModelSummary"
      },
      "BlueprintRunStatus": {
        "type": "string",
        "enum": [
          "pending",
          "running",
          "success",
          "failure",
          "cancelled"
        ],
        "title": "BlueprintRunStatus",
        "description": "Enum representing the status of a blueprint run."
      },
      "CancelTrainingRunResponse": {
        "properties": {
          "training_run_id": {
            "type": "string",
            "format": "uuid",
            "title": "Training Run Id"
          },
          "state": {
            "type": "string",
            "enum": [
              "in_progress",
              "terminal_success",
              "terminal_failure"
            ],
            "title": "State"
          },
          "raw_status": {
            "type": "string",
            "title": "Raw Status"
          }
        },
        "type": "object",
        "required": [
          "training_run_id",
          "state",
          "raw_status"
        ],
        "title": "CancelTrainingRunResponse"
      },
      "CliAuthConfiguration": {
        "properties": {
          "issuer": {
            "type": "string",
            "title": "Issuer",
            "description": "Authorization server that issues tokens for this API."
          },
          "client_id": {
            "type": "string",
            "title": "Client Id",
            "description": "Public OAuth client id to authenticate as. Not a secret."
          },
          "audience": {
            "type": "string",
            "title": "Audience",
            "description": "Audience to request, so the token is accepted by this API."
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes",
            "description": "Scopes to request. `offline_access` is what keeps the login alive."
          },
          "grant_types": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Grant Types",
            "description": "Grant types this client may use, most preferred first."
          },
          "loopback_ports": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Loopback Ports",
            "description": "Ports registered as loopback callbacks. Bind the first one that is free and redirect to `http://127.0.0.1:<port>{redirect_path}`. The authorization server does not accept a port outside this list, so fall back to the device-code grant when every one is taken."
          },
          "redirect_path": {
            "type": "string",
            "title": "Redirect Path",
            "description": "Path component of the registered loopback callback URLs."
          }
        },
        "type": "object",
        "required": [
          "issuer",
          "client_id",
          "audience",
          "scopes",
          "grant_types",
          "loopback_ports",
          "redirect_path"
        ],
        "title": "CliAuthConfiguration",
        "description": "Everything a command-line client needs to run an OAuth login against this deployment.\n\nA CLI is pointed at a deployment by URL alone, so it cannot carry a per-deployment\nclient id or callback list of its own — it reads them from here. That also means the\nregistered ports can be widened, or the client rotated, without a CLI release."
      },
      "CreateGroupBody": {
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "title": "Name",
            "description": "The group's name. Must be unique within the workspace."
          },
          "role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Role"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional workspace role to grant members."
          },
          "role_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role Id",
            "description": "Id of a custom role to grant instead of a builtin `role`."
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CreateGroupBody"
      },
      "CreateProjectBody": {
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "title": "Name",
            "description": "The project's display name. Must be unique within the workspace."
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "instructions": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200000
              },
              {
                "type": "null"
              }
            ],
            "title": "Instructions"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CreateProjectBody"
      },
      "CreateReferenceSetRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "title": "Name",
            "description": "Display name for the reference set."
          },
          "category": {
            "type": "string",
            "enum": [
              "general",
              "character",
              "object",
              "scene",
              "effect"
            ],
            "title": "Category",
            "description": "Training category: general (overall aesthetic), character (person/creature), object (specific item), scene (environment), or effect (visual effect)."
          },
          "file_ids": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "maxItems": 1000,
            "minItems": 1,
            "title": "File Ids",
            "description": "Ordered image or video file IDs to include. Must belong to the workspace."
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Optional description."
          },
          "cover_file_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover File Ids",
            "description": "Optional ordered image file IDs to show as cover thumbnails. Omit to auto-pick."
          }
        },
        "type": "object",
        "required": [
          "name",
          "category",
          "file_ids"
        ],
        "title": "CreateReferenceSetRequest"
      },
      "CreateReferenceSetResponse": {
        "properties": {
          "reference_set_id": {
            "type": "string",
            "format": "uuid",
            "title": "Reference Set Id",
            "description": "ID of the created reference set (train this with a training run)."
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "asset_count": {
            "type": "integer",
            "title": "Asset Count",
            "description": "Number of input files added to the reference set."
          },
          "cover_count": {
            "type": "integer",
            "title": "Cover Count",
            "description": "Number of cover thumbnails set on the reference set."
          },
          "skipped": {
            "items": {
              "$ref": "#/components/schemas/SkippedFile"
            },
            "type": "array",
            "title": "Skipped",
            "description": "Files from file_ids that were not included, each with the reason."
          }
        },
        "type": "object",
        "required": [
          "reference_set_id",
          "name",
          "asset_count",
          "cover_count"
        ],
        "title": "CreateReferenceSetResponse"
      },
      "DailyUsage": {
        "properties": {
          "date": {
            "type": "string",
            "title": "Date",
            "description": "Calendar day (UTC), ISO format YYYY-MM-DD."
          },
          "creative_units": {
            "type": "number",
            "title": "Creative Units",
            "description": "Creative Units consumed on this day across all models."
          }
        },
        "type": "object",
        "required": [
          "date",
          "creative_units"
        ],
        "title": "DailyUsage"
      },
      "EstimateForgePriceOutput": {
        "properties": {
          "estimated_price_creative_units": {
            "type": "number",
            "title": "Estimated Price Creative Units",
            "description": "Total estimated Creative Units price for this run."
          },
          "workspace_balance_creative_units": {
            "type": "number",
            "title": "Workspace Balance Creative Units",
            "description": "Usable Creative Units balance (total balance minus reserved by in-progress generations)."
          },
          "estimated_remaining_balance_creative_units": {
            "type": "number",
            "title": "Estimated Remaining Balance Creative Units",
            "description": "Usable balance after subtracting the estimated price. Can be negative."
          },
          "has_sufficient_creative_units": {
            "type": "boolean",
            "title": "Has Sufficient Creative Units",
            "description": "Whether the workspace has enough available Creative Units to cover the estimated price."
          }
        },
        "type": "object",
        "required": [
          "estimated_price_creative_units",
          "workspace_balance_creative_units",
          "estimated_remaining_balance_creative_units",
          "has_sufficient_creative_units"
        ],
        "title": "EstimateForgePriceOutput"
      },
      "EstimateInferencePriceRequest": {
        "properties": {
          "model_id": {
            "type": "string",
            "format": "uuid",
            "title": "Model Id",
            "description": "Model/style ID to use for generation."
          },
          "weight": {
            "type": "number",
            "maximum": 2,
            "minimum": 0,
            "title": "Weight",
            "description": "Style/LoRA strength applied to the model. 1.0 = as trained; lower weakens, higher over-applies the style. Only affects LoRA/adapter-backed styles; ignored for models without a trainable adapter.",
            "default": 1
          },
          "prompt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100000
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt",
            "description": "Text prompt."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Width",
            "description": "Output width in pixels. If not specified, a default resolution based on the model will be applied."
          },
          "height": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Height",
            "description": "Output height in pixels. If not specified, a default resolution based on the model will be applied."
          },
          "batch_size": {
            "type": "integer",
            "maximum": 16,
            "minimum": 1,
            "title": "Batch Size",
            "description": "Number of outputs (1-16).",
            "default": 4
          },
          "num_inference_steps": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Num Inference Steps",
            "description": "Number of diffusion steps."
          },
          "guidance_scale": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Guidance Scale",
            "description": "Guidance scale (CFG)."
          },
          "prompt_strength": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt Strength",
            "description": "How closely the generated audio follows the text prompt (0-1); higher means less variation. Honored by ElevenLabs Sound Effects and the Sonilo video-to-music models, and ignored by every other model."
          },
          "quality": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Quality",
            "description": "Quality level: low, medium, or high."
          },
          "sharpness": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sharpness",
            "description": "Output sharpness."
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds",
            "description": "Video duration in seconds."
          },
          "generate_audio": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generate Audio",
            "description": "Generate audio with video."
          },
          "keep_audio": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Keep Audio",
            "description": "Keep audio from input video."
          },
          "fps": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Fps",
            "description": "FPS for LTX video generation (e.g. 25 or 50)."
          },
          "video_effects": {
            "items": {
              "$ref": "#/components/schemas/ForgeVideoEffectInput"
            },
            "type": "array",
            "title": "Video Effects",
            "description": "Video effects to apply.",
            "default": []
          },
          "use_ta_pose": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Ta Pose",
            "description": "Deprecated: use pose_mode. Legacy rig-ready-pose toggle for 3D."
          },
          "pose_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PoseMode"
              },
              {
                "type": "null"
              }
            ],
            "description": "Rest pose for a character mesh: A_POSE or T_POSE. Support varies by model."
          },
          "include_textures": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Include Textures",
            "description": "Include textures in 3D output."
          },
          "quad_mesh": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quad Mesh",
            "description": "Generate quad mesh."
          },
          "pbr_materials": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pbr Materials",
            "description": "Generate PBR materials."
          },
          "low_poly": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Low Poly",
            "description": "Generate low-poly mesh."
          },
          "generate_parts": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generate Parts",
            "description": "Generate separate parts."
          },
          "face_limit": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Face Limit",
            "description": "Face/polygon limit for 3D mesh."
          },
          "stability": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Stability",
            "description": "Audio stability (0-1)."
          },
          "use_speaker_boost": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Speaker Boost",
            "description": "Boost speaker clarity."
          },
          "similarity_boost": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Similarity Boost",
            "description": "Voice similarity boost (0-1)."
          },
          "style_exaggeration": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Exaggeration",
            "description": "Style exaggeration (0-1)."
          },
          "speed": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Speed",
            "description": "Speech speed multiplier."
          },
          "upscale_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Upscale Ratio",
            "description": "Upscale factor (e.g. 2.0, 4.0)."
          },
          "creativity": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Creativity",
            "description": "Creative variation strength for upscaling."
          },
          "resemblance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resemblance",
            "description": "Resemblance to original for upscaling."
          },
          "vectorize": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vectorize",
            "description": "Vectorize the output image."
          },
          "remove_background": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remove Background",
            "description": "Remove background from output."
          },
          "reframe": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reframe",
            "description": "Reframe/extend the image."
          },
          "refill": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refill",
            "description": "Outpaint/refill transparent areas."
          }
        },
        "type": "object",
        "required": [
          "model_id"
        ],
        "title": "EstimateInferencePriceRequest",
        "description": "REST request body for estimating inference price. workspace_id comes from path."
      },
      "EstimateInferencePriceV2Output": {
        "properties": {
          "estimated_price_creative_units": {
            "type": "number",
            "title": "Estimated Price Creative Units",
            "description": "Total estimated Creative Units price for this run."
          },
          "workspace_balance_creative_units": {
            "type": "number",
            "title": "Workspace Balance Creative Units",
            "description": "Usable Creative Units balance (total balance minus reserved by in-progress generations)."
          },
          "estimated_remaining_balance_creative_units": {
            "type": "number",
            "title": "Estimated Remaining Balance Creative Units",
            "description": "Usable balance after subtracting the estimated price. Can be negative."
          },
          "has_sufficient_creative_units": {
            "type": "boolean",
            "title": "Has Sufficient Creative Units",
            "description": "Whether the workspace has enough available Creative Units to cover the estimated price."
          },
          "base_model_id": {
            "type": "string",
            "title": "Base Model Id",
            "description": "Base model this price refers to, resolved or auto-picked."
          },
          "auto_picked": {
            "type": "boolean",
            "title": "Auto Picked",
            "description": "True when no base_model_id was supplied — the base model was selected from the reference sets."
          },
          "reference_set_contributions": {
            "items": {
              "$ref": "#/components/schemas/ForgeReferenceSetContribution"
            },
            "type": "array",
            "title": "Reference Set Contributions",
            "description": "Per-set summary of what each reference set would contribute to this run.",
            "default": []
          },
          "reference_sets_degraded": {
            "type": "boolean",
            "title": "Reference Sets Degraded",
            "description": "True when at least one attached reference set would not meaningfully contribute on the selected model.",
            "default": false
          },
          "reference_sets_warning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Sets Warning",
            "description": "Names each degraded reference set and why, or null when none is degraded."
          }
        },
        "type": "object",
        "required": [
          "estimated_price_creative_units",
          "workspace_balance_creative_units",
          "estimated_remaining_balance_creative_units",
          "has_sufficient_creative_units",
          "base_model_id",
          "auto_picked"
        ],
        "title": "EstimateInferencePriceV2Output"
      },
      "EstimateInferencePriceV2Request": {
        "properties": {
          "base_model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Id",
            "description": "Base model to run, as an id (e.g. flux-dev), display name, or community alias."
          },
          "reference_sets": {
            "items": {
              "$ref": "#/components/schemas/InferenceReferenceSetInput"
            },
            "type": "array",
            "maxItems": 10,
            "title": "Reference Sets",
            "description": "Reference sets to apply, up to 10.",
            "default": []
          },
          "modality": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Modality"
              },
              {
                "type": "null"
              }
            ],
            "description": "Output modality: image, video, three_d, or audio. Only needed to disambiguate reference-set translation when no base_model_id is given."
          },
          "prompt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100000
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt",
            "description": "Text prompt."
          },
          "negative_prompt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100000
              },
              {
                "type": "null"
              }
            ],
            "title": "Negative Prompt",
            "description": "What to steer the output away from. Honored by the models whose `inference-schema` lists `negative_prompt`, and ignored by the rest."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Width",
            "description": "Output width in pixels. If not specified, a default resolution based on the model will be applied."
          },
          "height": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Height",
            "description": "Output height in pixels. If not specified, a default resolution based on the model will be applied."
          },
          "batch_size": {
            "type": "integer",
            "maximum": 16,
            "minimum": 1,
            "title": "Batch Size",
            "description": "Number of outputs (1-16).",
            "default": 4
          },
          "num_inference_steps": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Num Inference Steps",
            "description": "Number of diffusion steps."
          },
          "guidance_scale": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Guidance Scale",
            "description": "Guidance scale (CFG)."
          },
          "prompt_strength": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt Strength",
            "description": "How closely the generated audio follows the text prompt (0-1); higher means less variation. Honored by ElevenLabs Sound Effects and the Sonilo video-to-music models, and ignored by every other model. To control how closely an image or video generation follows an input image, set guidance_files[].weight instead."
          },
          "quality": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Quality",
            "description": "Quality level: low, medium, or high."
          },
          "sharpness": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sharpness",
            "description": "Output sharpness."
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds",
            "description": "Video duration in seconds."
          },
          "generate_audio": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generate Audio",
            "description": "Generate audio with video."
          },
          "keep_audio": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Keep Audio",
            "description": "Keep audio from input video."
          },
          "fps": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Fps",
            "description": "FPS for LTX video generation (e.g. 25 or 50)."
          },
          "video_effects": {
            "items": {
              "$ref": "#/components/schemas/ForgeVideoEffectInput"
            },
            "type": "array",
            "title": "Video Effects",
            "description": "Video effects to apply.",
            "default": []
          },
          "use_ta_pose": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Ta Pose",
            "description": "Deprecated: use pose_mode. Legacy rig-ready-pose toggle for 3D."
          },
          "pose_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PoseMode"
              },
              {
                "type": "null"
              }
            ],
            "description": "Rest pose for a character mesh: A_POSE or T_POSE. Support varies by model."
          },
          "include_textures": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Include Textures",
            "description": "Include textures in 3D output."
          },
          "quad_mesh": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quad Mesh",
            "description": "Generate quad mesh."
          },
          "pbr_materials": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pbr Materials",
            "description": "Generate PBR materials."
          },
          "low_poly": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Low Poly",
            "description": "Generate low-poly mesh."
          },
          "generate_parts": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generate Parts",
            "description": "Generate separate parts."
          },
          "face_limit": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Face Limit",
            "description": "Face/polygon limit for 3D mesh."
          },
          "stability": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Stability",
            "description": "Audio stability (0-1)."
          },
          "use_speaker_boost": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Speaker Boost",
            "description": "Boost speaker clarity."
          },
          "similarity_boost": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Similarity Boost",
            "description": "Voice similarity boost (0-1)."
          },
          "style_exaggeration": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Exaggeration",
            "description": "Style exaggeration (0-1)."
          },
          "speed": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Speed",
            "description": "Speech speed multiplier."
          },
          "upscale_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Upscale Ratio",
            "description": "Upscale factor (e.g. 2.0, 4.0)."
          },
          "creativity": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Creativity",
            "description": "Creative variation strength for upscaling."
          },
          "resemblance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resemblance",
            "description": "Resemblance to original for upscaling."
          },
          "vectorize": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vectorize",
            "description": "Vectorize the output image."
          },
          "remove_background": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remove Background",
            "description": "Remove background from output."
          },
          "reframe": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reframe",
            "description": "Reframe/extend the image."
          },
          "refill": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refill",
            "description": "Outpaint/refill transparent areas."
          },
          "guidance_files": {
            "items": {
              "$ref": "#/components/schemas/ForgeGuidanceFileInput"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Guidance Files",
            "description": "Reference images/files to guide generation.",
            "default": []
          }
        },
        "type": "object",
        "title": "EstimateInferencePriceV2Request",
        "description": "REST request body for estimating inference price. workspace_id comes from path."
      },
      "EstimateTrainingPriceRequest": {
        "properties": {
          "reference_set_id": {
            "type": "string",
            "format": "uuid",
            "title": "Reference Set Id",
            "description": "The reference set to price training for."
          },
          "base_model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Id",
            "description": "Base model to train. Omit to use the reference set's configured or workspace default model."
          },
          "training_framework": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "fal",
                  "ai-toolkit"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Training Framework",
            "description": "Training framework override. Omit for the server default."
          }
        },
        "type": "object",
        "required": [
          "reference_set_id"
        ],
        "title": "EstimateTrainingPriceRequest"
      },
      "EstimateTrainingPriceResponse": {
        "properties": {
          "estimated_price_creative_units": {
            "type": "number",
            "title": "Estimated Price Creative Units",
            "description": "Estimated Creative Units to train this reference set."
          },
          "base_model_id": {
            "type": "string",
            "title": "Base Model Id",
            "description": "The base model the estimate was computed for."
          },
          "workspace_balance_creative_units": {
            "type": "number",
            "title": "Workspace Balance Creative Units",
            "description": "Usable Creative Units balance (total minus reserved by in-progress work)."
          },
          "estimated_remaining_balance_creative_units": {
            "type": "number",
            "title": "Estimated Remaining Balance Creative Units",
            "description": "Usable balance after subtracting the estimated price. Can be negative."
          },
          "has_sufficient_creative_units": {
            "type": "boolean",
            "title": "Has Sufficient Creative Units",
            "description": "Whether the workspace has enough available Creative Units to cover the estimate."
          }
        },
        "type": "object",
        "required": [
          "estimated_price_creative_units",
          "base_model_id",
          "workspace_balance_creative_units",
          "estimated_remaining_balance_creative_units",
          "has_sufficient_creative_units"
        ],
        "title": "EstimateTrainingPriceResponse"
      },
      "EstimateWorkflowOutputCount": {
        "properties": {
          "output": {
            "$ref": "#/components/schemas/WorkflowOutput",
            "description": "The output parameter definition."
          },
          "count": {
            "type": "integer",
            "title": "Count",
            "description": "The expected number of outputs"
          }
        },
        "type": "object",
        "required": [
          "output",
          "count"
        ],
        "title": "EstimateWorkflowOutputCount"
      },
      "EstimateWorkflowPriceOutput": {
        "properties": {
          "estimated_price_creative_units": {
            "type": "number",
            "title": "Estimated Price Creative Units",
            "description": "Total estimated Creative Units price for this run."
          },
          "output_counts": {
            "items": {
              "$ref": "#/components/schemas/EstimateWorkflowOutputCount"
            },
            "type": "array",
            "title": "Output Counts",
            "description": "Expected output count for each workflow output parameter."
          },
          "workspace_balance_creative_units": {
            "type": "number",
            "title": "Workspace Balance Creative Units",
            "description": "Usable Creative Units balance (total balance minus reserved by in-progress generations)."
          },
          "estimated_remaining_balance_creative_units": {
            "type": "number",
            "title": "Estimated Remaining Balance Creative Units",
            "description": "Usable balance after subtracting the estimated price. Can be negative."
          },
          "has_sufficient_creative_units": {
            "type": "boolean",
            "title": "Has Sufficient Creative Units",
            "description": "Whether the workspace has enough available Creative Units to cover the estimated price."
          }
        },
        "type": "object",
        "required": [
          "estimated_price_creative_units",
          "output_counts",
          "workspace_balance_creative_units",
          "estimated_remaining_balance_creative_units",
          "has_sufficient_creative_units"
        ],
        "title": "EstimateWorkflowPriceOutput"
      },
      "EstimateWorkflowPriceRequest": {
        "properties": {
          "inputs": {
            "additionalProperties": true,
            "type": "object",
            "title": "Inputs",
            "description": "Workflow inputs matching the workflow's input schema."
          }
        },
        "type": "object",
        "required": [
          "inputs"
        ],
        "title": "EstimateWorkflowPriceRequest"
      },
      "ExecuteForgeOutput": {
        "properties": {
          "inference_id": {
            "type": "string",
            "format": "uuid",
            "title": "Inference Id",
            "description": "Unique identifier for this forge run."
          },
          "status": {
            "$ref": "#/components/schemas/InferenceStatus",
            "description": "Current status: IN_PROGRESS."
          },
          "estimated_price_creative_units": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Price Creative Units",
            "description": "Estimated price in Creative Units."
          },
          "poll_interval_seconds": {
            "type": "integer",
            "title": "Poll Interval Seconds",
            "description": "Suggested polling interval in seconds."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Timestamp of when the run was created."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Id",
            "description": "Session ID the run was added to, if a session was specified."
          },
          "normalized_parameters": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NormalizedInferenceParameters"
              },
              {
                "type": "null"
              }
            ],
            "description": "Actual parameters used after model-specific normalization and defaults."
          }
        },
        "type": "object",
        "required": [
          "inference_id",
          "status",
          "poll_interval_seconds",
          "created_at"
        ],
        "title": "ExecuteForgeOutput"
      },
      "ExecuteInferenceRequest": {
        "properties": {
          "model_id": {
            "type": "string",
            "format": "uuid",
            "title": "Model Id",
            "description": "Model/style ID to use for generation."
          },
          "weight": {
            "type": "number",
            "maximum": 2,
            "minimum": 0,
            "title": "Weight",
            "description": "Style/LoRA strength applied to the model. 1.0 = as trained; lower weakens, higher over-applies the style. Only affects LoRA/adapter-backed styles; ignored for models without a trainable adapter.",
            "default": 1
          },
          "prompt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100000
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt",
            "description": "Text prompt."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Width",
            "description": "Output width in pixels. If not specified, a default resolution based on the model will be applied."
          },
          "height": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Height",
            "description": "Output height in pixels. If not specified, a default resolution based on the model will be applied."
          },
          "batch_size": {
            "type": "integer",
            "maximum": 16,
            "minimum": 1,
            "title": "Batch Size",
            "description": "Number of outputs (1-16).",
            "default": 4
          },
          "num_inference_steps": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Num Inference Steps",
            "description": "Number of diffusion steps."
          },
          "guidance_scale": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Guidance Scale",
            "description": "Guidance scale (CFG)."
          },
          "prompt_strength": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt Strength",
            "description": "How closely the generated audio follows the text prompt (0-1); higher means less variation. Honored by ElevenLabs Sound Effects and the Sonilo video-to-music models, and ignored by every other model. To control how closely an image or video generation follows an input image, set guidance_files[].weight instead."
          },
          "quality": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Quality",
            "description": "Quality level: low, medium, or high."
          },
          "sharpness": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sharpness",
            "description": "Output sharpness."
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds",
            "description": "Video duration in seconds."
          },
          "generate_audio": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generate Audio",
            "description": "Generate audio with video."
          },
          "keep_audio": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Keep Audio",
            "description": "Keep audio from input video."
          },
          "fps": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Fps",
            "description": "FPS for LTX video generation (e.g. 25 or 50)."
          },
          "video_effects": {
            "items": {
              "$ref": "#/components/schemas/ForgeVideoEffectInput"
            },
            "type": "array",
            "title": "Video Effects",
            "description": "Video effects to apply.",
            "default": []
          },
          "use_ta_pose": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Ta Pose",
            "description": "Deprecated: use pose_mode. Legacy rig-ready-pose toggle for 3D."
          },
          "pose_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PoseMode"
              },
              {
                "type": "null"
              }
            ],
            "description": "Rest pose for a character mesh: A_POSE or T_POSE. Support varies by model."
          },
          "include_textures": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Include Textures",
            "description": "Include textures in 3D output."
          },
          "quad_mesh": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quad Mesh",
            "description": "Generate quad mesh."
          },
          "pbr_materials": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pbr Materials",
            "description": "Generate PBR materials."
          },
          "low_poly": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Low Poly",
            "description": "Generate low-poly mesh."
          },
          "generate_parts": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generate Parts",
            "description": "Generate separate parts."
          },
          "face_limit": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Face Limit",
            "description": "Face/polygon limit for 3D mesh."
          },
          "stability": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Stability",
            "description": "Audio stability (0-1)."
          },
          "use_speaker_boost": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Speaker Boost",
            "description": "Boost speaker clarity."
          },
          "similarity_boost": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Similarity Boost",
            "description": "Voice similarity boost (0-1)."
          },
          "style_exaggeration": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Exaggeration",
            "description": "Style exaggeration (0-1)."
          },
          "speed": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Speed",
            "description": "Speech speed multiplier."
          },
          "upscale_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Upscale Ratio",
            "description": "Upscale factor (e.g. 2.0, 4.0)."
          },
          "creativity": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Creativity",
            "description": "Creative variation strength for upscaling."
          },
          "resemblance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resemblance",
            "description": "Resemblance to original for upscaling."
          },
          "vectorize": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vectorize",
            "description": "Vectorize the output image."
          },
          "remove_background": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remove Background",
            "description": "Remove background from output."
          },
          "reframe": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reframe",
            "description": "Reframe/extend the image."
          },
          "refill": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refill",
            "description": "Outpaint/refill transparent areas."
          },
          "seed": {
            "type": "integer",
            "title": "Seed",
            "description": "Random seed. -1 for random.",
            "default": -1
          },
          "guidance_files": {
            "items": {
              "$ref": "#/components/schemas/ForgeGuidanceFileInput"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Guidance Files",
            "description": "Reference images/files to guide generation.",
            "default": []
          },
          "mask": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ForgeMaskInput"
              },
              {
                "type": "null"
              }
            ],
            "description": "Mask for inpainting/outpainting."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Name",
            "description": "Session name."
          }
        },
        "type": "object",
        "required": [
          "model_id"
        ],
        "title": "ExecuteInferenceRequest",
        "description": "REST request body for executing an inference. workspace_id comes from path."
      },
      "ExecuteInferenceV2Output": {
        "properties": {
          "inference_id": {
            "type": "string",
            "format": "uuid",
            "title": "Inference Id",
            "description": "Unique identifier for this inference run."
          },
          "status": {
            "$ref": "#/components/schemas/InferenceStatus",
            "description": "Current status: IN_PROGRESS."
          },
          "estimated_price_creative_units": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Price Creative Units",
            "description": "Estimated price in Creative Units."
          },
          "poll_interval_seconds": {
            "type": "integer",
            "title": "Poll Interval Seconds",
            "description": "Suggested polling interval in seconds."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Timestamp of when the run was created."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Id",
            "description": "Session ID the run was added to, if a session was specified."
          },
          "normalized_parameters": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NormalizedInferenceParametersV2"
              },
              {
                "type": "null"
              }
            ],
            "description": "Actual parameters used after model-specific normalization and defaults."
          },
          "base_model_id": {
            "type": "string",
            "title": "Base Model Id",
            "description": "Base model used for the run, resolved or auto-picked."
          },
          "reference_set_contributions": {
            "items": {
              "$ref": "#/components/schemas/ForgeReferenceSetContribution"
            },
            "type": "array",
            "title": "Reference Set Contributions",
            "description": "Per-set summary of what each reference set contributed.",
            "default": []
          },
          "reference_sets_degraded": {
            "type": "boolean",
            "title": "Reference Sets Degraded",
            "description": "True when at least one attached reference set did not meaningfully contribute. The run still costs Creative Units.",
            "default": false
          },
          "reference_sets_warning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Sets Warning",
            "description": "Names each degraded reference set and why, or null when none is degraded."
          }
        },
        "type": "object",
        "required": [
          "inference_id",
          "status",
          "poll_interval_seconds",
          "created_at",
          "base_model_id"
        ],
        "title": "ExecuteInferenceV2Output"
      },
      "ExecuteInferenceV2Request": {
        "properties": {
          "base_model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Id",
            "description": "Base model to run, as an id (e.g. flux-dev), display name, or community alias."
          },
          "reference_sets": {
            "items": {
              "$ref": "#/components/schemas/InferenceReferenceSetInput"
            },
            "type": "array",
            "maxItems": 10,
            "title": "Reference Sets",
            "description": "Reference sets to apply, up to 10.",
            "default": []
          },
          "modality": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Modality"
              },
              {
                "type": "null"
              }
            ],
            "description": "Output modality: image, video, three_d, or audio. Only needed to disambiguate reference-set translation when no base_model_id is given."
          },
          "prompt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100000
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt",
            "description": "Text prompt."
          },
          "negative_prompt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100000
              },
              {
                "type": "null"
              }
            ],
            "title": "Negative Prompt",
            "description": "What to steer the output away from. Honored by the models whose `inference-schema` lists `negative_prompt`, and ignored by the rest."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Width",
            "description": "Output width in pixels. If not specified, a default resolution based on the model will be applied."
          },
          "height": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Height",
            "description": "Output height in pixels. If not specified, a default resolution based on the model will be applied."
          },
          "batch_size": {
            "type": "integer",
            "maximum": 16,
            "minimum": 1,
            "title": "Batch Size",
            "description": "Number of outputs (1-16).",
            "default": 4
          },
          "num_inference_steps": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Num Inference Steps",
            "description": "Number of diffusion steps."
          },
          "guidance_scale": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Guidance Scale",
            "description": "Guidance scale (CFG)."
          },
          "prompt_strength": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt Strength",
            "description": "How closely the generated audio follows the text prompt (0-1); higher means less variation. Honored by ElevenLabs Sound Effects and the Sonilo video-to-music models, and ignored by every other model. To control how closely an image or video generation follows an input image, set guidance_files[].weight instead."
          },
          "quality": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Quality",
            "description": "Quality level: low, medium, or high."
          },
          "sharpness": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sharpness",
            "description": "Output sharpness."
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds",
            "description": "Video duration in seconds."
          },
          "generate_audio": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generate Audio",
            "description": "Generate audio with video."
          },
          "keep_audio": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Keep Audio",
            "description": "Keep audio from input video."
          },
          "fps": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Fps",
            "description": "FPS for LTX video generation (e.g. 25 or 50)."
          },
          "video_effects": {
            "items": {
              "$ref": "#/components/schemas/ForgeVideoEffectInput"
            },
            "type": "array",
            "title": "Video Effects",
            "description": "Video effects to apply.",
            "default": []
          },
          "use_ta_pose": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Ta Pose",
            "description": "Deprecated: use pose_mode. Legacy rig-ready-pose toggle for 3D."
          },
          "pose_mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PoseMode"
              },
              {
                "type": "null"
              }
            ],
            "description": "Rest pose for a character mesh: A_POSE or T_POSE. Support varies by model."
          },
          "include_textures": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Include Textures",
            "description": "Include textures in 3D output."
          },
          "quad_mesh": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quad Mesh",
            "description": "Generate quad mesh."
          },
          "pbr_materials": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pbr Materials",
            "description": "Generate PBR materials."
          },
          "low_poly": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Low Poly",
            "description": "Generate low-poly mesh."
          },
          "generate_parts": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generate Parts",
            "description": "Generate separate parts."
          },
          "face_limit": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Face Limit",
            "description": "Face/polygon limit for 3D mesh."
          },
          "stability": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Stability",
            "description": "Audio stability (0-1)."
          },
          "use_speaker_boost": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Speaker Boost",
            "description": "Boost speaker clarity."
          },
          "similarity_boost": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Similarity Boost",
            "description": "Voice similarity boost (0-1)."
          },
          "style_exaggeration": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Exaggeration",
            "description": "Style exaggeration (0-1)."
          },
          "speed": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Speed",
            "description": "Speech speed multiplier."
          },
          "upscale_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Upscale Ratio",
            "description": "Upscale factor (e.g. 2.0, 4.0)."
          },
          "creativity": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Creativity",
            "description": "Creative variation strength for upscaling."
          },
          "resemblance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resemblance",
            "description": "Resemblance to original for upscaling."
          },
          "vectorize": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vectorize",
            "description": "Vectorize the output image."
          },
          "remove_background": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remove Background",
            "description": "Remove background from output."
          },
          "reframe": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reframe",
            "description": "Reframe/extend the image."
          },
          "refill": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refill",
            "description": "Outpaint/refill transparent areas."
          },
          "guidance_files": {
            "items": {
              "$ref": "#/components/schemas/ForgeGuidanceFileInput"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Guidance Files",
            "description": "Reference images/files to guide generation.",
            "default": []
          },
          "seed": {
            "type": "integer",
            "title": "Seed",
            "description": "Random seed. -1 for random.",
            "default": -1
          },
          "mask": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ForgeMaskInput"
              },
              {
                "type": "null"
              }
            ],
            "description": "Mask for inpainting/outpainting."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Name",
            "description": "Session name."
          }
        },
        "type": "object",
        "title": "ExecuteInferenceV2Request",
        "description": "REST request body for executing an inference. workspace_id comes from path."
      },
      "ExecuteWorkflowOutput": {
        "properties": {
          "run_id": {
            "type": "string",
            "format": "uuid",
            "title": "Run Id",
            "description": "Unique identifier for this workflow run."
          },
          "status": {
            "$ref": "#/components/schemas/BlueprintRunStatus",
            "description": "Current run status: PENDING or RUNNING."
          },
          "estimated_price_creative_units": {
            "type": "number",
            "title": "Estimated Price Creative Units",
            "description": "Estimated price in Creative Units."
          },
          "poll_interval_seconds": {
            "type": "integer",
            "title": "Poll Interval Seconds",
            "description": "Suggested polling interval in seconds."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Timestamp of when the run was created."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Id",
            "description": "Session ID the run was added to, if a session was specified."
          }
        },
        "type": "object",
        "required": [
          "run_id",
          "status",
          "estimated_price_creative_units",
          "poll_interval_seconds",
          "created_at"
        ],
        "title": "ExecuteWorkflowOutput"
      },
      "ExecuteWorkflowRequest": {
        "properties": {
          "inputs": {
            "additionalProperties": true,
            "type": "object",
            "title": "Inputs",
            "description": "Input values matching the workflow's input schema."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Id",
            "description": "Existing session ID. Takes precedence over session_name if both are provided."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Name",
            "description": "Session name. Creates a new session if not found in the workspace. Ignored if session_id is set."
          }
        },
        "type": "object",
        "required": [
          "inputs"
        ],
        "title": "ExecuteWorkflowRequest"
      },
      "FileScore": {
        "properties": {
          "rule_id": {
            "type": "string",
            "format": "uuid",
            "title": "Rule Id",
            "description": "The rule that produced this verdict."
          },
          "rule_name": {
            "type": "string",
            "title": "Rule Name",
            "description": "The rule's name as it was when the file was judged."
          },
          "score": {
            "type": "integer",
            "title": "Score",
            "description": "The verdict, 0-100. Higher is a closer match to what the rule asks for."
          },
          "rationale": {
            "type": "string",
            "title": "Rationale",
            "description": "The judge's explanation of the score."
          },
          "judged_by_model": {
            "type": "string",
            "title": "Judged By Model",
            "description": "The model that judged it."
          },
          "judged_at": {
            "type": "string",
            "format": "date-time",
            "title": "Judged At",
            "description": "When the verdict was recorded."
          }
        },
        "type": "object",
        "required": [
          "rule_id",
          "rule_name",
          "score",
          "rationale",
          "judged_by_model",
          "judged_at"
        ],
        "title": "FileScore"
      },
      "FileScoresOutput": {
        "properties": {
          "file_id": {
            "type": "string",
            "format": "uuid",
            "title": "File Id",
            "description": "Echoes the requested file id."
          },
          "scores": {
            "items": {
              "$ref": "#/components/schemas/FileScore"
            },
            "type": "array",
            "title": "Scores",
            "description": "The current verdict per rule — the newest one, where a file has been scored more than once."
          },
          "headline_score": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Headline Score",
            "description": "The score stamped on the file itself, from the rule its scope nominated. Null when the file has not been judged by that rule."
          },
          "headline_rule_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Headline Rule Id",
            "description": "The rule the stamped score came from."
          },
          "headline_scored_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Headline Scored At",
            "description": "When the stamp was written."
          }
        },
        "type": "object",
        "required": [
          "file_id",
          "scores"
        ],
        "title": "FileScoresOutput"
      },
      "FileSourceType": {
        "type": "string",
        "enum": [
          "pose",
          "reference",
          "mask",
          "composite",
          "google_drive",
          "miro",
          "transformed_reference",
          "skill_resource",
          "skill_bundle"
        ],
        "title": "FileSourceType"
      },
      "ForgeGuidanceFileInput": {
        "properties": {
          "file_id": {
            "type": "string",
            "format": "uuid",
            "title": "File Id",
            "description": "File ID of an uploaded file."
          },
          "type": {
            "$ref": "#/components/schemas/GuidanceFileType",
            "description": "Guidance type. See model capabilities for supported types per model."
          },
          "weight": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight",
            "description": "Influence weight (0-1). Defaults to 0.5 for init, 1 for others."
          }
        },
        "type": "object",
        "required": [
          "file_id",
          "type"
        ],
        "title": "ForgeGuidanceFileInput"
      },
      "ForgeMaskInput": {
        "properties": {
          "file_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Id",
            "description": "Mask image file ID."
          },
          "for_transparency": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "For Transparency",
            "description": "Use transparent areas as mask."
          },
          "for_nontransparency": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "For Nontransparency",
            "description": "Use non-transparent areas as mask."
          },
          "edge_radius": {
            "type": "integer",
            "minimum": 0,
            "title": "Edge Radius",
            "description": "Mask edge blur radius in pixels.",
            "default": 0
          }
        },
        "type": "object",
        "title": "ForgeMaskInput"
      },
      "ForgeReferenceSetContribution": {
        "properties": {
          "set_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Set Id",
            "description": "Reference Set ID this contribution belongs to, if any."
          },
          "lora_applied": {
            "type": "boolean",
            "title": "Lora Applied",
            "description": "True when a LoRA finetune was applied for this set.",
            "default": false
          },
          "animation_applied": {
            "type": "boolean",
            "title": "Animation Applied",
            "description": "True when an animation (Meshy rigging action) finetune was applied for this set.",
            "default": false
          },
          "voice_applied": {
            "type": "boolean",
            "title": "Voice Applied",
            "description": "True when a voice (ElevenLabs) finetune was applied for this set.",
            "default": false
          },
          "mapped_asset_count": {
            "type": "integer",
            "title": "Mapped Asset Count",
            "description": "Number of assets successfully mapped to guidance inputs.",
            "default": 0
          },
          "prompt_fallback_applied": {
            "type": "boolean",
            "title": "Prompt Fallback Applied",
            "description": "True when the set fell back to prompt-only representation.",
            "default": false
          },
          "lora_available_but_incompatible": {
            "type": "boolean",
            "title": "Lora Available But Incompatible",
            "description": "True when SBMC has a LoRA for this set on another base model but not the one used.",
            "default": false
          },
          "skipped_not_applicable": {
            "type": "boolean",
            "title": "Skipped Not Applicable",
            "description": "True when the set isn't applicable to the chosen model (its modality / applicable base models exclude it) so no LoRA or assets were applied.",
            "default": false
          }
        },
        "type": "object",
        "title": "ForgeReferenceSetContribution"
      },
      "ForgeRunAsset": {
        "properties": {
          "file_id": {
            "type": "string",
            "format": "uuid",
            "title": "File Id",
            "description": "File ID for the generated asset."
          },
          "url": {
            "type": "string",
            "title": "Url",
            "description": "Download URL for the asset."
          },
          "content_type": {
            "type": "string",
            "title": "Content Type",
            "description": "MIME type, e.g. image/png or video/mp4."
          },
          "preview_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preview Url",
            "description": "Thumbnail/preview URL."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width",
            "description": "Width in pixels."
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height",
            "description": "Height in pixels."
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds",
            "description": "Duration for video/audio assets."
          },
          "file_size_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Size Bytes",
            "description": "File size in bytes."
          }
        },
        "type": "object",
        "required": [
          "file_id",
          "url",
          "content_type"
        ],
        "title": "ForgeRunAsset"
      },
      "ForgeVideoEffectInput": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/VideoEffectType",
            "description": "Video effect type. See model capabilities for supported effects per model."
          },
          "weight": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight",
            "description": "Effect strength (0-100)."
          }
        },
        "type": "object",
        "required": [
          "type"
        ],
        "title": "ForgeVideoEffectInput"
      },
      "GetForgeRunOutput": {
        "properties": {
          "inference_id": {
            "type": "string",
            "format": "uuid",
            "title": "Inference Id",
            "description": "Unique identifier for this forge run."
          },
          "status": {
            "$ref": "#/components/schemas/InferenceStatus",
            "description": "Current status: in_progress, complete, failed, cancelled, or deleted."
          },
          "poll_interval_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Poll Interval Seconds",
            "description": "Suggested polling interval in seconds. Present while IN_PROGRESS."
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "Completion timestamp. Present only on COMPLETE."
          },
          "outputs": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ForgeRunAsset"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outputs",
            "description": "Generated assets. Present only on COMPLETE."
          },
          "actual_price_creative_units": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Price Creative Units",
            "description": "Actual Creative Units charged. Present only on COMPLETE."
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Error message. Present only on FAILED."
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Code",
            "description": "Machine-readable error code. Present only on FAILED. Balance-related values: `INSUFFICIENT_BALANCE` (the workspace ran out of Creative Units — top up and resubmit) and `BALANCE_UNAVAILABLE` (the balance could not be verified — retry later)."
          }
        },
        "type": "object",
        "required": [
          "inference_id",
          "status"
        ],
        "title": "GetForgeRunOutput"
      },
      "GetInferenceRunV2Output": {
        "properties": {
          "inference_id": {
            "type": "string",
            "format": "uuid",
            "title": "Inference Id",
            "description": "Unique identifier for this inference run."
          },
          "status": {
            "$ref": "#/components/schemas/InferenceStatus",
            "description": "Current status: in_progress, complete, failed, cancelled, or deleted."
          },
          "poll_interval_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Poll Interval Seconds",
            "description": "Suggested polling interval in seconds. Present while IN_PROGRESS."
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "Completion timestamp. Present only on COMPLETE."
          },
          "outputs": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ForgeRunAsset"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outputs",
            "description": "Generated assets. Present only on COMPLETE."
          },
          "actual_price_creative_units": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Price Creative Units",
            "description": "Actual Creative Units charged. Present only on COMPLETE."
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Error message. Present only on FAILED."
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Code",
            "description": "Machine-readable error code. Present only on FAILED. Balance-related values: `INSUFFICIENT_BALANCE` (the workspace ran out of Creative Units — top up and resubmit) and `BALANCE_UNAVAILABLE` (the balance could not be verified — retry later)."
          },
          "base_model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Id",
            "description": "Base model the run used, resolved or auto-picked."
          },
          "reference_set_contributions": {
            "items": {
              "$ref": "#/components/schemas/ForgeReferenceSetContribution"
            },
            "type": "array",
            "title": "Reference Set Contributions",
            "description": "Per-set summary of what each reference set contributed.",
            "default": []
          },
          "reference_sets_degraded": {
            "type": "boolean",
            "title": "Reference Sets Degraded",
            "description": "True when at least one attached reference set did not meaningfully contribute. The run still costs Creative Units.",
            "default": false
          },
          "reference_sets_warning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Sets Warning",
            "description": "Names each degraded reference set and why, or null when none is degraded."
          }
        },
        "type": "object",
        "required": [
          "inference_id",
          "status"
        ],
        "title": "GetInferenceRunV2Output"
      },
      "GetModelRESTOutput": {
        "properties": {
          "model": {
            "$ref": "#/components/schemas/ModelDetailREST"
          }
        },
        "type": "object",
        "required": [
          "model"
        ],
        "title": "GetModelRESTOutput"
      },
      "GetReferenceSetOutput": {
        "properties": {
          "reference_set_id": {
            "type": "string",
            "format": "uuid",
            "title": "Reference Set Id"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Display name of the reference set."
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "URL-safe slug of the reference set."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Free-text description."
          },
          "category": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StyleCategory"
              },
              {
                "type": "null"
              }
            ],
            "description": "Category, e.g. character or object."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "complete",
              "archived"
            ],
            "title": "Status",
            "description": "Lifecycle status: draft, complete, or archived."
          },
          "asset_count": {
            "type": "integer",
            "title": "Asset Count",
            "description": "Number of files attached to the reference set."
          },
          "files": {
            "items": {
              "$ref": "#/components/schemas/ReferenceSetFile"
            },
            "type": "array",
            "title": "Files",
            "description": "Attached files, ordered by index."
          }
        },
        "type": "object",
        "required": [
          "reference_set_id",
          "name",
          "slug",
          "status",
          "asset_count"
        ],
        "title": "GetReferenceSetOutput"
      },
      "GetTrainingRunResponse": {
        "properties": {
          "training_run_id": {
            "type": "string",
            "format": "uuid",
            "title": "Training Run Id"
          },
          "state": {
            "type": "string",
            "enum": [
              "in_progress",
              "terminal_success",
              "terminal_failure"
            ],
            "title": "State",
            "description": "in_progress, terminal_success, or terminal_failure."
          },
          "raw_status": {
            "type": "string",
            "title": "Raw Status",
            "description": "Fine-grained run status."
          },
          "progress": {
            "type": "number",
            "title": "Progress",
            "description": "Training progress in [0, 1]; 1.0 when complete."
          },
          "poll_interval_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Poll Interval Seconds",
            "description": "Suggested polling interval in seconds. Present while in_progress."
          },
          "eta_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Eta At",
            "description": "Estimated completion time, if known."
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "finished_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Finished At"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Error message. Present only on terminal_failure."
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Code",
            "description": "Machine-readable error code. Present on terminal_failure."
          }
        },
        "type": "object",
        "required": [
          "training_run_id",
          "state",
          "raw_status",
          "progress"
        ],
        "title": "GetTrainingRunResponse"
      },
      "GetWorkflowRunOutput": {
        "properties": {
          "run_id": {
            "type": "string",
            "format": "uuid",
            "title": "Run Id",
            "description": "Unique identifier for this workflow run."
          },
          "status": {
            "$ref": "#/components/schemas/BlueprintRunStatus",
            "description": "Current status: pending, running, success, failure, or cancelled."
          },
          "poll_interval_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Poll Interval Seconds",
            "description": "Suggested polling interval in seconds. Present while PENDING or RUNNING."
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/GetWorkflowRunStep"
            },
            "type": "array",
            "title": "Steps",
            "description": "Status of each step composing the workflow run.",
            "default": []
          },
          "estimated_price_creative_units": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Price Creative Units",
            "description": "Estimated Creative Units price. Present when available."
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "Completion timestamp. Present only on SUCCESS."
          },
          "actual_price_creative_units": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Price Creative Units",
            "description": "Actual Creative Units price charged. Present only on SUCCESS."
          },
          "outputs": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/WorkflowRunAsset"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outputs",
            "description": "Generated assets. Present only on SUCCESS."
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Error message. Present only on FAILURE."
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Code",
            "description": "Machine-readable error code. Present only on FAILURE. Balance-related values: `BlueprintInsufficientBalanceError` (the workspace ran out of Creative Units — top up and resubmit) and `BlueprintBalanceUnavailableError` (the balance could not be verified — retry later)."
          }
        },
        "type": "object",
        "required": [
          "run_id",
          "status"
        ],
        "title": "GetWorkflowRunOutput"
      },
      "GetWorkflowRunStep": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "The name of the workflow step"
          },
          "status": {
            "$ref": "#/components/schemas/BlueprintRunStatus",
            "description": "The execution status of the step: pending, running, success, failure, or cancelled."
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "The error details if any"
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Code",
            "description": "Machine-readable error code if the step failed."
          }
        },
        "type": "object",
        "required": [
          "name",
          "status"
        ],
        "title": "GetWorkflowRunStep"
      },
      "GroupMemberOut": {
        "properties": {
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id",
            "description": "The member's user id."
          },
          "email": {
            "type": "string",
            "title": "Email",
            "description": "The member's email address."
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "The member's display name, if set."
          },
          "status": {
            "$ref": "#/components/schemas/GroupMembershipStatus",
            "description": "Group membership status."
          }
        },
        "type": "object",
        "required": [
          "user_id",
          "email",
          "status"
        ],
        "title": "GroupMemberOut"
      },
      "GroupMembershipStatus": {
        "type": "string",
        "enum": [
          "active",
          "suspended"
        ],
        "title": "GroupMembershipStatus"
      },
      "GroupOut": {
        "properties": {
          "group_id": {
            "type": "string",
            "format": "uuid",
            "title": "Group Id",
            "description": "The group's unique identifier."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "The group's name."
          },
          "role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Role"
              },
              {
                "type": "null"
              }
            ],
            "description": "The workspace role this group grants its members, if any."
          },
          "role_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role Id",
            "description": "Id of the role actually assigned. A custom role reports its own id here while `role` reports the builtin floor it grants, so read this to tell the two apart."
          }
        },
        "type": "object",
        "required": [
          "group_id",
          "name"
        ],
        "title": "GroupOut"
      },
      "GuidanceFileType": {
        "type": "string",
        "enum": [
          "init_image",
          "reference_image",
          "scribble",
          "color_sketch",
          "pose",
          "depth",
          "canny",
          "softedge_hed",
          "segmentation",
          "lineart",
          "face",
          "ip_adapter",
          "first_frame",
          "last_frame",
          "init_video",
          "reference_video",
          "init_mesh",
          "texture_image",
          "element_frontal_image",
          "element_reference_image",
          "element_video",
          "init_audio",
          "reference_audio"
        ],
        "title": "GuidanceFileType",
        "description": "What a guidance file *is*.\n\nThe type names the medium and the slot the file occupies. Where a model conditions on a\nfile through a different provider input — the legacy IP-adapter path — that is its own\ntype, because it is not the same slot."
      },
      "InferenceReferenceSetInput": {
        "properties": {
          "set_id": {
            "type": "string",
            "format": "uuid",
            "title": "Set Id",
            "description": "Reference set ID from GET /v2/workspaces/{workspace_id}/reference-sets."
          },
          "weight": {
            "type": "number",
            "maximum": 2,
            "minimum": 0,
            "title": "Weight",
            "description": "Weight for the set's LoRA adapter when one applies. Ignored for sets applied as reference images or prompt text.",
            "default": 1
          }
        },
        "type": "object",
        "required": [
          "set_id"
        ],
        "title": "InferenceReferenceSetInput"
      },
      "InferenceStatus": {
        "type": "string",
        "enum": [
          "in_progress",
          "complete",
          "failed",
          "cancelled",
          "deleted"
        ],
        "title": "InferenceStatus"
      },
      "InferenceUseCase": {
        "type": "string",
        "enum": [
          "text_to_image",
          "image_editing",
          "multi_angle",
          "inpainting",
          "reframing",
          "split_into_layers",
          "text_to_video",
          "image_to_video",
          "video_editing",
          "video_extend",
          "video_subtitle",
          "video_lipsync",
          "image_to_video_lipsync",
          "text_to_3d",
          "image_to_3d",
          "remesh",
          "retexture",
          "uv_unwrap",
          "animate",
          "rig",
          "segment",
          "image_segment",
          "text_to_speech",
          "sound_effects",
          "music",
          "upscaling",
          "video_interpolation",
          "denoise_image",
          "denoise_video",
          "deblur_video",
          "restore_image",
          "sdr_to_hdr_video",
          "background_removal",
          "vectorization",
          "virtual_try_on"
        ],
        "title": "InferenceUseCase"
      },
      "InviteMemberBody": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email",
            "description": "Email of the person to invite. A Layer user is created if none exists."
          },
          "role": {
            "$ref": "#/components/schemas/Role",
            "description": "Workspace role to grant. Defaults to member.",
            "default": "member"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "InviteMemberBody"
      },
      "LibraryObjectType": {
        "type": "string",
        "enum": [
          "directory",
          "file",
          "asset",
          "style",
          "blueprint",
          "skill"
        ],
        "title": "LibraryObjectType"
      },
      "ListBaseModelsOutput": {
        "properties": {
          "base_models": {
            "items": {
              "$ref": "#/components/schemas/BaseModelSummary"
            },
            "type": "array",
            "title": "Base Models"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "base_models",
          "pagination"
        ],
        "title": "ListBaseModelsOutput"
      },
      "ListGroupMembersOutput": {
        "properties": {
          "members": {
            "items": {
              "$ref": "#/components/schemas/GroupMemberOut"
            },
            "type": "array",
            "title": "Members"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "members",
          "pagination"
        ],
        "title": "ListGroupMembersOutput"
      },
      "ListGroupsOutput": {
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/GroupOut"
            },
            "type": "array",
            "title": "Groups"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "groups",
          "pagination"
        ],
        "title": "ListGroupsOutput"
      },
      "ListMembersOutput": {
        "properties": {
          "members": {
            "items": {
              "$ref": "#/components/schemas/MemberOutput"
            },
            "type": "array",
            "title": "Members"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "members",
          "pagination"
        ],
        "title": "ListMembersOutput"
      },
      "ListModelsOutput": {
        "properties": {
          "models": {
            "items": {
              "$ref": "#/components/schemas/ModelSummary"
            },
            "type": "array",
            "title": "Models"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "models",
          "pagination"
        ],
        "title": "ListModelsOutput"
      },
      "ListProjectsOutput": {
        "properties": {
          "projects": {
            "items": {
              "$ref": "#/components/schemas/ProjectSummary"
            },
            "type": "array",
            "title": "Projects"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "projects",
          "pagination"
        ],
        "title": "ListProjectsOutput"
      },
      "ListReferenceSetsOutput": {
        "properties": {
          "reference_sets": {
            "items": {
              "$ref": "#/components/schemas/ReferenceSetSummary"
            },
            "type": "array",
            "title": "Reference Sets"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "reference_sets",
          "pagination"
        ],
        "title": "ListReferenceSetsOutput"
      },
      "ListScoringRulesOutput": {
        "properties": {
          "rules": {
            "items": {
              "$ref": "#/components/schemas/ScoringRuleSummary"
            },
            "type": "array",
            "title": "Rules",
            "description": "Every rule in force for the scope, workspace-mandated rules first."
          }
        },
        "type": "object",
        "required": [
          "rules"
        ],
        "title": "ListScoringRulesOutput"
      },
      "ListTrainingRunsResponse": {
        "properties": {
          "runs": {
            "items": {
              "$ref": "#/components/schemas/TrainingRunSummary"
            },
            "type": "array",
            "title": "Runs"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "runs",
          "pagination"
        ],
        "title": "ListTrainingRunsResponse"
      },
      "ListWorkflowsOutput": {
        "properties": {
          "workflows": {
            "items": {
              "$ref": "#/components/schemas/WorkflowSummary"
            },
            "type": "array",
            "title": "Workflows"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "workflows",
          "pagination"
        ],
        "title": "ListWorkflowsOutput"
      },
      "ListWorkspacesOutput": {
        "properties": {
          "workspaces": {
            "items": {
              "$ref": "#/components/schemas/WorkspaceInfo"
            },
            "type": "array",
            "title": "Workspaces",
            "description": "All workspaces the authenticated user belongs to, ordered by most recently active first."
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationOutput"
          }
        },
        "type": "object",
        "required": [
          "workspaces",
          "pagination"
        ],
        "title": "ListWorkspacesOutput"
      },
      "MemberOutput": {
        "properties": {
          "membership_id": {
            "type": "string",
            "format": "uuid",
            "title": "Membership Id",
            "description": "The workspace membership's unique identifier."
          },
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id",
            "description": "The member's user id."
          },
          "email": {
            "type": "string",
            "title": "Email",
            "description": "The member's email address."
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "The member's display name, if set."
          },
          "role": {
            "$ref": "#/components/schemas/Role",
            "description": "The member's workspace role."
          },
          "status": {
            "$ref": "#/components/schemas/WorkspaceMembershipStatus",
            "description": "Membership status: active or suspended."
          }
        },
        "type": "object",
        "required": [
          "membership_id",
          "user_id",
          "email",
          "role",
          "status"
        ],
        "title": "MemberOutput"
      },
      "Modality": {
        "type": "string",
        "enum": [
          "text",
          "image",
          "audio",
          "video",
          "three_d",
          "playable"
        ],
        "title": "Modality"
      },
      "ModelCapabilitiesREST": {
        "properties": {
          "session_modes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Session Modes",
            "description": "Supported modes: create, create_video, create_3_d, create_speech, create_sound_effect, prompt_edit_image, etc."
          },
          "text_prompt": {
            "type": "boolean",
            "title": "Text Prompt",
            "default": false
          },
          "text_prompt_required": {
            "type": "boolean",
            "title": "Text Prompt Required",
            "default": false
          },
          "negative_prompt": {
            "type": "boolean",
            "title": "Negative Prompt",
            "default": false
          },
          "seed": {
            "type": "boolean",
            "title": "Seed",
            "default": false
          },
          "inpainting": {
            "type": "boolean",
            "title": "Inpainting",
            "default": false
          },
          "outpainting": {
            "type": "boolean",
            "title": "Outpainting",
            "default": false
          },
          "tileability": {
            "type": "boolean",
            "title": "Tileability",
            "default": false
          },
          "guidance_file_types": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Guidance File Types",
            "description": "Supported reference image types: pose, depth, canny, lineart, prompt (style reference), init, reference_image, etc."
          },
          "duration_seconds": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Duration Seconds",
            "description": "Supported video durations in seconds"
          },
          "auto_aspect_ratio": {
            "type": "boolean",
            "title": "Auto Aspect Ratio",
            "default": false
          },
          "generate_audio": {
            "type": "boolean",
            "title": "Generate Audio",
            "default": false
          },
          "lipsync": {
            "type": "boolean",
            "title": "Lipsync",
            "default": false
          },
          "textures": {
            "type": "boolean",
            "title": "Textures",
            "default": false
          },
          "quad_mesh": {
            "type": "boolean",
            "title": "Quad Mesh",
            "default": false
          },
          "pbr_materials": {
            "type": "boolean",
            "title": "Pbr Materials",
            "default": false
          },
          "text_to_speech": {
            "type": "boolean",
            "title": "Text To Speech",
            "default": false
          },
          "sound_effect": {
            "type": "boolean",
            "title": "Sound Effect",
            "default": false
          },
          "music": {
            "type": "boolean",
            "title": "Music",
            "default": false
          },
          "voice_changer": {
            "type": "boolean",
            "title": "Voice Changer",
            "default": false
          },
          "text_to_dialogue": {
            "type": "boolean",
            "title": "Text To Dialogue",
            "default": false
          },
          "audio_separation": {
            "type": "boolean",
            "title": "Audio Separation",
            "default": false
          },
          "audio_isolation": {
            "type": "boolean",
            "title": "Audio Isolation",
            "default": false
          },
          "audio_inpaint": {
            "type": "boolean",
            "title": "Audio Inpaint",
            "default": false
          },
          "audio_outpaint": {
            "type": "boolean",
            "title": "Audio Outpaint",
            "default": false
          },
          "audio_denoise": {
            "type": "boolean",
            "title": "Audio Denoise",
            "default": false
          }
        },
        "type": "object",
        "title": "ModelCapabilitiesREST",
        "description": "ModelCapabilities without the MCP token-saving serializer — returns all fields."
      },
      "ModelDetailREST": {
        "properties": {
          "model_id": {
            "type": "string",
            "format": "uuid",
            "title": "Model Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "modality": {
            "$ref": "#/components/schemas/Modality"
          },
          "base_model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Id"
          },
          "base_model_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "inference_timing": {
            "type": "string",
            "title": "Inference Timing"
          },
          "capabilities": {
            "$ref": "#/components/schemas/ModelCapabilitiesREST"
          },
          "prompt_format": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt Format"
          }
        },
        "type": "object",
        "required": [
          "model_id",
          "name",
          "modality",
          "inference_timing",
          "capabilities"
        ],
        "title": "ModelDetailREST"
      },
      "ModelSummary": {
        "properties": {
          "model_id": {
            "type": "string",
            "format": "uuid",
            "title": "Model Id",
            "description": "Unique model identifier — use for generation or to fetch full details."
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "modality": {
            "$ref": "#/components/schemas/Modality",
            "description": "image, video, three_d, or audio"
          },
          "base_model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Id",
            "description": "Base model identifier, e.g. flux_2_pro, kling_v3_pro"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Model description"
          },
          "inference_timing": {
            "type": "string",
            "title": "Inference Timing",
            "description": "Typical generation time range, e.g. '5-15s'"
          }
        },
        "type": "object",
        "required": [
          "model_id",
          "name",
          "modality",
          "inference_timing"
        ],
        "title": "ModelSummary"
      },
      "NormalizedInferenceParameters": {
        "properties": {
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width",
            "description": "Resolved output width in pixels."
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height",
            "description": "Resolved output height in pixels."
          },
          "batch_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Batch Size",
            "description": "Number of outputs to generate."
          },
          "num_inference_steps": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Num Inference Steps",
            "description": "Resolved number of diffusion steps."
          },
          "guidance_scale": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Guidance Scale",
            "description": "Resolved guidance scale."
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds",
            "description": "Resolved video duration in seconds."
          },
          "fps": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fps",
            "description": "Resolved FPS."
          }
        },
        "type": "object",
        "title": "NormalizedInferenceParameters",
        "description": "Inference parameters after model-specific normalization.\n\nThese reflect the actual values used for generation, including\nmodel defaults applied for any parameters not explicitly set."
      },
      "NormalizedInferenceParametersV2": {
        "properties": {
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width",
            "description": "Resolved output width in pixels."
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height",
            "description": "Resolved output height in pixels."
          },
          "batch_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Batch Size",
            "description": "Number of outputs to generate."
          },
          "num_inference_steps": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Num Inference Steps",
            "description": "Resolved number of diffusion steps."
          },
          "guidance_scale": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Guidance Scale",
            "description": "Resolved guidance scale."
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds",
            "description": "Resolved video duration in seconds."
          },
          "fps": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fps",
            "description": "Resolved FPS."
          }
        },
        "type": "object",
        "title": "NormalizedInferenceParametersV2",
        "description": "Inference parameters after model-specific normalization.\n\nThese reflect the actual values used for generation, including\nmodel defaults applied for any parameters not explicitly set."
      },
      "PaginationOutput": {
        "properties": {
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor",
            "description": "Cursor to use to get the next page"
          },
          "has_more_results": {
            "type": "boolean",
            "title": "Has More Results",
            "description": "If there are more results to page through"
          },
          "total_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Count",
            "description": "Total number of results matching the query"
          }
        },
        "type": "object",
        "required": [
          "has_more_results"
        ],
        "title": "PaginationOutput"
      },
      "PoseMode": {
        "type": "string",
        "enum": [
          "A_POSE",
          "T_POSE"
        ],
        "title": "PoseMode",
        "description": "Canonical rest pose a character-mesh model is asked to generate in.\n``A_POSE`` places the arms angled down at roughly 45°; ``T_POSE`` holds them\nstraight out to the sides. Only meaningful for models that advertise the\n``pose_modes`` capability (e.g. Meshy V7).\n\nDeliberately a light top-level module (like ``base_model_id``), NOT under\n``pkg.models.inference``: the Blueprint definition layer registers this as a\nBlueprintType and migrates legacy node ports, and must do so without pulling\nin the heavy ``pkg.models.inference`` package, which would perturb the Temporal\nworkflow-sandbox import graph and split pydantic class identity."
      },
      "ProjectDetail": {
        "properties": {
          "project_id": {
            "type": "string",
            "format": "uuid",
            "title": "Project Id",
            "description": "The project's unique identifier."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "The project's display name."
          },
          "status": {
            "$ref": "#/components/schemas/ProjectStatus",
            "description": "Project status: active or archived."
          },
          "object_count": {
            "type": "integer",
            "title": "Object Count",
            "description": "Number of library objects currently linked to this project."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "The project's long-form description, if set."
          },
          "instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Instructions",
            "description": "Project-specific instructions that guide content created within it, if set."
          }
        },
        "type": "object",
        "required": [
          "project_id",
          "name",
          "status",
          "object_count"
        ],
        "title": "ProjectDetail"
      },
      "ProjectMember": {
        "properties": {
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id",
            "description": "The member's user id."
          }
        },
        "type": "object",
        "required": [
          "user_id"
        ],
        "title": "ProjectMember"
      },
      "ProjectMembersOutput": {
        "properties": {
          "members": {
            "items": {
              "$ref": "#/components/schemas/ProjectMember"
            },
            "type": "array",
            "title": "Members",
            "description": "The project's members after the add (idempotent)."
          }
        },
        "type": "object",
        "required": [
          "members"
        ],
        "title": "ProjectMembersOutput"
      },
      "ProjectStatus": {
        "type": "string",
        "enum": [
          "active",
          "archived",
          "deleted"
        ],
        "title": "ProjectStatus"
      },
      "ProjectSummary": {
        "properties": {
          "project_id": {
            "type": "string",
            "format": "uuid",
            "title": "Project Id",
            "description": "The project's unique identifier."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "The project's display name."
          },
          "status": {
            "$ref": "#/components/schemas/ProjectStatus",
            "description": "Project status: active or archived."
          },
          "object_count": {
            "type": "integer",
            "title": "Object Count",
            "description": "Number of library objects currently linked to this project."
          }
        },
        "type": "object",
        "required": [
          "project_id",
          "name",
          "status",
          "object_count"
        ],
        "title": "ProjectSummary"
      },
      "ReferenceSetFile": {
        "properties": {
          "file_id": {
            "type": "string",
            "format": "uuid",
            "title": "File Id",
            "description": "ID of a file attached to the reference set."
          },
          "url": {
            "type": "string",
            "title": "Url",
            "description": "Download URL for the file."
          },
          "content_type": {
            "type": "string",
            "title": "Content Type",
            "description": "MIME type, e.g. image/png or video/mp4."
          },
          "index": {
            "type": "integer",
            "title": "Index",
            "description": "Ordinal position of the file within the reference set."
          },
          "caption": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Caption",
            "description": "Training caption, or null when uncaptioned."
          },
          "view_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "View Type",
            "description": "Multi-view tag when set: front_image, back_image, left_image, right_image, top_image, or bottom_image."
          }
        },
        "type": "object",
        "required": [
          "file_id",
          "url",
          "content_type",
          "index"
        ],
        "title": "ReferenceSetFile"
      },
      "ReferenceSetSummary": {
        "properties": {
          "reference_set_id": {
            "type": "string",
            "format": "uuid",
            "title": "Reference Set Id",
            "description": "Reference set identifier — pass it in `reference_sets`."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Display name of the reference set."
          },
          "category": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StyleCategory"
              },
              {
                "type": "null"
              }
            ],
            "description": "Category, e.g. character or object."
          },
          "has_active_finetune": {
            "type": "boolean",
            "title": "Has Active Finetune",
            "description": "True when the set has a trained custom model."
          }
        },
        "type": "object",
        "required": [
          "reference_set_id",
          "name",
          "has_active_finetune"
        ],
        "title": "ReferenceSetSummary"
      },
      "RequestUploadUrlRequest": {
        "properties": {
          "content_type": {
            "type": "string",
            "title": "Content Type",
            "description": "MIME type of the file to upload."
          },
          "file_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Name",
            "description": "Optional file name."
          },
          "file_size_bytes": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "title": "File Size Bytes",
            "description": "Expected file size in bytes. Used to enforce upload limits."
          },
          "source_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FileSourceType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional source type for the file. Use 'mask' to upload a mask for inpainting/masked-edit, then pass the returned file_id as the mask in a generation request. Mask uploads must be image files."
          }
        },
        "type": "object",
        "required": [
          "content_type",
          "file_size_bytes"
        ],
        "title": "RequestUploadUrlRequest"
      },
      "RequestUploadUrlResponse": {
        "properties": {
          "file_id": {
            "type": "string",
            "format": "uuid",
            "title": "File Id",
            "description": "Unique identifier for the file. Use as input to generation endpoints after upload completes."
          },
          "upload_url": {
            "type": "string",
            "title": "Upload Url",
            "description": "Signed upload URL. POST to this URL to initiate a resumable upload, then PUT file chunks to the session URI returned in the Location header. Expires in 15 minutes."
          },
          "content_type": {
            "type": "string",
            "title": "Content Type",
            "description": "MIME type to use when uploading."
          },
          "source_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FileSourceType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Source type the file was created with, echoed from the request."
          }
        },
        "type": "object",
        "required": [
          "file_id",
          "upload_url",
          "content_type"
        ],
        "title": "RequestUploadUrlResponse"
      },
      "Role": {
        "type": "string",
        "enum": [
          "admin",
          "editor",
          "settings_admin",
          "art_director",
          "artist",
          "member"
        ],
        "title": "Role"
      },
      "ScoreFilesBody": {
        "properties": {
          "file_ids": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "maxItems": 100,
            "minItems": 1,
            "title": "File Ids",
            "description": "The files to score. Images, video and 3D can be judged; audio and text cannot."
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Project Id",
            "description": "Score under a project's policy as well as the workspace's. A project's rules are added to its workspace's, never replace them."
          },
          "rule_ids": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "title": "Rule Ids",
            "description": "Score against these rules only. Empty runs every rule in force for the scope.",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "file_ids"
        ],
        "title": "ScoreFilesBody"
      },
      "ScoreFilesOutput": {
        "properties": {
          "requested_pair_count": {
            "type": "integer",
            "title": "Requested Pair Count",
            "description": "How many (file, rule) judgements were queued — one model call each."
          },
          "file_count": {
            "type": "integer",
            "title": "File Count",
            "description": "How many files were accepted for scoring."
          },
          "rule_ids": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "title": "Rule Ids",
            "description": "The rules the files are being scored against."
          }
        },
        "type": "object",
        "required": [
          "requested_pair_count",
          "file_count",
          "rule_ids"
        ],
        "title": "ScoreFilesOutput"
      },
      "ScoringRuleSummary": {
        "properties": {
          "rule_id": {
            "type": "string",
            "format": "uuid",
            "title": "Rule Id",
            "description": "Pass this as a `rule_ids` entry to score against this rule alone."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "The rule's display name."
          },
          "prompt": {
            "type": "string",
            "title": "Prompt",
            "description": "What the rule asks of an asset, in the scope's own words."
          },
          "run_mode": {
            "$ref": "#/components/schemas/ScoringRunMode",
            "description": "`always` scores every new output automatically; `on_demand` only when asked."
          },
          "threshold": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Threshold",
            "description": "The line below which a score reads as a fail. Null leaves the score informational."
          },
          "modalities": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/Modality"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Modalities",
            "description": "The modalities the rule applies to. Null means every scoreable modality."
          },
          "reference_image_count": {
            "type": "integer",
            "title": "Reference Image Count",
            "description": "How many reference images the judge is shown alongside the prompt."
          },
          "is_project_rule": {
            "type": "boolean",
            "title": "Is Project Rule",
            "description": "True when the rule belongs to the project rather than being inherited from the workspace."
          },
          "is_nominated": {
            "type": "boolean",
            "title": "Is Nominated",
            "description": "True for the one rule whose score is stamped on assets as their headline score."
          }
        },
        "type": "object",
        "required": [
          "rule_id",
          "name",
          "prompt",
          "run_mode",
          "reference_image_count",
          "is_project_rule",
          "is_nominated"
        ],
        "title": "ScoringRuleSummary"
      },
      "ScoringRunMode": {
        "type": "string",
        "enum": [
          "always",
          "on_demand"
        ],
        "title": "ScoringRunMode",
        "description": "When a rule runs."
      },
      "SetUsageLimitBody": {
        "properties": {
          "cu_limit": {
            "type": "number",
            "maximum": 10000000,
            "exclusiveMinimum": 0,
            "title": "Cu Limit",
            "description": "Creative Units cap for the period."
          },
          "period": {
            "$ref": "#/components/schemas/UsageLimitPeriod",
            "description": "Reset period for the cap (e.g. DAILY, MONTHLY)."
          }
        },
        "type": "object",
        "required": [
          "cu_limit",
          "period"
        ],
        "title": "SetUsageLimitBody"
      },
      "SkippedFile": {
        "properties": {
          "file_id": {
            "type": "string",
            "format": "uuid",
            "title": "File Id"
          },
          "reason": {
            "type": "string",
            "enum": [
              "not_found",
              "foreign_workspace",
              "already_member",
              "duplicate_in_request"
            ],
            "title": "Reason",
            "description": "Why this file_id was not added: not_found (no such file), foreign_workspace (belongs to another workspace), already_member (already in the set), or duplicate_in_request (listed more than once in this call)."
          }
        },
        "type": "object",
        "required": [
          "file_id",
          "reason"
        ],
        "title": "SkippedFile"
      },
      "StartTrainingRequest": {
        "properties": {
          "reference_set_id": {
            "type": "string",
            "format": "uuid",
            "title": "Reference Set Id",
            "description": "The reference set (Style) to train a LoRA for."
          },
          "base_model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Id",
            "description": "Base model to train. Omit to use the reference set's configured or workspace default model."
          },
          "training_framework": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "fal",
                  "ai-toolkit"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Training Framework",
            "description": "Training framework override. Omit for the server default."
          }
        },
        "type": "object",
        "required": [
          "reference_set_id"
        ],
        "title": "StartTrainingRequest"
      },
      "StartTrainingResponse": {
        "properties": {
          "training_run_id": {
            "type": "string",
            "format": "uuid",
            "title": "Training Run Id",
            "description": "Unique identifier for this training run."
          },
          "state": {
            "type": "string",
            "enum": [
              "in_progress",
              "terminal_success",
              "terminal_failure"
            ],
            "title": "State",
            "description": "Coarse state; in_progress right after submission."
          },
          "raw_status": {
            "type": "string",
            "title": "Raw Status",
            "description": "Fine-grained run status (e.g. initializing)."
          },
          "base_model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Model Id",
            "description": "Base model the run trains with."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Timestamp the run was created."
          },
          "poll_interval_seconds": {
            "type": "integer",
            "title": "Poll Interval Seconds",
            "description": "Suggested polling interval in seconds."
          }
        },
        "type": "object",
        "required": [
          "training_run_id",
          "state",
          "raw_status",
          "created_at",
          "poll_interval_seconds"
        ],
        "title": "StartTrainingResponse"
      },
      "StyleCategory": {
        "type": "string",
        "enum": [
          "general",
          "character",
          "object",
          "scene",
          "effect",
          "animation"
        ],
        "title": "StyleCategory"
      },
      "ToolGuidanceFileTypeSupport": {
        "properties": {
          "type": {
            "type": "string",
            "title": "Type",
            "description": "Guidance file type, such as init_image, reference_image, first_frame, pose, or depth."
          },
          "max_count": {
            "type": "integer",
            "title": "Max Count",
            "description": "Maximum number of files of this type accepted by the model."
          }
        },
        "type": "object",
        "required": [
          "type",
          "max_count"
        ],
        "title": "ToolGuidanceFileTypeSupport"
      },
      "TrainedModelResponse": {
        "properties": {
          "finetune_id": {
            "type": "string",
            "format": "uuid",
            "title": "Finetune Id",
            "description": "ID of the trained finetune (LoRA) for the run."
          },
          "reference_set_id": {
            "type": "string",
            "format": "uuid",
            "title": "Reference Set Id"
          },
          "base_model_id": {
            "type": "string",
            "title": "Base Model Id"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether this finetune is the active one for the run's base model."
          }
        },
        "type": "object",
        "required": [
          "finetune_id",
          "reference_set_id",
          "base_model_id",
          "is_active"
        ],
        "title": "TrainedModelResponse"
      },
      "TrainingRunSummary": {
        "properties": {
          "training_run_id": {
            "type": "string",
            "format": "uuid",
            "title": "Training Run Id"
          },
          "reference_set_id": {
            "type": "string",
            "format": "uuid",
            "title": "Reference Set Id"
          },
          "state": {
            "type": "string",
            "enum": [
              "in_progress",
              "terminal_success",
              "terminal_failure"
            ],
            "title": "State"
          },
          "raw_status": {
            "type": "string",
            "title": "Raw Status"
          },
          "progress": {
            "type": "number",
            "title": "Progress",
            "description": "Training progress in [0, 1]; 1.0 when complete."
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          }
        },
        "type": "object",
        "required": [
          "training_run_id",
          "reference_set_id",
          "state",
          "raw_status",
          "progress"
        ],
        "title": "TrainingRunSummary"
      },
      "UpdateGroupBody": {
        "properties": {
          "role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Role"
              },
              {
                "type": "null"
              }
            ],
            "description": "New builtin role to grant members. Send null with no role_id to clear the group's role."
          },
          "role_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role Id",
            "description": "Id of a custom role to grant instead of a builtin `role`."
          }
        },
        "type": "object",
        "required": [
          "role"
        ],
        "title": "UpdateGroupBody"
      },
      "UpdateMemberBody": {
        "properties": {
          "role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Role"
              },
              {
                "type": "null"
              }
            ],
            "description": "New role, if changing."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WorkspaceMembershipStatus"
              },
              {
                "type": "null"
              }
            ],
            "description": "New status (active to reactivate, suspended to suspend), if changing."
          }
        },
        "type": "object",
        "title": "UpdateMemberBody"
      },
      "UpdateProjectBody": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "instructions": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200000
              },
              {
                "type": "null"
              }
            ],
            "title": "Instructions"
          },
          "archived": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Archived",
            "description": "Set true to archive, false to unarchive. Omit to leave unchanged."
          }
        },
        "type": "object",
        "title": "UpdateProjectBody"
      },
      "UsageLimitPeriod": {
        "type": "string",
        "enum": [
          "daily",
          "weekly",
          "monthly"
        ],
        "title": "UsageLimitPeriod"
      },
      "VideoEffectType": {
        "type": "string",
        "enum": [
          "general",
          "orbit_360",
          "action_run",
          "agent_reveal",
          "arc",
          "arc_left",
          "baseball_kick",
          "basketball_dunks",
          "boxing",
          "buckle_up",
          "building_explosion",
          "bullet_time",
          "car_chasing",
          "car_explosion",
          "car_grip",
          "catch",
          "catwalk",
          "crane_down",
          "crane_over_the_head",
          "crane_up",
          "crash_zoom_in",
          "crash_zoom_out",
          "dirty_lens",
          "disintegration",
          "dolly_in",
          "dolly_left",
          "dolly_out",
          "dolly_right",
          "dolly_zoom_in",
          "dolly_zoom_out",
          "double_dolly",
          "downhill_pov",
          "dutch_angle",
          "eyes_in",
          "face_punch",
          "fisheye",
          "flying",
          "focus_change",
          "fpv_drone",
          "glam",
          "handheld",
          "head_tracking",
          "hyperlapse",
          "invisible",
          "jib_down",
          "jib_up",
          "kiss",
          "lazy_susan",
          "lens_crack",
          "lens_flare",
          "levitation",
          "low_shutter",
          "melting",
          "moonwalk_left",
          "moonwalk_right",
          "mouth_in",
          "object_pov",
          "overhead",
          "push_to_glass",
          "rap_flex",
          "robo_arm",
          "set_on_fire",
          "skateboard_glide",
          "skateboarding",
          "skateboard_kickflip",
          "skateboard_ollie",
          "skate_cruise",
          "ski_carving",
          "ski_powder",
          "snorricam",
          "snowboard_carving",
          "snowboard_powder",
          "soul_jump",
          "static",
          "super_dolly_in",
          "super_dolly_out",
          "tentacles",
          "through_object_in",
          "through_object_out",
          "thunder_god",
          "tilt_down",
          "tilt_up",
          "timelapse_human",
          "timelapse_landscape",
          "turning_metal",
          "whip_pan",
          "wiggle",
          "wind_to_face",
          "yoyo_zoom",
          "zoom_in",
          "zoom_out"
        ],
        "title": "VideoEffectType"
      },
      "WorkflowInput": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Input parameter name (used as key in execute_workflow inputs)"
          },
          "type": {
            "type": "string",
            "title": "Type",
            "description": "Parameter type: string, number, boolean, file, prompt, etc."
          },
          "value_schema": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Schema",
            "description": "JSON schema of the input value"
          },
          "required": {
            "type": "boolean",
            "title": "Required",
            "description": "Whether this input must be provided"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What this input controls"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name",
            "description": "Human-readable label"
          },
          "default": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "title": "Default",
            "description": "Default value if not provided"
          }
        },
        "type": "object",
        "required": [
          "name",
          "type",
          "required",
          "description"
        ],
        "title": "WorkflowInput"
      },
      "WorkflowOutput": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Output parameter name"
          },
          "type": {
            "type": "string",
            "title": "Type",
            "description": "Output type: file, string, etc."
          },
          "value_schema": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Schema",
            "description": "JSON schema of the output value"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What this output contains"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name",
            "description": "Human-readable label"
          }
        },
        "type": "object",
        "required": [
          "name",
          "type",
          "description"
        ],
        "title": "WorkflowOutput"
      },
      "WorkflowRunAsset": {
        "properties": {
          "object_id": {
            "type": "string",
            "format": "uuid",
            "title": "Object Id",
            "description": "Unique identifier of the generated object."
          },
          "object_type": {
            "$ref": "#/components/schemas/LibraryObjectType",
            "description": "Type of generated object: file or asset."
          },
          "file_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Id",
            "description": "File ID — pass directly as input to forge or workflow runs without re-uploading."
          },
          "url": {
            "type": "string",
            "title": "Url",
            "description": "Download URL for the asset."
          },
          "content_type": {
            "type": "string",
            "title": "Content Type",
            "description": "MIME type, e.g. image/png or video/mp4."
          },
          "preview_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preview Url",
            "description": "Image preview URL."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width",
            "description": "Width in pixels."
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height",
            "description": "Height in pixels."
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds",
            "description": "Duration in seconds for video assets."
          },
          "file_size_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Size Bytes",
            "description": "File size in bytes."
          }
        },
        "type": "object",
        "required": [
          "object_id",
          "object_type",
          "url",
          "content_type"
        ],
        "title": "WorkflowRunAsset"
      },
      "WorkflowSummary": {
        "properties": {
          "workflow_id": {
            "type": "string",
            "format": "uuid",
            "title": "Workflow Id",
            "description": "Unique workflow identifier"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Workflow display name"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What this workflow generates"
          },
          "modality": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Modality"
              },
              {
                "type": "null"
              }
            ],
            "description": "Primary output modality: image, video, three_d, audio"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "When this workflow version was created"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At",
            "description": "When this workflow version was published"
          },
          "inputs": {
            "items": {
              "$ref": "#/components/schemas/WorkflowInput"
            },
            "type": "array",
            "title": "Inputs",
            "description": "Input parameters the workflow accepts"
          },
          "outputs": {
            "items": {
              "$ref": "#/components/schemas/WorkflowOutput"
            },
            "type": "array",
            "title": "Outputs",
            "description": "Output parameters the workflow produces"
          }
        },
        "type": "object",
        "required": [
          "workflow_id",
          "name",
          "description",
          "created_at",
          "inputs",
          "outputs"
        ],
        "title": "WorkflowSummary"
      },
      "WorkspaceInfo": {
        "properties": {
          "workspace_id": {
            "type": "string",
            "format": "uuid",
            "title": "Workspace Id",
            "description": "The workspace's unique identifier."
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "The workspace slug (its representation in the app URL)."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "The workspace display name."
          },
          "balance_creative_units": {
            "type": "number",
            "title": "Balance Creative Units",
            "description": "Total Creative Units balance before reservations."
          },
          "reserved_creative_units": {
            "type": "number",
            "title": "Reserved Creative Units",
            "description": "Creative Units reserved by in-progress generations."
          },
          "available_creative_units": {
            "type": "number",
            "title": "Available Creative Units",
            "description": "Usable balance (balance minus reserved). Can be negative."
          },
          "last_active_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Active At",
            "description": "When the current user was last active in this workspace."
          }
        },
        "type": "object",
        "required": [
          "workspace_id",
          "slug",
          "name",
          "balance_creative_units",
          "reserved_creative_units",
          "available_creative_units",
          "last_active_at"
        ],
        "title": "WorkspaceInfo"
      },
      "WorkspaceMembershipStatus": {
        "type": "string",
        "enum": [
          "active",
          "suspended"
        ],
        "title": "WorkspaceMembershipStatus"
      },
      "WorkspaceUsageOutput": {
        "properties": {
          "balance_creative_units": {
            "type": "number",
            "title": "Balance Creative Units",
            "description": "Current Creative Units balance."
          },
          "reserved_creative_units": {
            "type": "number",
            "title": "Reserved Creative Units",
            "description": "Creative Units reserved by in-flight generations."
          },
          "available_creative_units": {
            "type": "number",
            "title": "Available Creative Units",
            "description": "Balance minus reserved: what's spendable right now."
          },
          "period_start": {
            "type": "string",
            "title": "Period Start",
            "description": "Start of the reported window (UTC date)."
          },
          "period_end": {
            "type": "string",
            "title": "Period End",
            "description": "End of the reported window (UTC date)."
          },
          "total_creative_units": {
            "type": "number",
            "title": "Total Creative Units",
            "description": "Total Creative Units consumed over the window."
          },
          "daily": {
            "items": {
              "$ref": "#/components/schemas/DailyUsage"
            },
            "type": "array",
            "title": "Daily",
            "description": "Per-day Creative Units consumption over the window, oldest first."
          }
        },
        "type": "object",
        "required": [
          "balance_creative_units",
          "reserved_creative_units",
          "available_creative_units",
          "period_start",
          "period_end",
          "total_creative_units",
          "daily"
        ],
        "title": "WorkspaceUsageOutput"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Bearer authentication with a Layer Personal Access Token (PAT), prefixed `pat_`. Send it as `Authorization: Bearer <token>`. Create one in the app under Settings → Personal Access Tokens. An Auth0 session JWT is also accepted for first-party browser use."
      },
      "oauth2": {
        "type": "oauth2",
        "description": "OAuth 2.0 authorization against Layer's authorization server. Discovery metadata for this resource is published at `https://api.app.layer.ai/.well-known/oauth-protected-resource` (RFC 9728), and the authorization server's own metadata at `https://auth.app.layer.ai/.well-known/oauth-authorization-server` (RFC 8414).",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://auth.app.layer.ai/authorize",
            "tokenUrl": "https://auth.app.layer.ai/oauth/token",
            "refreshUrl": "https://auth.app.layer.ai/oauth/token",
            "scopes": {}
          },
          "clientCredentials": {
            "tokenUrl": "https://auth.app.layer.ai/oauth/token",
            "refreshUrl": "https://auth.app.layer.ai/oauth/token",
            "scopes": {}
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "Models",
      "description": "Browse the model catalog and inspect model capabilities."
    },
    {
      "name": "Base Models",
      "description": "Browse the base model catalog and inspect model capabilities."
    },
    {
      "name": "Reference Sets",
      "description": "Browse the workspace's reference sets — trained subjects, styles, and characters to generate with."
    },
    {
      "name": "Inferences",
      "description": "Generate assets — run a model to produce images, video, audio, or 3D."
    },
    {
      "name": "Training",
      "description": "Train custom styles/LoRAs from reference sets of your own assets."
    },
    {
      "name": "Files",
      "description": "Upload inputs and retrieve generated output files."
    },
    {
      "name": "Scoring",
      "description": "Score assets against a workspace's or project's own output scoring rules."
    },
    {
      "name": "Workflows",
      "description": "Run multi-step generation pipelines built in Blueprint."
    },
    {
      "name": "Workspaces",
      "description": "Top-level containers for your team's projects, members, and usage."
    },
    {
      "name": "Projects",
      "description": "Organize assets and access within a workspace."
    },
    {
      "name": "Members",
      "description": "Manage workspace membership and roles."
    },
    {
      "name": "Groups",
      "description": "Manage groups of members for access control."
    }
  ],
  "security": [
    {
      "bearerAuth": []
    },
    {
      "oauth2": []
    }
  ],
  "externalDocs": {
    "description": "Layer API reference and guides",
    "url": "https://layer.ai/docs/v2/rest-api"
  }
}
