{
  "openapi": "3.0.4",
  "info": {
    "title": "Fusara API",
    "description": "POST /api/v3/run accepts flat model settings. GET /api/v3/models returns each model's request_schema. Idempotency-Key is optional. Terminal webhooks contain the same compact Run object as polling.",
    "version": "3"
  },
  "servers": [
    {
      "url": "https://fusara.ai/api/v3"
    }
  ],
  "paths": {
    "/balance": {
      "get": {
        "tags": [
          "Integration V3"
        ],
        "summary": "Get balance",
        "description": "The current payer's Common Fuz ledger balance and accepted unpaid commitments, across all keys and execution channels. available = balance - reserved. This is a current snapshot, not an entitlement or a reservation. New runs still perform atomic budget admission. A valid zero balance is 200; a dependency outage is 503 balance_unavailable.",
        "operationId": "GetIntegrationV3Balance",
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalanceResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Contact support if the failure persists; inspect error.retryable before retrying automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "balance_unavailable (retryable: true): the balance dependency is temporarily unavailable. Wait for the indicated delay and retry; zero balance is a successful 200 response.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/run/estimate": {
      "post": {
        "tags": [
          "Integration V3"
        ],
        "summary": "Estimate a run",
        "description": "Accepts the same flat fields as POST /run and returns cost.unit and cost.expected for the current draft using the same preview preparation and published pricing as Workspace. Missing prompts or inputs do not block a price that can be calculated from the current settings; a quote does not validate readiness to generate. Actual text is included for text-dependent pricing. Settings/text estimates need no API key; supplied media or LoRAs require a valid key to resolve accessible inputs. Anonymous resource requests return 422 estimate_requires_authentication without fetching URLs or looking up resources. Supplied invalid credentials are rejected. No Run, execution receipt, paid generation, budget reservation or webhook delivery is created. Available with zero balance and during submission maintenance. Authenticated URL media may be imported/inspected. webhook_url is syntax-validated only. POST /run validates the complete request and fixes its price at acceptance.",
        "operationId": "EstimateIntegrationV3Run",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "model"
                ],
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "description": "Exact public model ID from model discovery. Keep any variant suffix, including slashes."
                  },
                  "prompt": {
                    "type": "string",
                    "description": "Text instruction. Availability and whether it is required depend on the selected model's request_schema. Estimates can omit it when the price is determined by settings alone."
                  },
                  "webhook_url": {
                    "maxLength": 2048,
                    "type": "string",
                    "description": "Optional public HTTPS callback URL; no registration required. Receives the full Run JSON, ready to save without another GET. Signature verification is optional; without it, sender authenticity is unverified.",
                    "format": "uri"
                  }
                },
                "description": "Flat model-specific settings and named reference arrays. Discover exact supported fields, defaults and bounds in GET /api/v3/models/{model}: request_schema. Unknown fields are rejected; there are no input/parameters wrappers. Maximum body: 1 MiB."
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunEstimateResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key. invalid_json or invalid_request: malformed request body. invalid_media_url, unsafe_media_url or remote_media_redirect_invalid: replace the invalid or restricted source URL. unsupported_media_link, unsupported_media_url, remote_media_folder_not_supported or remote_media_document_not_supported: use a direct link to a supported media file.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected. estimate_requires_authentication: supply a valid API key when estimating with media or LoRA inputs. Settings-only estimates need no key.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Contact support if the failure persists; inspect error.retryable before retrying automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "permission_denied: the account cannot access this resource. remote_media_access_required, remote_media_download_disabled or remote_media_challenge_required: the source blocks automated download; use a publicly downloadable file.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "remote_media_not_found: the source file is missing or its link has expired; replace the URL. resource_not_found: the selected model or a referenced media/model asset is missing or inaccessible.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "413": {
            "description": "request_too_large: reduce the JSON body to at most 1 MiB. remote_media_too_large: use a smaller source file within the media upload limit.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "unsupported_media_type: send the body as application/json.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "remote_media_provider_unavailable (retryable: true): the source could not be resolved, is temporarily unavailable or throttled the download. Retry after the indicated delay, or use bounded backoff when absent.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "remote_media_timeout (retryable: true): the source download timed out. Retry after the indicated delay, or use bounded backoff when absent.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "remote_media_provider_not_configured (retryable: false): this source's import service is unavailable; use another supported source or contact support.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "media_expired: a referenced input has expired. Replace it with available media or import the original file again. Repeating the expired reference cannot restore it.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { },
          {
            "BearerApiKey": [ ]
          },
          {
            "HeaderApiKey": [ ]
          }
        ]
      }
    },
    "/run": {
      "post": {
        "tags": [
          "Integration V3"
        ],
        "summary": "Create a run",
        "description": "Returns 202 with the run ID and expected cost, or 200 if already terminal. Successful idempotent replay returns the original Run without repricing. Outputs and errors are omitted until applicable. Supply a public HTTPS webhook_url directly; no registration or shared receiver secret is required. Webhooks contain the full Run JSON with ready output URLs: match the expected Run, save the result and acknowledge with 2xx. Signature verification is optional; do not make JWKS setup or a result GET a prerequisite for integration. Without verification, sender authenticity is unverified. Fusara always signs notifications with Ed25519; public keys: /.well-known/jwks.json. Billing may settle later, producing a second snapshot with a distinct webhook-id. Delivery is at least once, with up to 10 total attempts; snapshots can arrive out of order. Use webhook-id to deduplicate and never replace settled cost with pending cost.",
        "operationId": "CreateIntegrationV3Run",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Optional. Reuse the same key and body to recover the same run. On 409 request_in_progress, wait for Retry-After and retry with that same key and unchanged body. A different body returns 422 idempotency_conflict. Scope: API-key owner. Keys remain bound even after rejection, for the lifetime of the submission.",
            "schema": {
              "maxLength": 256,
              "minLength": 1,
              "pattern": "^[!-~]+$",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "model"
                ],
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "description": "Exact public model ID from model discovery. Keep any variant suffix, including slashes."
                  },
                  "prompt": {
                    "type": "string",
                    "description": "Text instruction. Availability and whether it is required depend on the selected model's request_schema. Estimates can omit it when the price is determined by settings alone."
                  },
                  "webhook_url": {
                    "maxLength": 2048,
                    "type": "string",
                    "description": "Optional public HTTPS callback URL; no registration required. Receives the full Run JSON, ready to save without another GET. Signature verification is optional; without it, sender authenticity is unverified.",
                    "format": "uri"
                  }
                },
                "description": "Flat model-specific settings and named reference arrays. Discover exact supported fields, defaults and bounds in GET /api/v3/models/{model}: request_schema. Unknown fields are rejected; there are no input/parameters wrappers. Maximum body: 1 MiB."
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Run accepted; queued or running.",
            "headers": {
              "Location": {
                "description": "Absolute URL for reading this run. Authenticate GET requests with your API key.",
                "required": true,
                "schema": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "200": {
            "description": "Run already terminal, including an idempotent replay.",
            "headers": {
              "Location": {
                "description": "Absolute URL for reading this run. Authenticate GET requests with your API key.",
                "required": true,
                "schema": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key. invalid_json or invalid_request: malformed request body. invalid_media_url, unsafe_media_url or remote_media_redirect_invalid: replace the invalid or restricted source URL. unsupported_media_link, unsupported_media_url, remote_media_folder_not_supported or remote_media_document_not_supported: use a direct link to a supported media file. invalid_idempotency_key: supply one key containing 1 to 256 visible ASCII characters, without whitespace.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected. idempotency_conflict (retryable: false): the key belongs to a different body. Restore the original body to recover that submission; use a new key only when intending to submit a different request. Do not retry automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Do not assume a submission failed before acceptance; retrieve the run if known, or recover it with the original idempotency key and unchanged body. Without a key, an uncertain submission must not be retried automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "permission_denied: the account cannot access this resource. remote_media_access_required, remote_media_download_disabled or remote_media_challenge_required: the source blocks automated download; use a publicly downloadable file.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "remote_media_not_found: the source file is missing or its link has expired; replace the URL. resource_not_found: the selected model or a referenced media/model asset is missing or inaccessible.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "413": {
            "description": "request_too_large: reduce the JSON body to at most 1 MiB. remote_media_too_large: use a smaller source file within the media upload limit.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "unsupported_media_type: send the body as application/json.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "remote_media_provider_unavailable (retryable: true): the source could not be resolved, is temporarily unavailable or throttled the download. Retry after the indicated delay, or use bounded backoff when absent.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "remote_media_timeout (retryable: true): the source download timed out. Retry after the indicated delay, or use bounded backoff when absent.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "remote_media_provider_not_configured (retryable: false): this source's import service is unavailable; use another supported source or contact support. execution_paused or webhook_unavailable (retryable: true): submission or webhook setup is temporarily unavailable. Wait for the indicated delay, then retry with the same key and unchanged body.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "media_expired: a referenced input has expired. Replace it with available media or import the original file again. Repeating the expired reference cannot restore it. If using an idempotency key, a corrected body needs a new key; the original key remains bound even after rejection.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_balance: add funds or reduce the requested cost before submitting.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "request_in_progress (retryable: true): the original submission is still being accepted. Wait for Retry-After, then retry with the same Idempotency-Key and unchanged body; a new key could generate and charge twice.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Integration V3"
        ],
        "summary": "List runs",
        "description": "Accepted v3 runs belonging to the authenticated API owner, across their API keys. Fixed pages of up to 100 runs ordered by created_at descending, then id descending. Follow next (older) or previous (newer) URLs unchanged with API authentication; unavailable links are omitted. Cursors retain filters, expire 24 hours after the first page, and exclude new head entries; statuses, costs and availability remain live. Invalid/foreign cursors return 422 invalid_cursor, expired cursors return 410 cursor_expired. Empty history returns data: []. List outputs are descriptors with usable media URLs and expiry, without large inline text/JSON; GET /api/v3/run/{id} returns full results.",
        "operationId": "ListIntegrationV3Runs",
        "parameters": [
          {
            "name": "model",
            "in": "query",
            "description": "Exact public model ID, including its variant. Historical disabled models remain searchable.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Distinct comma-separated statuses: queued, running, succeeded, failed, canceled. Values are OR; different filters are AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_from",
            "in": "query",
            "description": "Inclusive RFC 3339 creation timestamp with an explicit timezone (up to seven fractional digits).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_to",
            "in": "query",
            "description": "Exclusive RFC 3339 creation timestamp. Must be later than created_from.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ids",
            "in": "query",
            "description": "Up to 100 distinct positive run IDs, comma-separated. Only accessible matches are returned, newest first.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Opaque continuation token from a returned link. Cannot be combined with other query parameters.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunHistoryResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected. invalid_cursor: use a continuation token from this account's history links, without adding other filters.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Contact support if the failure persists; inspect error.retryable before retrying automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "cursor_expired: restart history from the initial request with its original filters.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/run/{id}": {
      "get": {
        "tags": [
          "Integration V3"
        ],
        "summary": "Get a run",
        "description": "Read a run accepted through v3 for the user behind your API key. Every existing state returns HTTP 200, including a failed or canceled generation; inspect status. queued and running are nonterminal. succeeded, failed and canceled are terminal. Applicable outputs and error are included; absent values are omitted. Retain the numeric id to recover a result if a webhook is missed. Download media before url_expires_at. Foreign, missing and non-v3 runs return 404.",
        "operationId": "GetIntegrationV3Run",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maximum": 4294967295,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Contact support if the failure persists; inspect error.retryable before retrying automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "resource_not_found: the run is missing, belongs to another owner or was not accepted through v3.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/run/{id}/cancel": {
      "post": {
        "tags": [
          "Integration V3"
        ],
        "summary": "Cancel a run",
        "description": "No request body. Cancels only queued runs that have never been admitted or dispatched. Admission and cancellation are serialized atomically. Running/outcome-unknown work returns 409 run_not_cancelable. Already terminal runs return their current snapshot with 200, including outputs if applicable. Repeating cancellation needs no Idempotency-Key. A newly canceled run releases its commitment and emits its configured terminal webhook once (delivery retries remain possible). Foreign or non-v3 runs return 404.",
        "operationId": "CancelIntegrationV3Run",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maximum": 4294967295,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key. invalid_request: cancellation does not accept a request body.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Contact support if the failure persists; inspect error.retryable before retrying automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "resource_not_found: the run is missing, belongs to another owner or was not accepted through v3.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "run_not_cancelable: the run has already been admitted or dispatched. Read its current state; do not retry cancellation automatically. Already terminal runs return 200.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/models": {
      "get": {
        "tags": [
          "Integration V3"
        ],
        "summary": "List models",
        "description": "Browse published models without authentication. A valid API key adds checkpoint choices accessible to that account. Invalid supplied credentials are rejected. include=presentation returns the same profile schema, defaults, labels, controls and capability rules used by Workspace; execution and provider configuration are never exposed. Responses must not be stored by shared caches.",
        "operationId": "GetIntegrationV3Models",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Search public model IDs and names. Empty or whitespace-only values apply no search filter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Models per page.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Zero-based offset.",
            "schema": {
              "maximum": 100000,
              "minimum": 0,
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Include the profile's UI contract. Omit for the compact response.",
            "schema": {
              "enum": [
                "presentation"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelsResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Contact support if the failure persists; inspect error.retryable before retrying automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { },
          {
            "BearerApiKey": [ ]
          },
          {
            "HeaderApiKey": [ ]
          }
        ]
      }
    },
    "/models/{model}": {
      "get": {
        "tags": [
          "Integration V3"
        ],
        "summary": "Get a model",
        "description": "Browse published models without authentication. A valid API key adds checkpoint choices accessible to that account. Invalid supplied credentials are rejected. include=presentation returns the same profile schema, defaults, labels, controls and capability rules used by Workspace; execution and provider configuration are never exposed. Responses must not be stored by shared caches.",
        "operationId": "GetIntegrationV3Model",
        "parameters": [
          {
            "name": "model",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Include the profile's UI contract. Omit for the compact response.",
            "schema": {
              "enum": [
                "presentation"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Contact support if the failure persists; inspect error.retryable before retrying automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "resource_not_found: the model is not published or the exact selector does not exist; choose an ID from model discovery.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { },
          {
            "BearerApiKey": [ ]
          },
          {
            "HeaderApiKey": [ ]
          }
        ]
      }
    },
    "/media": {
      "post": {
        "tags": [
          "Integration V3"
        ],
        "summary": "Import media",
        "description": "Import one publicly reachable HTTP(S) media URL into your account and receive a reusable media_id. HTTPS is recommended. Accepts JSON with url, not multipart upload. Shared remote-media validation, supported formats and access rules apply. Imports have a 24-hour lifecycle; inspect url_expires_at when present. Pass the returned media_id in a supported input collection or pass a URL directly when creating a run. This operation does not generate media.",
        "operationId": "ImportIntegrationV3Media",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UrlRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunOutput"
                }
              }
            }
          },
          "400": {
            "description": "invalid_header: supply only one authentication header, Authorization: Bearer or X-API-Key. invalid_json or invalid_request: malformed request body. invalid_media_url, unsafe_media_url or remote_media_redirect_invalid: replace the invalid or restricted source URL. unsupported_media_link, unsupported_media_url, remote_media_folder_not_supported or remote_media_document_not_supported: use a direct link to a supported media file.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "authentication_required: the API key is missing or invalid. Public methods allow omission, but reject invalid supplied credentials.",
            "headers": {
              "WWW-Authenticate": {
                "description": "Bearer authentication challenge.",
                "required": true,
                "schema": {
                  "enum": [
                    "Bearer"
                  ],
                  "type": "string"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "validation_error: correct the fields identified by error.errors[].pointer; unknown fields and query parameters are rejected.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited (retryable: true): wait for the indicated delay, then retry. Use bounded backoff if no delay is supplied.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "internal_error: unexpected server failure. Contact support if the failure persists; inspect error.retryable before retrying automatically.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "permission_denied: the account cannot access this resource. remote_media_access_required, remote_media_download_disabled or remote_media_challenge_required: the source blocks automated download; use a publicly downloadable file.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "remote_media_not_found: the source file is missing or its link has expired; replace the URL.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "413": {
            "description": "request_too_large: reduce the JSON body to at most 1 MiB. remote_media_too_large: use a smaller source file within the media upload limit.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "unsupported_media_type: send the body as application/json.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "remote_media_provider_unavailable (retryable: true): the source could not be resolved, is temporarily unavailable or throttled the download. Retry after the indicated delay, or use bounded backoff when absent.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "remote_media_timeout (retryable: true): the source download timed out. Retry after the indicated delay, or use bounded backoff when absent.",
            "headers": {
              "Retry-After": {
                "description": "When supplied, the minimum number of seconds to wait before retrying a transient failure. Preserve the original idempotency key and body when retrying a submission.",
                "schema": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "remote_media_provider_not_configured (retryable: false): this source's import service is unavailable; use another supported source or contact support.",
            "headers": {
              "X-Request-Id": {
                "description": "Support/trace identifier for this HTTP request.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ApiError": {
        "required": [
          "code",
          "message",
          "retryable"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Machine-readable request error code."
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation."
          },
          "retryable": {
            "type": "boolean",
            "description": "Whether the failure is transient. For uncertain POST outcomes, preserve the original idempotency key and body."
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiFieldError"
            },
            "description": "Field errors when applicable. Omitted otherwise.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApiErrorResponse": {
        "required": [
          "error"
        ],
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ApiError"
          }
        },
        "additionalProperties": false
      },
      "ApiFieldError": {
        "required": [
          "code",
          "message",
          "pointer"
        ],
        "type": "object",
        "properties": {
          "pointer": {
            "type": "string",
            "description": "JSON Pointer to the invalid field, such as /images/0/url."
          },
          "code": {
            "type": "string",
            "description": "Machine-readable field error code."
          },
          "message": {
            "type": "string",
            "description": "How this field failed validation."
          }
        },
        "additionalProperties": false
      },
      "BalanceResponse": {
        "required": [
          "available",
          "balance",
          "reserved",
          "unit"
        ],
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Billing unit: common_fuz."
          },
          "balance": {
            "type": "string",
            "description": "Current payer ledger balance, as a decimal string."
          },
          "reserved": {
            "type": "string",
            "description": "Accepted unpaid commitments across the payer's execution channels, as a decimal string."
          },
          "available": {
            "type": "string",
            "description": "balance minus reserved, as a decimal string. This snapshot can be negative."
          }
        },
        "additionalProperties": false
      },
      "EstimatedRunCost": {
        "required": [
          "expected",
          "unit"
        ],
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Billing unit: common_fuz."
          },
          "expected": {
            "type": "string",
            "description": "Current total draft estimate as a decimal string. No funds are reserved and no run is created."
          }
        },
        "additionalProperties": false
      },
      "ModelImagePrice": {
        "required": [
          "amount",
          "parameters"
        ],
        "type": "object",
        "properties": {
          "parameters": {
            "type": "object",
            "description": "Public request parameters selecting this per-image price. Empty when the version has one image price."
          },
          "amount": {
            "type": "string",
            "description": "Common FUZ for one output image, as a decimal string. Multiply by count for this supported fixed-per-image tariff."
          },
          "usd_equivalent": {
            "$ref": "#/components/schemas/ModelUsdEquivalent"
          },
          "reference_surcharge": {
            "$ref": "#/components/schemas/ModelImageReferenceSurcharge"
          }
        },
        "additionalProperties": false
      },
      "ModelImagePricing": {
        "required": [
          "generation_per_megapixel_step",
          "pixels_per_megapixel",
          "prompt_enhancement_per_request",
          "reference_per_image"
        ],
        "type": "object",
        "properties": {
          "generation_per_megapixel_step": {
            "type": "string",
            "description": "Common FUZ per megapixel per inference step, per output image, as a decimal string."
          },
          "reference_per_image": {
            "type": "string",
            "description": "Common FUZ per image, style or character reference, per output image, as a decimal string."
          },
          "prompt_enhancement_per_request": {
            "type": "string",
            "description": "Common FUZ once per request when prompt enhancement is enabled, as a decimal string."
          },
          "pixels_per_megapixel": {
            "type": "integer",
            "description": "Number of pixels in the megapixel unit used by these rates.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelImageReferenceSurcharge": {
        "required": [
          "amount",
          "included"
        ],
        "type": "object",
        "properties": {
          "included": {
            "type": "integer",
            "description": "Number of image references included per request.",
            "format": "int32"
          },
          "amount": {
            "type": "string",
            "description": "Common FUZ per additional image reference, once per request, as a decimal string."
          }
        },
        "additionalProperties": false
      },
      "ModelPresentation": {
        "required": [
          "capabilities",
          "category",
          "default_model",
          "defaults",
          "parameter_display",
          "parameter_names",
          "parameter_presets",
          "profile_key",
          "profile_schema"
        ],
        "type": "object",
        "properties": {
          "icon": {
            "type": "string",
            "nullable": true
          },
          "profile_schema": {
            "type": "object"
          },
          "defaults": {
            "type": "object"
          },
          "parameter_names": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "parameter_display": {
            "type": "object"
          },
          "capabilities": {
            "type": "object"
          },
          "parameter_presets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfileParameterPreset"
            }
          },
          "profile_key": {
            "type": "string"
          },
          "default_model": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "description": "Workspace tool group: image, video, audio, text, llm or model_asset. Describes the tool's purpose, not the media it accepts."
          },
          "starting_price": {
            "$ref": "#/components/schemas/ModelStartingPrice"
          },
          "image_pricing": {
            "$ref": "#/components/schemas/ModelImagePricing"
          },
          "image_prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelImagePrice"
            },
            "description": "Per-image prices for this selector's finite pricing choices, calculated by the shared billing engine. Optional reference charges, when present, are described by reference_surcharge. Other media-dependent, continuous or additional fees make this table unavailable.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelResponse": {
        "required": [
          "id",
          "name",
          "operation",
          "request_schema",
          "revision"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Exact public selector for requests, including any native variant suffix."
          },
          "name": {
            "type": "string",
            "description": "Display name of the model."
          },
          "operation": {
            "type": "string",
            "description": "Generation or analysis operation supported by this model."
          },
          "revision": {
            "type": "integer",
            "description": "Revision of the published model contract.",
            "format": "int64"
          },
          "request_schema": {
            "type": "object",
            "description": "Authoritative JSON Schema for the flat request: supported fields, required inputs, defaults, ranges and conditional presets. Read allOf/if/then when settings change."
          },
          "presentation": {
            "$ref": "#/components/schemas/ModelPresentation"
          }
        },
        "additionalProperties": false
      },
      "ModelStartingPrice": {
        "required": [
          "amount",
          "unit"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "type": "string",
            "description": "Common FUZ per unit, as a decimal string rounded upward to two decimal places."
          },
          "unit": {
            "type": "string",
            "description": "image, video_second (generated or processed seconds), or generation when output duration is automatic."
          },
          "usd_equivalent": {
            "$ref": "#/components/schemas/ModelUsdEquivalent"
          }
        },
        "additionalProperties": false
      },
      "ModelUsdEquivalent": {
        "required": [
          "amount",
          "annual_plan_id",
          "annual_price",
          "monthly_credits"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "type": "string",
            "description": "USD per the same unit as the associated FUZ amount, as a decimal string."
          },
          "annual_plan_id": {
            "type": "string",
            "description": "Public annual plan used for the conversion."
          },
          "annual_price": {
            "type": "string",
            "description": "Full annual payment in USD, as a decimal string; not a monthly payment."
          },
          "monthly_credits": {
            "type": "string",
            "description": "Included FUZ granted each month, as an integer string. The annual conversion uses twelve monthly allowances."
          }
        },
        "additionalProperties": false
      },
      "ModelsResponse": {
        "required": [
          "data",
          "limit",
          "offset",
          "total"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelResponse"
            },
            "description": "Published models matching the request."
          },
          "total": {
            "type": "integer",
            "description": "Total matching models.",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "description": "Requested page size, 1 to 100; defaults to 20.",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "description": "Zero-based offset; defaults to 0.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ProfileParameterPreset": {
        "type": "object",
        "properties": {
          "parameter": {
            "type": "string",
            "nullable": true
          },
          "value": { },
          "parameters": {
            "type": "object",
            "additionalProperties": { },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RunCost": {
        "required": [
          "expected",
          "status",
          "unit"
        ],
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Billing unit: common_fuz."
          },
          "expected": {
            "type": "string",
            "description": "Total accepted estimate for this run, as a decimal string."
          },
          "status": {
            "type": "string",
            "description": "pending until billing is confirmed, then settled. Generation can finish before settlement."
          },
          "charged": {
            "type": "string",
            "description": "Confirmed final charge, as a decimal string. Omitted while pending; confirmed zero is 0.0000.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RunError": {
        "required": [
          "code",
          "message"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Machine-readable generation failure code."
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the generation failure."
          }
        },
        "additionalProperties": false
      },
      "RunEstimateResponse": {
        "required": [
          "cost"
        ],
        "type": "object",
        "properties": {
          "cost": {
            "$ref": "#/components/schemas/EstimatedRunCost"
          }
        },
        "additionalProperties": false
      },
      "RunHistoryResponse": {
        "required": [
          "data"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RunSummary"
            },
            "description": "Up to 100 accepted v3 runs, newest first. An empty history is an empty array."
          },
          "next": {
            "type": "string",
            "description": "Absolute URL for older matches. Follow unchanged with API authentication. Omitted at the end.",
            "nullable": true
          },
          "previous": {
            "type": "string",
            "description": "Absolute URL for newer matches. Follow unchanged with API authentication. Omitted when unavailable.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RunOutput": {
        "required": [
          "type"
        ],
        "type": "object",
        "oneOf": [
          {
            "required": [
              "value"
            ],
            "properties": {
              "type": {
                "enum": [
                  "text"
                ]
              },
              "value": {
                "type": "string"
              }
            }
          },
          {
            "required": [
              "value"
            ],
            "properties": {
              "type": {
                "enum": [
                  "json"
                ]
              },
              "value": { }
            }
          },
          {
            "required": [
              "value"
            ],
            "properties": {
              "type": {
                "enum": [
                  "boolean"
                ]
              },
              "value": {
                "type": "boolean"
              }
            }
          },
          {
            "not": {
              "required": [
                "value"
              ]
            },
            "properties": {
              "type": {
                "enum": [
                  "image",
                  "video",
                  "audio",
                  "media",
                  "model_asset"
                ]
              }
            }
          }
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "media_id": {
            "maximum": 4294967295,
            "minimum": 0,
            "type": "integer",
            "description": "Reusable account media ID when this output is a file.",
            "format": "int64",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Download URL when the file is available. Save it before url_expires_at.",
            "nullable": true
          },
          "url_expires_at": {
            "type": "string",
            "description": "UTC expiry of this output URL, when provided.",
            "format": "date-time",
            "nullable": true
          },
          "expired": {
            "type": "boolean",
            "description": "True when the media is no longer available; its dead URL is omitted.",
            "nullable": true
          },
          "value": {
            "description": "Inline result: a string for type=text, a native JSON value for type=json, or a boolean for type=boolean. Empty strings, false and JSON null are valid values. Omitted for files and model assets."
          },
          "model_asset_id": {
            "maximum": 4294967295,
            "minimum": 0,
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RunOutputDescriptor": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "media_id": {
            "maximum": 4294967295,
            "minimum": 0,
            "type": "integer",
            "description": "Reusable account media ID when this output is a file.",
            "format": "int64",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Download URL when the file is available. Save it before url_expires_at.",
            "nullable": true
          },
          "url_expires_at": {
            "type": "string",
            "description": "UTC expiry of this output URL, when provided.",
            "format": "date-time",
            "nullable": true
          },
          "expired": {
            "type": "boolean",
            "description": "True when the media is no longer available; its dead URL is omitted.",
            "nullable": true
          },
          "model_asset_id": {
            "maximum": 4294967295,
            "minimum": 0,
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RunResponse": {
        "required": [
          "cost",
          "id",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maximum": 4294967295,
            "minimum": 0,
            "type": "integer",
            "description": "Numeric run ID. Use it for status, results, cancellation and matching webhooks.",
            "format": "int64"
          },
          "status": {
            "type": "string",
            "description": "queued or running while in progress; succeeded, failed or canceled when terminal."
          },
          "cost": {
            "$ref": "#/components/schemas/RunCost"
          },
          "outputs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RunOutput"
            },
            "description": "Applicable outputs in their original order. Omitted when none exist; a failed run can still have usable partial outputs.",
            "nullable": true
          },
          "error": {
            "$ref": "#/components/schemas/RunError"
          }
        },
        "additionalProperties": false
      },
      "RunSummary": {
        "required": [
          "cost",
          "created_at",
          "id",
          "model",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maximum": 4294967295,
            "minimum": 0,
            "type": "integer",
            "format": "int64"
          },
          "model": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "cost": {
            "$ref": "#/components/schemas/RunCost"
          },
          "outputs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RunOutputDescriptor"
            },
            "nullable": true
          },
          "error": {
            "$ref": "#/components/schemas/RunError"
          }
        },
        "additionalProperties": false
      },
      "UrlRequest": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "maxLength": 2048,
            "minLength": 1,
            "type": "string",
            "description": "Public HTTP(S) media URL without credentials or fragments. Both the supplied and encoded URL must fit within 2048 characters. It must satisfy the shared remote-media access and format policy.",
            "format": "uri"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "BearerApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API key"
      },
      "HeaderApiKey": {
        "type": "apiKey",
        "name": "X-API-Key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "BearerApiKey": [ ]
    },
    {
      "HeaderApiKey": [ ]
    }
  ],
  "tags": [
    {
      "name": "Integration V3"
    }
  ]
}