{
  "openapi": "3.0.1",
  "info": {
    "title": "Hyperbrowser API",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.hyperbrowser.ai",
      "description": "Production server"
    }
  ],
  "components": {
    "schemas": {
      "X402SessionParams": {
        "type": "object",
        "additionalProperties": false,
        "description": "Optional preferences for a browser session priced at 0.10 USDC per hour, paid upfront for timeoutMinutes. Unknown fields are rejected before payment verification. Web recording is disabled. Other regular session creation options are not supported.",
        "default": {},
        "properties": {
          "screen": {
            "type": "object",
            "additionalProperties": false,
            "description": "Browser screen dimensions. An omitted dimension uses its default.",
            "default": {
              "width": 1280,
              "height": 720
            },
            "properties": {
              "width": {
                "type": "number",
                "minimum": 500,
                "maximum": 3840,
                "default": 1280
              },
              "height": {
                "type": "number",
                "minimum": 360,
                "maximum": 2160,
                "default": 720
              }
            }
          },
          "viewOnlyLiveView": {
            "type": "boolean",
            "default": false,
            "description": "Make the live-view link read-only. CDP, WebDriver, and the computer action endpoint still allow browser control."
          },
          "timeoutMinutes": {
            "type": "integer",
            "minimum": 5,
            "maximum": 60,
            "default": 30,
            "description": "Maximum session lifetime in minutes, from 5 through 60. Defaults to 30. Determines the session duration and upfront price at 0.10 USDC per hour. Connection token lifetimes and expiresAt follow this value."
          }
        }
      },
      "X402SessionResponse": {
        "type": "object",
        "additionalProperties": false,
        "description": "Connection credentials and a management token for the purchased browser. Save this response; get does not reissue connection credentials. These tokens cannot authenticate regular account APIs.",
        "required": [
          "id",
          "wsEndpoint",
          "webdriverEndpoint",
          "liveUrl",
          "computerActionEndpoint",
          "token",
          "expiresAt",
          "managementToken"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Purchased session ID."
          },
          "wsEndpoint": {
            "type": "string",
            "format": "uri",
            "description": "CDP WebSocket URL for Playwright, Puppeteer, or another CDP client. Includes its authentication token."
          },
          "webdriverEndpoint": {
            "type": "string",
            "format": "uri",
            "description": "Selenium/WebDriver endpoint. Send token in the x-hyperbrowser-token header."
          },
          "liveUrl": {
            "type": "string",
            "format": "uri",
            "description": "Authenticated live-view URL. Interaction is disabled when viewOnlyLiveView is true."
          },
          "computerActionEndpoint": {
            "type": "string",
            "format": "uri",
            "description": "Endpoint for mouse, keyboard, and screenshot actions. Includes its authentication token."
          },
          "token": {
            "type": "string",
            "description": "Credential scoped to this browser session. Use it for WebDriver authentication, not the regular get/list/stop/update/extend session APIs."
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Returned session expiry timestamp based on timeoutMinutes. The browser can stop earlier if closed or disconnected."
          },
          "managementToken": {
            "type": "string",
            "description": "Bearer token for GET /x402/session/{id} and PUT /x402/session/{id}/stop only. Valid for 24 hours from purchase, including after browser expiry. Does not authenticate browser connections or regular account APIs."
          }
        }
      },
      "ScreenConfig": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number",
            "default": 1280
          },
          "height": {
            "type": "number",
            "default": 720
          }
        }
      },
      "SessionLaunchState": {
        "type": "object",
        "properties": {
          "useUltraStealth": {
            "type": "boolean"
          },
          "useStealth": {
            "type": "boolean"
          },
          "useProxy": {
            "type": "boolean"
          },
          "solveCaptchas": {
            "type": "boolean"
          },
          "solverType": {
            "type": "string",
            "enum": [
              "visual"
            ],
            "description": "Optional CAPTCHA solver mode. Set to visual to use the visual reCAPTCHA solver."
          },
          "adblock": {
            "type": "boolean"
          },
          "trackers": {
            "type": "boolean"
          },
          "annoyances": {
            "type": "boolean"
          },
          "screen": {
            "$ref": "#/components/schemas/ScreenConfig"
          },
          "enableWebRecording": {
            "type": "boolean"
          },
          "enableVideoWebRecording": {
            "type": "boolean"
          },
          "enableLogCapture": {
            "type": "boolean"
          },
          "acceptCookies": {
            "type": "boolean"
          },
          "profile": {
            "$ref": "#/components/schemas/CreateSessionProfile"
          },
          "staticIpId": {
            "type": "string"
          },
          "saveDownloads": {
            "type": "boolean"
          },
          "enableWindowManager": {
            "type": "boolean"
          },
          "enableWindowManagerTaskbar": {
            "type": "boolean"
          },
          "viewOnlyLiveView": {
            "type": "boolean"
          },
          "disablePasswordManager": {
            "type": "boolean"
          },
          "enableAlwaysOpenPdfExternally": {
            "type": "boolean"
          },
          "disablePostQuantumKeyAgreement": {
            "type": "boolean"
          }
        },
        "nullable": true
      },
      "Session": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "teamId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "closed",
              "error",
              "close-error"
            ]
          },
          "startTime": {
            "type": "string",
            "format": "timestamp-milliseconds",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "timestamp-milliseconds",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "iso8601"
          },
          "updatedAt": {
            "type": "string",
            "format": "iso8601"
          },
          "launchState": {
            "$ref": "#/components/schemas/SessionLaunchState"
          },
          "creditsUsed": {
            "type": "number",
            "nullable": true
          }
        }
      },
      "SessionDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Session"
          },
          {
            "type": "object",
            "properties": {
              "sessionUrl": {
                "type": "string"
              },
              "liveUrl": {
                "type": "string"
              },
              "token": {
                "type": "string"
              },
              "wsEndpoint": {
                "type": "string"
              },
              "webdriverEndpoint": {
                "type": "string"
              },
              "computerActionEndpoint": {
                "type": "string"
              }
            }
          }
        ]
      },
      "BasicResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ]
      },
      "UpdateSessionProfileParams": {
        "type": "object",
        "properties": {
          "persistChanges": {
            "type": "boolean",
            "description": "Whether profile changes should be persisted after the session ends."
          },
          "persistNetworkCache": {
            "type": "boolean",
            "description": "Whether network cache should be persisted into the profile."
          }
        }
      },
      "UpdateSessionProfileRequest": {
        "type": "object",
        "required": [
          "type",
          "params"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "profile"
            ]
          },
          "params": {
            "$ref": "#/components/schemas/UpdateSessionProfileParams"
          }
        }
      },
      "UpdateSessionProxyLocationParams": {
        "type": "object",
        "properties": {
          "country": {
            "$ref": "#/components/schemas/ProxyCountry"
          },
          "state": {
            "$ref": "#/components/schemas/ProxyState"
          },
          "city": {
            "type": "string",
            "description": "City for managed proxy geolocation."
          }
        }
      },
      "UpdateSessionProxyParams": {
        "type": "object",
        "required": [
          "enabled"
        ],
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether proxying should be active for the running session."
          },
          "staticIpId": {
            "type": "string",
            "format": "uuid",
            "description": "Static IP allocation to use when enabling a static IP proxy."
          },
          "location": {
            "$ref": "#/components/schemas/UpdateSessionProxyLocationParams"
          }
        }
      },
      "UpdateSessionProxyRequest": {
        "type": "object",
        "required": [
          "type",
          "params"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "proxy"
            ]
          },
          "params": {
            "$ref": "#/components/schemas/UpdateSessionProxyParams"
          }
        }
      },
      "UpdateSessionScreenParams": {
        "type": "object",
        "required": [
          "width",
          "height"
        ],
        "properties": {
          "width": {
            "type": "integer",
            "minimum": 500,
            "maximum": 3840
          },
          "height": {
            "type": "integer",
            "minimum": 360,
            "maximum": 2160
          }
        }
      },
      "UpdateSessionScreenRequest": {
        "type": "object",
        "required": [
          "type",
          "params"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "screen"
            ]
          },
          "params": {
            "$ref": "#/components/schemas/UpdateSessionScreenParams"
          }
        }
      },
      "UpdateSessionSolveCaptchasParams": {
        "type": "object",
        "required": [
          "enabled"
        ],
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether automatic CAPTCHA solving should be enabled for this running session."
          },
          "solverType": {
            "type": "string",
            "enum": [
              "visual"
            ],
            "description": "Optional CAPTCHA solver mode. Set to visual to use the visual reCAPTCHA solver."
          }
        }
      },
      "UpdateSessionSolveCaptchasRequest": {
        "type": "object",
        "required": [
          "type",
          "params"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "solveCaptchas"
            ]
          },
          "params": {
            "$ref": "#/components/schemas/UpdateSessionSolveCaptchasParams"
          }
        }
      },
      "UpdateSessionRequest": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UpdateSessionProfileRequest"
          },
          {
            "$ref": "#/components/schemas/UpdateSessionProxyRequest"
          },
          {
            "$ref": "#/components/schemas/UpdateSessionScreenRequest"
          },
          {
            "$ref": "#/components/schemas/UpdateSessionSolveCaptchasRequest"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "profile": "#/components/schemas/UpdateSessionProfileRequest",
            "proxy": "#/components/schemas/UpdateSessionProxyRequest",
            "screen": "#/components/schemas/UpdateSessionScreenRequest",
            "solveCaptchas": "#/components/schemas/UpdateSessionSolveCaptchasRequest"
          }
        }
      },
      "UpdateSessionResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BasicResponse"
          },
          {
            "type": "object",
            "properties": {
              "solveCaptchas": {
                "type": "boolean",
                "description": "Returned for solveCaptchas updates."
              },
              "sessionId": {
                "type": "string",
                "description": "Returned for solveCaptchas updates."
              },
              "telemetryReady": {
                "type": "boolean",
                "description": "Returned for solveCaptchas updates."
              }
            }
          }
        ]
      },
      "UpdateSessionSolveCaptchasResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BasicResponse"
          },
          {
            "type": "object",
            "properties": {
              "solveCaptchas": {
                "type": "boolean"
              },
              "sessionId": {
                "type": "string"
              },
              "telemetryReady": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "CaptchaEvaluationType": {
        "type": "string",
        "enum": [
          "turnstile",
          "cloudflare-challenge",
          "aliexpress",
          "recaptcha",
          "amazon"
        ],
        "description": "CAPTCHA target to evaluate manually."
      },
      "ImageCaptchaParam": {
        "type": "object",
        "properties": {
          "imageSelector": {
            "type": "string"
          },
          "inputSelector": {
            "type": "string"
          }
        }
      },
      "CaptchaEvaluationParams": {
        "type": "object",
        "properties": {
          "captcha": {
            "$ref": "#/components/schemas/CaptchaEvaluationType"
          },
          "captchaType": {
            "$ref": "#/components/schemas/CaptchaEvaluationType"
          },
          "text": {
            "$ref": "#/components/schemas/CaptchaEvaluationType"
          },
          "iterations": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "maxIterations": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "solverType": {
            "type": "string",
            "enum": [
              "visual"
            ],
            "description": "Optional CAPTCHA solver mode. Set to visual to use the visual reCAPTCHA solver."
          },
          "imageCaptchaParams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ImageCaptchaParam"
            }
          },
          "useUltraStealth": {
            "type": "boolean"
          }
        }
      },
      "CaptchaEvaluationPageResult": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "targetId": {
            "type": "string",
            "nullable": true
          },
          "iterationsRun": {
            "type": "integer"
          },
          "solved": {
            "type": "boolean"
          },
          "solvedCaptchas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaptchaEvaluationType"
            }
          },
          "checkedCaptchas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaptchaEvaluationType"
            }
          },
          "captchaSolvedCounts": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            }
          },
          "lastSolveTime": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            }
          }
        }
      },
      "CaptchaEvaluationResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "captcha": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaptchaEvaluationType"
              }
            ],
            "nullable": true
          },
          "iterationsRequested": {
            "type": "integer"
          },
          "iterationsRun": {
            "type": "integer"
          },
          "solved": {
            "type": "boolean"
          },
          "solvedCaptchas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaptchaEvaluationType"
            }
          },
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaptchaEvaluationPageResult"
            }
          }
        }
      },
      "CreateProfileParams": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "CreateProfileResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProfileResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "teamId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "iso8601"
          },
          "updatedAt": {
            "type": "string",
            "format": "iso8601"
          }
        }
      },
      "ProfileListResponse": {
        "type": "object",
        "properties": {
          "profiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfileResponse"
            }
          },
          "totalCount": {
            "type": "number"
          },
          "page": {
            "type": "number"
          },
          "perPage": {
            "type": "number"
          }
        }
      },
      "ProxyCountry": {
        "type": "string",
        "enum": [
          "AD",
          "AE",
          "AF",
          "AL",
          "AM",
          "AO",
          "AR",
          "AT",
          "AU",
          "AW",
          "AZ",
          "BA",
          "BD",
          "BE",
          "BG",
          "BH",
          "BJ",
          "BO",
          "BR",
          "BS",
          "BT",
          "BY",
          "BZ",
          "CA",
          "CF",
          "CH",
          "CI",
          "CL",
          "CM",
          "CN",
          "CO",
          "CR",
          "CU",
          "CY",
          "CZ",
          "DE",
          "DJ",
          "DK",
          "DM",
          "EC",
          "EE",
          "EG",
          "ES",
          "ET",
          "EU",
          "FI",
          "FJ",
          "FR",
          "GB",
          "GE",
          "GH",
          "GM",
          "GR",
          "HK",
          "HN",
          "HR",
          "HT",
          "HU",
          "ID",
          "IE",
          "IL",
          "IN",
          "IQ",
          "IR",
          "IS",
          "IT",
          "JM",
          "JO",
          "JP",
          "KE",
          "KH",
          "KR",
          "KW",
          "KZ",
          "LB",
          "LI",
          "LR",
          "LT",
          "LU",
          "LV",
          "MA",
          "MC",
          "MD",
          "ME",
          "MG",
          "MK",
          "ML",
          "MM",
          "MN",
          "MR",
          "MT",
          "MU",
          "MV",
          "MX",
          "MY",
          "MZ",
          "NG",
          "NL",
          "NO",
          "NZ",
          "OM",
          "PA",
          "PE",
          "PH",
          "PK",
          "PL",
          "PR",
          "PT",
          "PY",
          "QA",
          "RANDOM_COUNTRY",
          "RO",
          "RS",
          "RU",
          "SA",
          "SC",
          "SD",
          "SE",
          "SG",
          "SI",
          "SK",
          "SN",
          "SS",
          "TD",
          "TG",
          "TH",
          "TM",
          "TN",
          "TR",
          "TT",
          "TW",
          "UA",
          "UG",
          "US",
          "UY",
          "UZ",
          "VE",
          "VG",
          "VN",
          "YE",
          "ZA",
          "ZM",
          "ZW",
          "ad",
          "ae",
          "af",
          "al",
          "am",
          "ao",
          "ar",
          "at",
          "au",
          "aw",
          "az",
          "ba",
          "bd",
          "be",
          "bg",
          "bh",
          "bj",
          "bo",
          "br",
          "bs",
          "bt",
          "by",
          "bz",
          "ca",
          "cf",
          "ch",
          "ci",
          "cl",
          "cm",
          "cn",
          "co",
          "cr",
          "cu",
          "cy",
          "cz",
          "de",
          "dj",
          "dk",
          "dm",
          "ec",
          "ee",
          "eg",
          "es",
          "et",
          "eu",
          "fi",
          "fj",
          "fr",
          "gb",
          "ge",
          "gh",
          "gm",
          "gr",
          "hk",
          "hn",
          "hr",
          "ht",
          "hu",
          "id",
          "ie",
          "il",
          "in",
          "iq",
          "ir",
          "is",
          "it",
          "jm",
          "jo",
          "jp",
          "ke",
          "kh",
          "kr",
          "kw",
          "kz",
          "lb",
          "li",
          "lr",
          "lt",
          "lu",
          "lv",
          "ma",
          "mc",
          "md",
          "me",
          "mg",
          "mk",
          "ml",
          "mm",
          "mn",
          "mr",
          "mt",
          "mu",
          "mv",
          "mx",
          "my",
          "mz",
          "ng",
          "nl",
          "no",
          "nz",
          "om",
          "pa",
          "pe",
          "ph",
          "pk",
          "pl",
          "pr",
          "pt",
          "py",
          "qa",
          "ro",
          "rs",
          "ru",
          "sa",
          "sc",
          "sd",
          "se",
          "sg",
          "si",
          "sk",
          "sn",
          "ss",
          "td",
          "tg",
          "th",
          "tm",
          "tn",
          "tr",
          "tt",
          "tw",
          "ua",
          "ug",
          "us",
          "uy",
          "uz",
          "ve",
          "vg",
          "vn",
          "ye",
          "za",
          "zm",
          "zw"
        ]
      },
      "OperatingSystem": {
        "type": "string",
        "enum": [
          "windows",
          "android",
          "macos",
          "linux",
          "ios"
        ]
      },
      "Platform": {
        "type": "string",
        "enum": [
          "chrome",
          "firefox",
          "safari",
          "edge"
        ]
      },
      "Device": {
        "type": "string",
        "enum": [
          "desktop",
          "mobile"
        ]
      },
      "ISO639_1": {
        "type": "string",
        "enum": [
          "aa",
          "ab",
          "ae",
          "af",
          "ak",
          "am",
          "an",
          "ar",
          "as",
          "av",
          "ay",
          "az",
          "ba",
          "be",
          "bg",
          "bh",
          "bi",
          "bm",
          "bn",
          "bo",
          "br",
          "bs",
          "ca",
          "ce",
          "ch",
          "co",
          "cr",
          "cs",
          "cu",
          "cv",
          "cy",
          "da",
          "de",
          "dv",
          "dz",
          "ee",
          "el",
          "en",
          "eo",
          "es",
          "et",
          "eu",
          "fa",
          "ff",
          "fi",
          "fj",
          "fo",
          "fr",
          "fy",
          "ga",
          "gd",
          "gl",
          "gn",
          "gu",
          "gv",
          "ha",
          "he",
          "hi",
          "ho",
          "hr",
          "ht",
          "hu",
          "hy",
          "hz",
          "ia",
          "id",
          "ie",
          "ig",
          "ii",
          "ik",
          "io",
          "is",
          "it",
          "iu",
          "ja",
          "jv",
          "ka",
          "kg",
          "ki",
          "kj",
          "kk",
          "kl",
          "km",
          "kn",
          "ko",
          "kr",
          "ks",
          "ku",
          "kv",
          "kw",
          "ky",
          "la",
          "lb",
          "lg",
          "li",
          "ln",
          "lo",
          "lt",
          "lu",
          "lv",
          "mg",
          "mh",
          "mi",
          "mk",
          "ml",
          "mn",
          "mo",
          "mr",
          "ms",
          "mt",
          "my",
          "na",
          "nb",
          "nd",
          "ne",
          "ng",
          "nl",
          "nn",
          "no",
          "nr",
          "nv",
          "ny",
          "oc",
          "oj",
          "om",
          "or",
          "os",
          "pa",
          "pi",
          "pl",
          "ps",
          "pt",
          "qu",
          "rm",
          "rn",
          "ro",
          "ru",
          "rw",
          "sa",
          "sc",
          "sd",
          "se",
          "sg",
          "si",
          "sk",
          "sl",
          "sm",
          "sn",
          "so",
          "sq",
          "sr",
          "ss",
          "st",
          "su",
          "sv",
          "sw",
          "ta",
          "te",
          "tg",
          "th",
          "ti",
          "tk",
          "tl",
          "tn",
          "to",
          "tr",
          "ts",
          "tt",
          "tw",
          "ty",
          "ug",
          "uk",
          "ur",
          "uz",
          "ve",
          "vi",
          "vo",
          "wa",
          "wo",
          "xh",
          "yi",
          "yo",
          "za",
          "zh",
          "zu"
        ]
      },
      "ProxyState": {
        "type": "string",
        "enum": [
          "AL",
          "AK",
          "AZ",
          "AR",
          "CA",
          "CO",
          "CT",
          "DE",
          "FL",
          "GA",
          "HI",
          "ID",
          "IL",
          "IN",
          "IA",
          "KS",
          "KY",
          "LA",
          "ME",
          "MD",
          "MA",
          "MI",
          "MN",
          "MS",
          "MO",
          "MT",
          "NE",
          "NV",
          "NH",
          "NJ",
          "NM",
          "NY",
          "NC",
          "ND",
          "OH",
          "OK",
          "OR",
          "PA",
          "RI",
          "SC",
          "SD",
          "TN",
          "TX",
          "UT",
          "VT",
          "VA",
          "WA",
          "WV",
          "WI",
          "WY",
          "al",
          "ak",
          "az",
          "ar",
          "ca",
          "co",
          "ct",
          "de",
          "fl",
          "ga",
          "hi",
          "id",
          "il",
          "in",
          "ia",
          "ks",
          "ky",
          "la",
          "me",
          "md",
          "ma",
          "mi",
          "mn",
          "ms",
          "mo",
          "mt",
          "ne",
          "nv",
          "nh",
          "nj",
          "nm",
          "ny",
          "nc",
          "nd",
          "oh",
          "ok",
          "or",
          "pa",
          "ri",
          "sc",
          "sd",
          "tn",
          "tx",
          "ut",
          "vt",
          "va",
          "wa",
          "wv",
          "wi",
          "wy"
        ],
        "nullable": true,
        "description": "Optional state code for proxies to US states. Is mutually exclusive with proxyCity. Takes in two letter state code."
      },
      "SessionRegion": {
        "type": "string",
        "description": "Region to run the session in. The asia-south region is only available on Enterprise and Select plans. Get in touch at https://calendly.com/shri-hyperbrowser/demo.",
        "enum": [
          "us",
          "us-central",
          "us-west",
          "us-east",
          "asia-south",
          "europe-west"
        ]
      },
      "JobStatus": {
        "type": "string",
        "enum": [
          "pending",
          "running",
          "completed",
          "failed",
          "stopped"
        ]
      },
      "JobStatusResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          }
        },
        "required": [
          "status"
        ]
      },
      "RecordingStatus": {
        "type": "string",
        "enum": [
          "not_enabled",
          "pending",
          "in_progress",
          "completed",
          "failed"
        ]
      },
      "DownloadsStatus": {
        "type": "string",
        "enum": [
          "not_enabled",
          "pending",
          "in_progress",
          "completed",
          "failed"
        ]
      },
      "CrawledPage": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "completed",
              "failed"
            ]
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            }
          },
          "markdown": {
            "type": "string"
          },
          "html": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "screenshot": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "status"
        ]
      },
      "ScrapeOptions": {
        "type": "object",
        "properties": {
          "formats": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "html",
                "links",
                "markdown",
                "screenshot"
              ]
            },
            "default": [
              "markdown"
            ]
          },
          "includeTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludeTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "onlyMainContent": {
            "type": "boolean",
            "default": true
          },
          "waitFor": {
            "type": "number",
            "default": 0
          },
          "timeout": {
            "type": "number",
            "default": 30000
          },
          "waitUntil": {
            "type": "string",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle"
            ],
            "default": "load"
          },
          "screenshotOptions": {
            "type": "object",
            "description": "Options for the screenshot. Both `fullPage` and `cropToContent` cannot be true at the same time.",
            "properties": {
              "fullPage": {
                "type": "boolean",
                "default": false
              },
              "format": {
                "type": "string",
                "enum": [
                  "jpeg",
                  "png",
                  "webp"
                ],
                "default": "webp"
              },
              "cropToContent": {
                "type": "boolean",
                "default": false,
                "description": "Automatically adjusts the screenshot height to match the page's actual content. If the page is shorter than the viewport, the screenshot is trimmed to remove any empty space below the content. If the page is taller than the viewport, the screenshot is cropped to the height of the viewport."
              },
              "cropToContentMaxHeight": {
                "type": "number",
                "description": "The maximum height of the screenshot when `cropToContent` is true. Overrides the height set in the `screen` configuration."
              },
              "cropToContentMinHeight": {
                "type": "number",
                "description": "The minimum height of the screenshot when `cropToContent` is true. Overrides the height set in the `screen` configuration."
              }
            }
          },
          "storageState": {
            "type": "object",
            "properties": {
              "localStorage": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "sessionStorage": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "CreateSessionProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "persistChanges": {
            "type": "boolean"
          },
          "persistNetworkCache": {
            "type": "boolean",
            "description": "When persisting profile changes, also persist the browser's network cache (HTTP cache)."
          }
        }
      },
      "CreateSessionParams": {
        "type": "object",
        "properties": {
          "useUltraStealth": {
            "type": "boolean",
            "default": false
          },
          "useStealth": {
            "type": "boolean",
            "default": false
          },
          "useProxy": {
            "type": "boolean",
            "default": false
          },
          "proxyServer": {
            "type": "string",
            "description": "Custom proxy server host."
          },
          "proxyServerPassword": {
            "type": "string",
            "description": "Password for authenticating with the custom proxy server."
          },
          "proxyServerUsername": {
            "type": "string",
            "description": "Username for authenticating with the custom proxy server."
          },
          "proxyCountry": {
            "$ref": "#/components/schemas/ProxyCountry"
          },
          "proxyState": {
            "$ref": "#/components/schemas/ProxyState"
          },
          "proxyCity": {
            "type": "string",
            "example": "new york",
            "nullable": true,
            "description": "Desired Country. Is mutually exclusive with proxyState. Some cities might not be supported, so before using a new city, we recommend trying it out"
          },
          "region": {
            "$ref": "#/components/schemas/SessionRegion"
          },
          "operatingSystems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperatingSystem"
            }
          },
          "device": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Device"
            }
          },
          "platform": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Platform"
            }
          },
          "locales": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ISO639_1"
            },
            "default": [
              "en"
            ]
          },
          "screen": {
            "$ref": "#/components/schemas/ScreenConfig"
          },
          "solveCaptchas": {
            "type": "boolean",
            "default": false
          },
          "solverType": {
            "type": "string",
            "enum": [
              "visual"
            ],
            "description": "Optional CAPTCHA solver mode. Set to visual to use the visual reCAPTCHA solver."
          },
          "adblock": {
            "type": "boolean",
            "default": false
          },
          "trackers": {
            "type": "boolean",
            "default": false
          },
          "annoyances": {
            "type": "boolean",
            "default": false
          },
          "enableWebRecording": {
            "type": "boolean"
          },
          "enableVideoWebRecording": {
            "type": "boolean",
            "default": false,
            "description": "enableWebRecording must also be true for this to work"
          },
          "profile": {
            "$ref": "#/components/schemas/CreateSessionProfile"
          },
          "acceptCookies": {
            "type": "boolean"
          },
          "staticIpId": {
            "type": "string",
            "format": "uuid"
          },
          "saveDownloads": {
            "type": "boolean",
            "default": false
          },
          "extensionIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid",
              "nullable": false
            },
            "default": []
          },
          "urlBlocklist": {
            "type": "array",
            "items": {
              "type": "string",
              "nullable": false
            },
            "default": []
          },
          "browserArgs": {
            "type": "array",
            "items": {
              "type": "string",
              "nullable": false
            },
            "default": []
          },
          "imageCaptchaParams": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "imageSelector": {
                  "type": "string"
                },
                "inputSelector": {
                  "type": "string"
                }
              }
            },
            "nullable": true
          },
          "timeoutMinutes": {
            "type": "number",
            "minimum": 1,
            "maximum": 720
          },
          "enableWindowManager": {
            "type": "boolean",
            "default": false
          },
          "enableWindowManagerTaskbar": {
            "type": "boolean",
            "default": false
          },
          "viewOnlyLiveView": {
            "type": "boolean",
            "default": false
          },
          "disablePasswordManager": {
            "type": "boolean",
            "default": false
          },
          "enableAlwaysOpenPdfExternally": {
            "type": "boolean",
            "default": false
          },
          "disablePostQuantumKeyAgreement": {
            "type": "boolean",
            "default": false
          }
        },
        "default": {
          "useStealth": false,
          "useProxy": false,
          "acceptCookies": false
        }
      },
      "GetSessionRecordingUrlResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/RecordingStatus"
          },
          "recordingUrl": {
            "type": "string",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "status"
        ]
      },
      "GetSessionVideoRecordingUrlResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/RecordingStatus"
          },
          "recordingUrl": {
            "type": "string",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "status"
        ]
      },
      "GetSessionDownloadsUrlResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/DownloadsStatus"
          },
          "downloadsUrl": {
            "type": "string",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "status"
        ]
      },
      "StartScrapeJobParams": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "scrapeOptions": {
            "$ref": "#/components/schemas/ScrapeOptions"
          }
        }
      },
      "StartScrapeJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          }
        }
      },
      "ScrapeJobData": {
        "type": "object",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            }
          },
          "markdown": {
            "type": "string"
          },
          "html": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "screenshot": {
            "type": "string"
          }
        }
      },
      "ScrapeJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "$ref": "#/components/schemas/ScrapeJobData"
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "StartBatchScrapeJobParams": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "scrapeOptions": {
            "$ref": "#/components/schemas/ScrapeOptions"
          }
        },
        "required": [
          "urls"
        ]
      },
      "ScrapedPage": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            }
          },
          "markdown": {
            "type": "string"
          },
          "html": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "screenshot": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "status"
        ]
      },
      "GetBatchScrapeJobParams": {
        "type": "object",
        "properties": {
          "page": {
            "type": "number"
          },
          "batchSize": {
            "type": "number"
          }
        }
      },
      "StartBatchScrapeJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          }
        },
        "required": [
          "jobId"
        ]
      },
      "BatchScrapeJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScrapedPage"
            }
          },
          "error": {
            "type": "string"
          },
          "totalScrapedPages": {
            "type": "number"
          },
          "totalPageBatches": {
            "type": "number"
          },
          "currentPageBatch": {
            "type": "number"
          },
          "batchSize": {
            "type": "number"
          }
        }
      },
      "StartExtractJobParams": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "systemPrompt": {
            "type": "string"
          },
          "maxLinks": {
            "type": "number"
          },
          "prompt": {
            "type": "string"
          },
          "schema": {
            "type": "object"
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "waitFor": {
            "default": 0,
            "type": "number"
          }
        },
        "additionalProperties": false,
        "required": [
          "urls"
        ]
      },
      "StartExtractJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          }
        },
        "required": [
          "jobId"
        ]
      },
      "ExtractJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object"
          },
          "error": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "jobId",
          "status"
        ]
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      },
      "CreateExtensionParams": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string",
            "format": "binary"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "file"
        ]
      },
      "ExtensionResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "iso8601"
          },
          "updatedAt": {
            "type": "string",
            "format": "iso8601"
          }
        }
      },
      "HyperAgentVersion": {
        "type": "string",
        "enum": [
          "0.8.0",
          "1.1.0"
        ],
        "default": "0.8.0"
      },
      "HyperAgentLlm": {
        "type": "string",
        "enum": [
          "gpt-5.6-luna",
          "gpt-5.5",
          "gpt-5.2",
          "gpt-5.1",
          "gpt-5",
          "gpt-5-mini",
          "gpt-4o",
          "gpt-4o-mini",
          "gpt-4.1",
          "gpt-4.1-mini",
          "claude-sonnet-5",
          "claude-sonnet-4-6",
          "claude-sonnet-4-5",
          "claude-haiku-5-5",
          "gemini-2.5-flash",
          "gemini-3.8-flash",
          "gemini-3.7-flash",
          "gemini-3-flash-preview"
        ],
        "default": "gpt-4o"
      },
      "StartHyperAgentTaskParams": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string"
          },
          "version": {
            "$ref": "#/components/schemas/HyperAgentVersion"
          },
          "llm": {
            "$ref": "#/components/schemas/HyperAgentLlm"
          },
          "sessionId": {
            "type": "string"
          },
          "maxSteps": {
            "type": "number",
            "default": 20
          },
          "keepBrowserOpen": {
            "type": "boolean",
            "default": false
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "useCustomApiKeys": {
            "type": "boolean",
            "default": false
          },
          "apiKeys": {
            "type": "object",
            "properties": {
              "openai": {
                "type": "string"
              },
              "anthropic": {
                "type": "string"
              },
              "google": {
                "type": "string"
              }
            }
          }
        },
        "required": [
          "task"
        ],
        "default": {
          "task": "go to example.com"
        }
      },
      "StartHyperAgentTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId"
        ]
      },
      "HyperAgentTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object",
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "finalResult": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "BrowserUseVersion": {
        "type": "string",
        "enum": [
          "0.1.40",
          "0.7.10",
          "latest"
        ],
        "default": "0.1.40"
      },
      "BrowserUseLlm": {
        "type": "string",
        "enum": [
          "gpt-4o",
          "gpt-4o-mini",
          "gpt-4.1",
          "gpt-4.1-mini",
          "claude-sonnet-5",
          "claude-sonnet-4-6",
          "claude-sonnet-4-5",
          "claude-haiku-5-5",
          "claude-sonnet-4-20250514",
          "gemini-2.0-flash",
          "gemini-2.5-flash",
          "gemini-3.8-flash"
        ],
        "default": "gemini-2.0-flash"
      },
      "StartBrowserUseTaskParams": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string"
          },
          "version": {
            "$ref": "#/components/schemas/BrowserUseVersion"
          },
          "llm": {
            "$ref": "#/components/schemas/BrowserUseLlm"
          },
          "sessionId": {
            "type": "string"
          },
          "validateOutput": {
            "type": "boolean",
            "default": false
          },
          "useVision": {
            "type": "boolean",
            "default": true
          },
          "useVisionForPlanner": {
            "type": "boolean",
            "default": false
          },
          "maxActionsPerStep": {
            "type": "number",
            "default": 10
          },
          "maxInputTokens": {
            "type": "number",
            "default": 128000
          },
          "plannerLlm": {
            "$ref": "#/components/schemas/BrowserUseLlm"
          },
          "pageExtractionLlm": {
            "$ref": "#/components/schemas/BrowserUseLlm"
          },
          "plannerInterval": {
            "type": "number",
            "default": 10
          },
          "maxSteps": {
            "type": "number",
            "default": 20
          },
          "maxFailures": {
            "type": "number",
            "default": 3
          },
          "initialActions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "additionalProperties": true
              }
            }
          },
          "sensitiveData": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "messageContext": {
            "type": "string"
          },
          "keepBrowserOpen": {
            "type": "boolean",
            "default": false
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "useCustomApiKeys": {
            "type": "boolean",
            "default": false
          },
          "apiKeys": {
            "type": "object",
            "properties": {
              "openai": {
                "type": "string"
              },
              "anthropic": {
                "type": "string"
              },
              "google": {
                "type": "string"
              }
            }
          }
        },
        "required": [
          "task"
        ],
        "default": {
          "task": "go to example.com"
        }
      },
      "StartBrowserUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId"
        ]
      },
      "BrowserUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object",
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "finalResult": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "ClaudeComputerUseLlm": {
        "type": "string",
        "enum": [
          "claude-opus-5-5",
          "claude-fable-5-1",
          "claude-opus-5",
          "claude-opus-4-5",
          "claude-opus-4-6",
          "claude-opus-4-7",
          "claude-opus-4-8",
          "claude-haiku-5-5",
          "claude-haiku-4-5-20251001",
          "claude-sonnet-5-5",
          "claude-sonnet-5",
          "claude-sonnet-4-6",
          "claude-sonnet-4-5",
          "claude-sonnet-4-20250514"
        ],
        "default": "claude-opus-4-8"
      },
      "ClaudeComputerUseReasoningEffort": {
        "type": "string",
        "enum": [
          "low",
          "medium",
          "high",
          "xhigh",
          "max"
        ]
      },
      "StartClaudeComputerUseTaskParams": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string"
          },
          "llm": {
            "$ref": "#/components/schemas/ClaudeComputerUseLlm"
          },
          "reasoningEffort": {
            "$ref": "#/components/schemas/ClaudeComputerUseReasoningEffort"
          },
          "sessionId": {
            "type": "string"
          },
          "maxFailures": {
            "type": "number",
            "default": 3
          },
          "maxSteps": {
            "type": "number",
            "default": 20
          },
          "keepBrowserOpen": {
            "type": "boolean",
            "default": false
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "useCustomApiKeys": {
            "type": "boolean",
            "default": false
          },
          "apiKeys": {
            "type": "object",
            "properties": {
              "anthropic": {
                "type": "string"
              }
            }
          },
          "useComputerAction": {
            "type": "boolean",
            "default": false
          }
        },
        "required": [
          "task"
        ],
        "default": {
          "task": "go to example.com"
        }
      },
      "StartClaudeComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId"
        ]
      },
      "ClaudeComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object",
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "finalResult": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "GeminiComputerUseLlm": {
        "type": "string",
        "enum": [
          "gemini-3.8-flash",
          "gemini-3.7-flash",
          "gemini-3.6-flash",
          "gemini-3.5-flash",
          "gemini-3.5-flash-lite",
          "gemini-3-flash-preview",
          "gemini-2.5-computer-use-preview-10-2025"
        ],
        "default": "gemini-3.8-flash"
      },
      "StartGeminiComputerUseTaskParams": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string"
          },
          "llm": {
            "$ref": "#/components/schemas/GeminiComputerUseLlm"
          },
          "sessionId": {
            "type": "string"
          },
          "maxFailures": {
            "type": "number",
            "default": 3
          },
          "maxSteps": {
            "type": "number",
            "default": 20
          },
          "keepBrowserOpen": {
            "type": "boolean",
            "default": false
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "useCustomApiKeys": {
            "type": "boolean",
            "default": false
          },
          "apiKeys": {
            "type": "object",
            "properties": {
              "google": {
                "type": "string"
              }
            }
          },
          "useComputerAction": {
            "type": "boolean",
            "default": false
          }
        },
        "required": [
          "task"
        ],
        "default": {
          "task": "go to example.com"
        }
      },
      "StartGeminiComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId"
        ]
      },
      "GeminiComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object",
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "finalResult": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "MetaComputerUseLlm": {
        "type": "string",
        "enum": [
          "muse-spark-1.1",
          "muse-spark-1.2",
          "muse-spark-1.3"
        ],
        "default": "muse-spark-1.3"
      },
      "MetaReasoningEffort": {
        "type": "string",
        "enum": [
          "minimal",
          "low",
          "medium",
          "high",
          "xhigh",
          "max"
        ],
        "default": "medium"
      },
      "StartMetaComputerUseTaskParams": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string"
          },
          "llm": {
            "$ref": "#/components/schemas/MetaComputerUseLlm"
          },
          "reasoningEffort": {
            "$ref": "#/components/schemas/MetaReasoningEffort"
          },
          "sessionId": {
            "type": "string"
          },
          "maxFailures": {
            "type": "number",
            "default": 3
          },
          "maxSteps": {
            "type": "number",
            "default": 50
          },
          "keepBrowserOpen": {
            "type": "boolean",
            "default": false
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "useCustomApiKeys": {
            "type": "boolean",
            "default": false
          },
          "apiKeys": {
            "type": "object",
            "properties": {
              "meta": {
                "type": "string"
              }
            }
          },
          "useComputerAction": {
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "task"
        ],
        "default": {
          "task": "go to example.com"
        }
      },
      "StartMetaComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId"
        ]
      },
      "MetaComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object",
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "finalResult": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "GrokComputerUseLlm": {
        "type": "string",
        "enum": [
          "grok-4.7",
          "grok-4.6",
          "grok-4.5"
        ],
        "default": "grok-4.7"
      },
      "GrokReasoningEffort": {
        "type": "string",
        "enum": [
          "low",
          "medium",
          "high"
        ],
        "default": "medium"
      },
      "StartGrokComputerUseTaskParams": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string"
          },
          "llm": {
            "$ref": "#/components/schemas/GrokComputerUseLlm"
          },
          "reasoningEffort": {
            "$ref": "#/components/schemas/GrokReasoningEffort"
          },
          "sessionId": {
            "type": "string"
          },
          "maxFailures": {
            "type": "number",
            "default": 3
          },
          "maxSteps": {
            "type": "number",
            "default": 50
          },
          "keepBrowserOpen": {
            "type": "boolean",
            "default": false
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "useCustomApiKeys": {
            "type": "boolean",
            "default": false
          },
          "apiKeys": {
            "type": "object",
            "properties": {
              "xai": {
                "type": "string"
              }
            }
          },
          "useComputerAction": {
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "task"
        ],
        "default": {
          "task": "go to example.com"
        }
      },
      "StartGrokComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId"
        ]
      },
      "GrokComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object",
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "finalResult": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "JevComputerUseLlm": {
        "type": "string",
        "enum": [
          "jev-1.13.0",
          "jev-latest"
        ],
        "default": "jev-1.13.0"
      },
      "JevTextLlm": {
        "type": "string",
        "enum": [
          "gemini-3.5-flash-lite"
        ],
        "default": "gemini-3.5-flash-lite"
      },
      "StartJevComputerUseTaskParams": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string"
          },
          "llm": {
            "$ref": "#/components/schemas/JevComputerUseLlm"
          },
          "textLlm": {
            "$ref": "#/components/schemas/JevTextLlm"
          },
          "sessionId": {
            "type": "string"
          },
          "maxFailures": {
            "type": "number",
            "default": 3
          },
          "maxSteps": {
            "type": "number",
            "default": 100
          },
          "keepBrowserOpen": {
            "type": "boolean",
            "default": false
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "useCustomApiKeys": {
            "type": "boolean",
            "default": false
          },
          "apiKeys": {
            "type": "object",
            "properties": {
              "jev": {
                "type": "string"
              },
              "google": {
                "type": "string"
              }
            }
          }
        },
        "required": [
          "task"
        ],
        "default": {
          "task": "go to example.com"
        }
      },
      "StartJevComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId"
        ]
      },
      "JevComputerUseTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object",
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "finalResult": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "CuaLlm": {
        "type": "string",
        "enum": [
          "computer-use-preview",
          "gpt-6-astra",
          "gpt-6.1-sol",
          "gpt-6-sol",
          "gpt-6-luna",
          "gpt-5.6-sol",
          "gpt-5.6-terra",
          "gpt-5.6-luna",
          "gpt-5.5",
          "gpt-5.4",
          "gpt-5.4-mini"
        ],
        "default": "computer-use-preview"
      },
      "CuaReasoningEffort": {
        "type": "string",
        "enum": [
          "none",
          "low",
          "medium",
          "high",
          "xhigh",
          "max"
        ],
        "default": "medium"
      },
      "StartCuaTaskParams": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string"
          },
          "llm": {
            "$ref": "#/components/schemas/CuaLlm"
          },
          "reasoningEffort": {
            "$ref": "#/components/schemas/CuaReasoningEffort"
          },
          "sessionId": {
            "type": "string"
          },
          "maxFailures": {
            "type": "number",
            "default": 3
          },
          "maxSteps": {
            "type": "number",
            "default": 20
          },
          "keepBrowserOpen": {
            "type": "boolean",
            "default": false
          },
          "sessionOptions": {
            "$ref": "#/components/schemas/CreateSessionParams"
          },
          "useCustomApiKeys": {
            "type": "boolean",
            "default": false
          },
          "apiKeys": {
            "type": "object",
            "properties": {
              "openai": {
                "type": "string"
              }
            }
          },
          "useComputerAction": {
            "type": "boolean",
            "default": false
          }
        },
        "required": [
          "task"
        ],
        "default": {
          "task": "go to example.com"
        }
      },
      "StartCuaTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId"
        ]
      },
      "CuaTaskResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "data": {
            "type": "object",
            "properties": {
              "steps": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "finalResult": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "liveUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "FetchStealthMode": {
        "type": "string",
        "enum": [
          "none",
          "auto",
          "ultra"
        ]
      },
      "FetchSanitizeMode": {
        "type": "string",
        "enum": [
          "none",
          "basic",
          "advanced"
        ]
      },
      "FetchStatus": {
        "type": "string",
        "enum": [
          "completed",
          "failed",
          "pending",
          "running"
        ]
      },
      "FetchWaitUntil": {
        "type": "string",
        "enum": [
          "load",
          "domcontentloaded",
          "networkidle"
        ]
      },
      "FetchScreenshotFormat": {
        "type": "string",
        "enum": [
          "jpeg",
          "png",
          "webp"
        ]
      },
      "PageStatus": {
        "type": "string",
        "enum": [
          "completed",
          "failed",
          "pending",
          "running"
        ]
      },
      "WebSearchStatus": {
        "type": "string",
        "enum": [
          "completed",
          "failed",
          "pending",
          "running",
          "stopped"
        ]
      },
      "WebSearchFiletype": {
        "type": "string",
        "enum": [
          "pdf",
          "doc",
          "docx",
          "xls",
          "xlsx",
          "ppt",
          "pptx",
          "html"
        ]
      },
      "FetchOutputScreenshotOptions": {
        "type": "object",
        "properties": {
          "fullPage": {
            "type": "boolean"
          },
          "format": {
            "$ref": "#/components/schemas/FetchScreenshotFormat"
          },
          "cropToContent": {
            "type": "boolean"
          },
          "cropToContentMaxHeight": {
            "type": "integer"
          },
          "cropToContentMinHeight": {
            "type": "integer"
          }
        }
      },
      "FetchStorageStateOptions": {
        "type": "object",
        "properties": {
          "localStorage": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "sessionStorage": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "FetchBrowserLocationOptions": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "city": {
            "type": "string"
          }
        }
      },
      "FetchOutputMarkdown": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "markdown"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "FetchOutputHtml": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "html"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "FetchOutputLinks": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "links"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "FetchOutputScreenshot": {
        "allOf": [
          {
            "$ref": "#/components/schemas/FetchOutputScreenshotOptions"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "screenshot"
                ]
              }
            },
            "required": [
              "type"
            ]
          }
        ]
      },
      "FetchOutputJsonOptions": {
        "type": "object",
        "properties": {
          "schema": {
            "type": "object"
          },
          "prompt": {
            "type": "string",
            "description": "Natural language prompt describing what data to extract. If only prompt is provided, a schema is auto-generated from it. If both prompt and schema are provided, the schema defines the output structure while the prompt provides additional guidance for the extraction."
          }
        }
      },
      "FetchOutputJson": {
        "allOf": [
          {
            "$ref": "#/components/schemas/FetchOutputJsonOptions"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "json"
                ]
              }
            },
            "required": [
              "type"
            ]
          }
        ]
      },
      "FetchOutputOptions": {
        "type": "object",
        "properties": {
          "formats": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/FetchOutputMarkdown"
                },
                {
                  "$ref": "#/components/schemas/FetchOutputHtml"
                },
                {
                  "$ref": "#/components/schemas/FetchOutputLinks"
                },
                {
                  "$ref": "#/components/schemas/FetchOutputScreenshot"
                },
                {
                  "$ref": "#/components/schemas/FetchOutputJson"
                },
                {
                  "$ref": "#/components/schemas/FetchOutputBranding"
                },
                {
                  "type": "string",
                  "enum": [
                    "markdown",
                    "html",
                    "links",
                    "screenshot",
                    "branding"
                  ]
                }
              ]
            }
          },
          "sanitize": {
            "$ref": "#/components/schemas/FetchSanitizeMode"
          },
          "includeSelectors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludeSelectors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "storageState": {
            "$ref": "#/components/schemas/FetchStorageStateOptions"
          }
        }
      },
      "FetchBrowserOptions": {
        "type": "object",
        "properties": {
          "screen": {
            "$ref": "#/components/schemas/ScreenConfig"
          },
          "profileId": {
            "type": "string"
          },
          "solveCaptchas": {
            "type": "string"
          },
          "location": {
            "$ref": "#/components/schemas/FetchBrowserLocationOptions"
          }
        }
      },
      "FetchNavigationOptions": {
        "type": "object",
        "properties": {
          "waitUntil": {
            "$ref": "#/components/schemas/FetchWaitUntil"
          },
          "timeoutMs": {
            "type": "integer"
          },
          "waitFor": {
            "type": "integer"
          }
        }
      },
      "FetchCacheOptions": {
        "type": "object",
        "properties": {
          "maxAgeSeconds": {
            "type": "integer"
          }
        }
      },
      "FetchParams": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "stealth": {
            "$ref": "#/components/schemas/FetchStealthMode"
          },
          "outputs": {
            "$ref": "#/components/schemas/FetchOutputOptions"
          },
          "browser": {
            "$ref": "#/components/schemas/FetchBrowserOptions"
          },
          "navigation": {
            "$ref": "#/components/schemas/FetchNavigationOptions"
          },
          "cache": {
            "$ref": "#/components/schemas/FetchCacheOptions"
          }
        },
        "required": [
          "url"
        ]
      },
      "FetchResponseData": {
        "type": "object",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            }
          },
          "html": {
            "type": "string"
          },
          "markdown": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "screenshot": {
            "type": "string"
          },
          "json": {
            "type": "object"
          },
          "branding": {
            "$ref": "#/components/schemas/BrandingProfile"
          }
        }
      },
      "FetchResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/FetchStatus"
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "data": {
            "$ref": "#/components/schemas/FetchResponseData"
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "WebCrawlOptions": {
        "type": "object",
        "properties": {
          "maxPages": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 10
          },
          "followLinks": {
            "type": "boolean",
            "default": true
          },
          "ignoreSitemap": {
            "type": "boolean",
            "default": false
          },
          "excludePatterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "includePatterns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "StartWebCrawlJobParams": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "stealth": {
            "$ref": "#/components/schemas/FetchStealthMode"
          },
          "outputs": {
            "$ref": "#/components/schemas/FetchOutputOptions"
          },
          "browser": {
            "$ref": "#/components/schemas/FetchBrowserOptions"
          },
          "navigation": {
            "$ref": "#/components/schemas/FetchNavigationOptions"
          },
          "cache": {
            "$ref": "#/components/schemas/FetchCacheOptions"
          },
          "crawlOptions": {
            "$ref": "#/components/schemas/WebCrawlOptions"
          }
        },
        "required": [
          "url"
        ]
      },
      "WebCrawlPageData": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/PageStatus"
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            }
          },
          "markdown": {
            "type": "string"
          },
          "html": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "screenshot": {
            "type": "string"
          },
          "json": {
            "type": "object"
          },
          "branding": {
            "$ref": "#/components/schemas/BrandingProfile"
          }
        },
        "required": [
          "url",
          "status"
        ]
      },
      "WebCrawlJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "totalPages": {
            "type": "integer",
            "minimum": 0
          },
          "totalPageBatches": {
            "type": "integer",
            "minimum": 0
          },
          "currentPageBatch": {
            "type": "integer",
            "minimum": 0
          },
          "batchSize": {
            "type": "integer",
            "minimum": 1
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebCrawlPageData"
            }
          }
        },
        "required": [
          "status",
          "jobId"
        ]
      },
      "WebSearchFilters": {
        "type": "object",
        "properties": {
          "exactPhrase": {
            "type": "boolean"
          },
          "semanticPhrase": {
            "type": "boolean"
          },
          "excludeTerms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "boostTerms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filetype": {
            "$ref": "#/components/schemas/WebSearchFiletype"
          },
          "site": {
            "type": "string"
          },
          "excludeSite": {
            "type": "string"
          },
          "intitle": {
            "type": "string"
          },
          "inurl": {
            "type": "string"
          }
        }
      },
      "WebSearchLocation": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "city": {
            "type": "string"
          }
        },
        "required": [
          "country"
        ]
      },
      "WebSearchParams": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "page": {
            "type": "integer"
          },
          "maxAgeSeconds": {
            "type": "integer"
          },
          "location": {
            "$ref": "#/components/schemas/WebSearchLocation"
          },
          "filters": {
            "$ref": "#/components/schemas/WebSearchFilters"
          }
        },
        "required": [
          "query"
        ]
      },
      "WebSearchResultItem": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "url",
          "description"
        ]
      },
      "WebSearchResponseData": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebSearchResultItem"
            }
          }
        },
        "required": [
          "query",
          "results"
        ]
      },
      "WebSearchResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/WebSearchStatus"
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "data": {
            "$ref": "#/components/schemas/WebSearchResponseData"
          }
        },
        "required": [
          "jobId",
          "status"
        ]
      },
      "FetchOutputBranding": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "branding"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "BrandingProfile": {
        "type": "object",
        "description": "Visual brand profile extracted via DOM analysis + LLM enhancement. All fields optional; the server may return a partial profile when the LLM refuses or fails.",
        "properties": {
          "colorScheme": {
            "type": "string",
            "description": "Page color scheme. Common values: light, dark."
          },
          "colors": {
            "type": "object",
            "description": "Color role assignments. Common keys: primary, secondary, accent, background, textPrimary, textSecondary, link."
          },
          "fonts": {
            "type": "array",
            "description": "Cleaned brand fonts with roles.",
            "items": {
              "type": "object",
              "properties": {
                "family": {
                  "type": "string"
                },
                "role": {
                  "type": "string"
                }
              }
            }
          },
          "typography": {
            "type": "object",
            "description": "Font families, stacks, and sizes. Keys: fontFamilies, fontStacks, fontSizes, lineHeights, fontWeights."
          },
          "spacing": {
            "type": "object",
            "description": "Spacing scale. Common keys: baseUnit, borderRadius, padding, margins, gridGutter."
          },
          "components": {
            "type": "object",
            "description": "Per-component style dictionaries. Common keys: buttonPrimary, buttonSecondary, input. Each value has background, textColor, borderColor, borderRadius, borderRadiusCorners, shadow."
          },
          "images": {
            "type": "object",
            "description": "Brand images. Common keys: logo, logoHref, logoAlt, favicon, ogImage."
          },
          "personality": {
            "type": "object",
            "description": "Brand personality. Common keys: tone, energy, targetAudience."
          },
          "designSystem": {
            "type": "object",
            "description": "Detected design system. Common keys: framework, componentLibrary."
          },
          "confidence": {
            "type": "object",
            "description": "Confidence scores (0-1). Common keys: buttons, colors, overall."
          }
        }
      },
      "SandboxNetworkPolicy": {
        "type": "object",
        "description": "Effective outbound network policy for a sandbox.",
        "properties": {
          "allowInternetAccess": {
            "type": "boolean",
            "default": true,
            "description": "Whether general outbound internet access is allowed."
          },
          "allowOut": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Outbound allow rules. Each entry is an IPv4 address, CIDR range, or domain."
          },
          "denyOut": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Outbound deny rules. Each entry is an IPv4 address or CIDR range."
          }
        },
        "required": [
          "allowInternetAccess",
          "allowOut",
          "denyOut"
        ]
      },
      "SandboxNetworkPolicyPatch": {
        "type": "object",
        "description": "Partial network policy update. Omitted fields keep their current values.",
        "properties": {
          "allowInternetAccess": {
            "type": "boolean"
          },
          "allowOut": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Outbound allow rules (IPv4 address, CIDR range, or domain)."
          },
          "denyOut": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Outbound deny rules (IPv4 address or CIDR range)."
          }
        },
        "additionalProperties": false
      },
      "SandboxRuntimeTarget": {
        "type": "object",
        "description": "Connection details for the sandbox runtime API (process execution, files, terminals).",
        "properties": {
          "transport": {
            "type": "string",
            "enum": [
              "regional_proxy"
            ]
          },
          "host": {
            "type": "string",
            "description": "Regional runtime origin."
          },
          "baseUrl": {
            "type": "string",
            "description": "Base URL for runtime API requests for this sandbox."
          }
        },
        "required": [
          "transport",
          "host",
          "baseUrl"
        ]
      },
      "SandboxExposedPort": {
        "type": "object",
        "properties": {
          "port": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535
          },
          "auth": {
            "type": "boolean",
            "description": "Whether requests to the exposed URL require authentication."
          },
          "url": {
            "type": "string",
            "description": "Public URL that routes to the exposed port."
          },
          "browserUrl": {
            "type": "string",
            "description": "URL that bootstraps browser access. For authenticated ports this includes a short-lived grant token."
          },
          "browserUrlExpiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Expiry of the browser bootstrap grant, if auth is enabled."
          }
        },
        "required": [
          "port",
          "auth",
          "url"
        ]
      },
      "SandboxExposePortParams": {
        "type": "object",
        "properties": {
          "port": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535,
            "description": "Port inside the sandbox to expose."
          },
          "auth": {
            "type": "boolean",
            "default": false,
            "description": "Require authentication for requests to the exposed URL."
          }
        },
        "required": [
          "port"
        ]
      },
      "SandboxUnexposePortParams": {
        "type": "object",
        "properties": {
          "port": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535
          }
        },
        "required": [
          "port"
        ]
      },
      "SandboxUnexposePortResponse": {
        "type": "object",
        "properties": {
          "port": {
            "type": "integer"
          },
          "exposed": {
            "type": "boolean",
            "description": "Always false after a successful unexpose."
          }
        },
        "required": [
          "port",
          "exposed"
        ]
      },
      "SandboxVolumeMount": {
        "type": "object",
        "description": "A volume mount attached at sandbox launch. Keys of the `mounts` map are absolute mount paths inside the sandbox.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Volume ID."
          },
          "type": {
            "type": "string",
            "enum": [
              "rw",
              "ro"
            ],
            "default": "rw",
            "description": "Mount access mode."
          },
          "shared": {
            "type": "boolean",
            "description": "Allow the volume to be mounted by multiple sandboxes at once."
          }
        },
        "required": [
          "id"
        ]
      },
      "CreateSandboxParams": {
        "type": "object",
        "description": "Provide exactly one start source: `imageName` (with optional `imageId`) or `snapshotName` (with optional `snapshotId`). `vcpus`, `memMiB`, and `diskSizeMiB` are only supported for image launches; snapshot launches always restore the snapshot's resources.",
        "properties": {
          "imageName": {
            "type": "string",
            "description": "Image name to launch from (base image such as `node`, `python`, `default`, or a custom image)."
          },
          "imageId": {
            "type": "string",
            "format": "uuid",
            "description": "Pin a specific image revision. Requires imageName."
          },
          "snapshotName": {
            "type": "string",
            "description": "Memory snapshot name to restore from."
          },
          "snapshotId": {
            "type": "string",
            "format": "uuid",
            "description": "Pin a specific snapshot revision. Requires snapshotName."
          },
          "region": {
            "$ref": "#/components/schemas/SessionRegion"
          },
          "enableRecording": {
            "type": "boolean",
            "default": false
          },
          "exposedPorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SandboxExposePortParams"
            },
            "description": "Ports to expose at launch."
          },
          "mounts": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/SandboxVolumeMount"
            },
            "description": "Volume mounts, keyed by absolute mount path inside the sandbox."
          },
          "vcpus": {
            "type": "integer",
            "minimum": 1,
            "maximum": 32,
            "description": "vCPU count (image launches only)."
          },
          "memMiB": {
            "type": "integer",
            "minimum": 512,
            "maximum": 262144,
            "description": "Memory in MiB (image launches only)."
          },
          "diskSizeMiB": {
            "type": "integer",
            "minimum": 2048,
            "maximum": 32768,
            "description": "Disk size in MiB (image launches only)."
          },
          "timeoutMinutes": {
            "type": "integer",
            "maximum": 1440,
            "description": "Maximum sandbox lifetime in minutes, measured from VM start."
          },
          "allowInternetAccess": {
            "type": "boolean",
            "default": true,
            "description": "Outbound internet access policy."
          },
          "allowOut": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Outbound allow rules (IPv4 address, CIDR range, or domain)."
          },
          "denyOut": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Outbound deny rules (IPv4 address or CIDR range)."
          }
        },
        "oneOf": [
          {
            "title": "Image launch",
            "required": [
              "imageName"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "snapshotName"
                  ]
                },
                {
                  "required": [
                    "snapshotId"
                  ]
                }
              ]
            }
          },
          {
            "title": "Snapshot restore",
            "required": [
              "snapshotName"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "imageName"
                  ]
                },
                {
                  "required": [
                    "imageId"
                  ]
                },
                {
                  "required": [
                    "vcpus"
                  ]
                },
                {
                  "required": [
                    "memMiB"
                  ]
                },
                {
                  "required": [
                    "diskSizeMiB"
                  ]
                }
              ]
            }
          }
        ]
      },
      "SandboxStatus": {
        "type": "string",
        "enum": [
          "active",
          "closed",
          "close-error",
          "error"
        ],
        "description": "Current sandbox lifecycle status."
      },
      "Sandbox": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "teamId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/SandboxStatus"
          },
          "startTime": {
            "type": "number",
            "nullable": true,
            "description": "Start timestamp in epoch milliseconds."
          },
          "endTime": {
            "type": "number",
            "nullable": true,
            "description": "End timestamp in epoch milliseconds."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "closeReason": {
            "type": "string",
            "nullable": true
          },
          "creditsUsed": {
            "type": "number",
            "nullable": true
          },
          "region": {
            "$ref": "#/components/schemas/SessionRegion"
          },
          "vcpus": {
            "type": "integer",
            "nullable": true
          },
          "memMiB": {
            "type": "integer",
            "nullable": true
          },
          "diskSizeMiB": {
            "type": "integer",
            "nullable": true
          },
          "timeoutMinutes": {
            "type": "integer",
            "nullable": true
          },
          "network": {
            "$ref": "#/components/schemas/SandboxNetworkPolicy"
          },
          "sessionUrl": {
            "type": "string",
            "description": "Dashboard URL for this sandbox."
          },
          "duration": {
            "type": "number",
            "description": "Total runtime in milliseconds (0 while running)."
          },
          "proxyBytesUsed": {
            "type": "number"
          },
          "runtime": {
            "$ref": "#/components/schemas/SandboxRuntimeTarget"
          },
          "exposedPorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SandboxExposedPort"
            }
          }
        },
        "required": [
          "id",
          "status",
          "region",
          "runtime",
          "exposedPorts"
        ]
      },
      "SandboxDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "teamId": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/SandboxStatus"
          },
          "startTime": {
            "type": "number",
            "nullable": true,
            "description": "Start timestamp in epoch milliseconds."
          },
          "endTime": {
            "type": "number",
            "nullable": true,
            "description": "End timestamp in epoch milliseconds."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "closeReason": {
            "type": "string",
            "nullable": true
          },
          "creditsUsed": {
            "type": "number",
            "nullable": true
          },
          "region": {
            "$ref": "#/components/schemas/SessionRegion"
          },
          "vcpus": {
            "type": "integer",
            "nullable": true
          },
          "memMiB": {
            "type": "integer",
            "nullable": true
          },
          "diskSizeMiB": {
            "type": "integer",
            "nullable": true
          },
          "timeoutMinutes": {
            "type": "integer",
            "nullable": true
          },
          "network": {
            "$ref": "#/components/schemas/SandboxNetworkPolicy"
          },
          "sessionUrl": {
            "type": "string",
            "description": "Dashboard URL for this sandbox."
          },
          "duration": {
            "type": "number",
            "description": "Total runtime in milliseconds (0 while running)."
          },
          "proxyBytesUsed": {
            "type": "number"
          },
          "runtime": {
            "$ref": "#/components/schemas/SandboxRuntimeTarget"
          },
          "exposedPorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SandboxExposedPort"
            }
          },
          "token": {
            "type": "string",
            "nullable": true,
            "description": "Sandbox runtime session token (24h TTL). Null when the sandbox is unavailable."
          },
          "tokenExpiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "required": [
          "id",
          "status",
          "region",
          "runtime",
          "exposedPorts"
        ]
      },
      "SandboxListResponse": {
        "type": "object",
        "properties": {
          "sandboxes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sandbox"
            }
          },
          "totalCount": {
            "type": "integer"
          },
          "page": {
            "type": "integer"
          },
          "perPage": {
            "type": "integer"
          }
        },
        "required": [
          "sandboxes",
          "totalCount",
          "page",
          "perPage"
        ]
      },
      "SandboxMemorySnapshotParams": {
        "type": "object",
        "properties": {
          "snapshotName": {
            "type": "string",
            "description": "Name for the snapshot. Auto-generated when omitted."
          }
        },
        "additionalProperties": false
      },
      "SandboxMemorySnapshotResponse": {
        "type": "object",
        "properties": {
          "snapshotName": {
            "type": "string"
          },
          "snapshotId": {
            "type": "string",
            "format": "uuid"
          },
          "namespace": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "description": "Snapshot status (e.g. `creating`, `created`)."
          },
          "imageName": {
            "type": "string"
          },
          "imageId": {
            "type": "string",
            "format": "uuid"
          },
          "imageNamespace": {
            "type": "string"
          }
        },
        "required": [
          "snapshotName",
          "snapshotId",
          "namespace",
          "status"
        ]
      },
      "SandboxNetworkUpdateResponse": {
        "type": "object",
        "properties": {
          "network": {
            "$ref": "#/components/schemas/SandboxNetworkPolicy"
          }
        },
        "required": [
          "network"
        ]
      },
      "CreateVolumeParams": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "Volume": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "size": {
            "type": "number",
            "description": "Volume size in bytes."
          },
          "transferAmount": {
            "type": "number",
            "description": "Data transferred in bytes."
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "VolumeDeleteResponse": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "description": "Deleted volume ID."
          },
          "name": {
            "type": "string",
            "description": "Deleted volume name."
          }
        },
        "required": [
          "deleted",
          "id",
          "name"
        ]
      },
      "VolumeListResponse": {
        "type": "object",
        "properties": {
          "volumes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Volume"
            }
          },
          "totalCount": {
            "type": "integer"
          },
          "page": {
            "type": "integer"
          },
          "perPage": {
            "type": "integer"
          }
        },
        "required": [
          "volumes",
          "totalCount",
          "page",
          "perPage"
        ]
      },
      "SandboxImage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "imageName": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "enum": [
              "public",
              "team"
            ]
          },
          "imageInit": {
            "type": "object",
            "nullable": true,
            "description": "Startup configuration derived from the image (entrypoint, env, user)."
          },
          "uploaded": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "imageName",
          "namespace",
          "source",
          "uploaded"
        ]
      },
      "SandboxImageListResponse": {
        "type": "object",
        "properties": {
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SandboxImage"
            }
          },
          "totalCount": {
            "type": "integer"
          },
          "page": {
            "type": "integer"
          },
          "perPage": {
            "type": "integer"
          }
        },
        "required": [
          "images",
          "totalCount",
          "page",
          "perPage"
        ]
      },
      "SandboxSnapshot": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "snapshotName": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "imageNamespace": {
            "type": "string"
          },
          "imageName": {
            "type": "string"
          },
          "imageId": {
            "type": "string",
            "format": "uuid"
          },
          "vcpus": {
            "type": "integer",
            "nullable": true
          },
          "memMiB": {
            "type": "integer",
            "nullable": true
          },
          "diskSizeMiB": {
            "type": "integer",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "creating",
              "created",
              "failed"
            ]
          },
          "metadata": {
            "type": "object"
          },
          "uploaded": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "snapshotName",
          "namespace",
          "imageName",
          "status"
        ]
      },
      "SandboxSnapshotListResponse": {
        "type": "object",
        "properties": {
          "snapshots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SandboxSnapshot"
            }
          },
          "totalCount": {
            "type": "integer"
          },
          "page": {
            "type": "integer"
          },
          "perPage": {
            "type": "integer"
          }
        },
        "required": [
          "snapshots",
          "totalCount",
          "page",
          "perPage"
        ]
      },
      "SandboxSnapshotResponse": {
        "type": "object",
        "properties": {
          "snapshot": {
            "$ref": "#/components/schemas/SandboxSnapshot"
          }
        },
        "required": [
          "snapshot"
        ]
      },
      "SandboxSnapshotDeleteResponse": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "deleted"
        ]
      },
      "SandboxImageDeleteResponse": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "description": "Deleted image revision ID."
          },
          "imageName": {
            "type": "string",
            "description": "Deleted image name."
          },
          "uploaded": {
            "type": "boolean",
            "description": "Whether the deleted revision was uploaded. Delete-by-name can target a not-yet-uploaded revision that list endpoints hide."
          }
        },
        "required": [
          "deleted",
          "id",
          "imageName",
          "uploaded"
        ]
      },
      "CreateImageBuildParams": {
        "type": "object",
        "properties": {
          "imageName": {
            "type": "string",
            "maxLength": 64,
            "pattern": "^[A-Za-z0-9_-]+$",
            "description": "Name for the resulting image. Letters, numbers, dashes, and underscores only."
          },
          "inputSha256": {
            "type": "string",
            "minLength": 64,
            "maxLength": 64,
            "pattern": "^[A-Fa-f0-9]{64}$",
            "description": "SHA-256 of the image archive to upload."
          },
          "inputSizeBytes": {
            "type": "integer",
            "minimum": 1
          },
          "inputFormat": {
            "type": "string",
            "enum": [
              "rootfs_export_tar_gz"
            ],
            "default": "rootfs_export_tar_gz",
            "description": "Archive format of the input."
          },
          "sourcePlatform": {
            "type": "string",
            "enum": [
              "linux/amd64"
            ],
            "default": "linux/amd64",
            "description": "Platform of the source image."
          },
          "imageConfigUser": {
            "type": "string",
            "description": "Default user from the image config."
          },
          "imageInit": {
            "type": "object",
            "description": "Startup defaults to attach to the image.",
            "properties": {
              "env": {
                "type": "object",
                "maxProperties": 128,
                "description": "Environment variables. Keys must match `^[A-Za-z_][A-Za-z0-9_]*$`.",
                "additionalProperties": {
                  "type": "string",
                  "maxLength": 8192
                }
              },
              "command": {
                "type": "string",
                "minLength": 1,
                "maxLength": 8192,
                "description": "Startup command."
              },
              "args": {
                "type": "array",
                "maxItems": 256,
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 8192
                },
                "description": "Startup argument vector."
              }
            },
            "additionalProperties": false
          }
        },
        "required": [
          "imageName",
          "inputSha256",
          "inputSizeBytes"
        ]
      },
      "CompleteImageBuildParams": {
        "type": "object",
        "properties": {
          "inputSha256": {
            "type": "string",
            "minLength": 64,
            "maxLength": 64,
            "pattern": "^[A-Fa-f0-9]{64}$"
          },
          "inputSizeBytes": {
            "type": "integer",
            "minimum": 1
          },
          "inputFormat": {
            "type": "string",
            "enum": [
              "rootfs_export_tar_gz"
            ],
            "default": "rootfs_export_tar_gz"
          }
        },
        "required": [
          "inputSha256",
          "inputSizeBytes"
        ]
      },
      "ImageBuild": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "imageName": {
            "type": "string"
          },
          "imageId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "awaiting_upload",
              "upload_verified",
              "dispatching",
              "building",
              "verifying",
              "completed",
              "failed",
              "canceled"
            ],
            "description": "Current image-build lifecycle state."
          },
          "inputSha256": {
            "type": "string",
            "nullable": true
          },
          "inputSizeBytes": {
            "type": "integer",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "imageName",
          "status",
          "completedAt",
          "createdAt",
          "updatedAt"
        ]
      },
      "ImageBuildResponse": {
        "type": "object",
        "properties": {
          "build": {
            "$ref": "#/components/schemas/ImageBuild"
          }
        },
        "required": [
          "build"
        ]
      },
      "ImageBuildListResponse": {
        "type": "object",
        "properties": {
          "builds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ImageBuild"
            }
          }
        },
        "required": [
          "builds"
        ]
      },
      "CreateImageBuildResponse": {
        "type": "object",
        "properties": {
          "build": {
            "$ref": "#/components/schemas/ImageBuild"
          },
          "upload": {
            "type": "object",
            "description": "Presigned upload target for the image archive.",
            "properties": {
              "url": {
                "type": "string"
              },
              "method": {
                "type": "string",
                "enum": [
                  "PUT"
                ]
              },
              "headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "objectKey": {
                "type": "string"
              },
              "expiresInSeconds": {
                "type": "integer"
              },
              "maxUploadBytes": {
                "type": "integer"
              }
            },
            "required": [
              "url",
              "method",
              "headers",
              "objectKey",
              "expiresInSeconds",
              "maxUploadBytes"
            ]
          }
        },
        "required": [
          "build",
          "upload"
        ]
      },
      "X402SessionStatus": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "status",
          "startTime",
          "endTime",
          "timeoutMinutes",
          "expiresAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "closed",
              "error",
              "close-error"
            ]
          },
          "startTime": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Session start timestamp in Unix milliseconds, when available."
          },
          "endTime": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Session end timestamp in Unix milliseconds, when available."
          },
          "timeoutMinutes": {
            "type": "integer",
            "minimum": 5,
            "maximum": 60,
            "description": "Prepaid duration chosen at creation."
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Original purchased expiry, unchanged by status checks or an early stop."
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      },
      "X402SessionManagement": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "The managementToken from the X402 session purchase response. Valid for 24 hours and scoped to that session; no API key or further payment is required."
      }
    }
  },
  "paths": {
    "/api/session": {
      "post": {
        "summary": "Create new session",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Create a session",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.sessions.create({\n  useStealth: true\n});"
          },
          {
            "lang": "python",
            "label": "Create a session",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.sessions.create({\n  \"use_stealth\": True\n})"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSessionParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Session created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/session/{id}": {
      "get": {
        "summary": "Get session by ID",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get a session",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.sessions.get('session-id');"
          },
          {
            "lang": "python",
            "label": "Get a session",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.sessions.get('session-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionDetail"
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/session/{id}/stop": {
      "put": {
        "summary": "Stop a session",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop a session",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.sessions.stop('session-id');"
          },
          {
            "lang": "python",
            "label": "Stop a session",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.sessions.stop('session-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/session/{id}/update": {
      "put": {
        "summary": "Update a running session",
        "description": "Update supported settings on an active browser session. Supported update types are profile, proxy, screen, and solveCaptchas.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start CAPTCHA solving",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.sessions.startCaptchaSolving('session-id', {\n  solverType: 'visual'\n});\n\nawait client.sessions.stopCaptchaSolving('session-id');"
          },
          {
            "lang": "python",
            "label": "Start CAPTCHA solving",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.sessions.start_captcha_solving(\n  'session-id',\n  {\"solver_type\": \"visual\"}\n)\n\nclient.sessions.stop_captcha_solving('session-id')"
          },
          {
            "lang": "bash",
            "label": "Start CAPTCHA solving",
            "source": "curl -X PUT \"https://api.hyperbrowser.ai/api/session/$SESSION_ID/update\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $HYPERBROWSER_API_KEY\" \\\n  -d '{\"type\":\"solveCaptchas\",\"params\":{\"enabled\":true,\"solverType\":\"visual\"}}'"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSessionRequest"
              },
              "examples": {
                "profilePersistence": {
                  "summary": "Update profile persistence",
                  "value": {
                    "type": "profile",
                    "params": {
                      "persistChanges": true,
                      "persistNetworkCache": true
                    }
                  }
                },
                "managedProxy": {
                  "summary": "Enable managed proxy",
                  "value": {
                    "type": "proxy",
                    "params": {
                      "enabled": true,
                      "location": {
                        "country": "US",
                        "state": "CA",
                        "city": "San Francisco"
                      }
                    }
                  }
                },
                "screenSize": {
                  "summary": "Resize screen",
                  "value": {
                    "type": "screen",
                    "params": {
                      "width": 1280,
                      "height": 720
                    }
                  }
                },
                "startCaptchaSolving": {
                  "summary": "Start CAPTCHA solving",
                  "value": {
                    "type": "solveCaptchas",
                    "params": {
                      "enabled": true,
                      "solverType": "visual"
                    }
                  }
                },
                "stopCaptchaSolving": {
                  "summary": "Stop CAPTCHA solving",
                  "value": {
                    "type": "solveCaptchas",
                    "params": {
                      "enabled": false
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Session updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid update request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "CAPTCHA evaluation is already running",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/session/{id}/captcha/evaluate": {
      "post": {
        "summary": "Run manual CAPTCHA evaluation",
        "description": "Trigger a bounded CAPTCHA evaluation on an active browser session. Supported CAPTCHA targets are turnstile, cloudflare-challenge, aliexpress, recaptcha, and amazon.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Run manual CAPTCHA evaluation",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nconst result = await client.sessions.evaluateCaptcha('session-id', {\n  captchaType: 'recaptcha',\n  iterations: 2\n});"
          },
          {
            "lang": "python",
            "label": "Run manual CAPTCHA evaluation",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nresult = client.sessions.evaluate_captcha(\n  'session-id',\n  {\n    \"captcha_type\": \"recaptcha\",\n    \"iterations\": 2\n  }\n)"
          },
          {
            "lang": "bash",
            "label": "Run manual CAPTCHA evaluation",
            "source": "curl -X POST \"https://api.hyperbrowser.ai/api/session/$SESSION_ID/captcha/evaluate\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $HYPERBROWSER_API_KEY\" \\\n  -d '{\"captchaType\":\"recaptcha\",\"iterations\":2}'"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaptchaEvaluationParams"
              },
              "examples": {
                "recaptchaVisual": {
                  "summary": "Evaluate visual reCAPTCHA",
                  "value": {
                    "captchaType": "recaptcha",
                    "iterations": 2
                  }
                },
                "turnstile": {
                  "summary": "Evaluate Turnstile",
                  "value": {
                    "captcha": "turnstile",
                    "maxIterations": 3
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "CAPTCHA evaluation completed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaptchaEvaluationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid evaluation request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "CAPTCHA evaluation is already running",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/sessions": {
      "get": {
        "summary": "Get list of sessions",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "List sessions",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.sessions.list({\n  status: 'active'\n});"
          },
          {
            "lang": "python",
            "label": "List sessions",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.sessions.list({\"status\": \"active\"})"
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "number",
              "required": [
                "false"
              ],
              "default": 1
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "closed",
                "error",
                "close-error"
              ],
              "required": [
                "false"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of sessions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sessions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Session"
                      }
                    },
                    "totalCount": {
                      "type": "number",
                      "example": 100
                    },
                    "page": {
                      "type": "number",
                      "example": 1
                    },
                    "pageSize": {
                      "type": "number",
                      "example": 10
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid query parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/session/{id}/recording-url": {
      "get": {
        "summary": "Get session recording URL",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get recording URL",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.sessions.getRecordingURL('session-id');"
          },
          {
            "lang": "python",
            "label": "Get recording URL",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.sessions.get_recording_url('session-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session recording URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionRecordingUrlResponse"
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/session/{id}/video-recording-url": {
      "get": {
        "summary": "Get session video recording URL",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get video recording URL",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.sessions.getVideoRecordingURL('session-id');"
          },
          {
            "lang": "python",
            "label": "Get video recording URL",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.sessions.get_video_recording_url('session-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session video recording URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionVideoRecordingUrlResponse"
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/session/{id}/downloads-url": {
      "get": {
        "summary": "Get session downloads URL",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get downloads URL",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.sessions.getDownloadsURL('session-id');"
          },
          {
            "lang": "python",
            "label": "Get downloads URL",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.sessions.get_downloads_url('session-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session downloads URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionDownloadsUrlResponse"
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/profile": {
      "post": {
        "summary": "Creates a new profile",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Create a profile",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.profiles.create({\n  name: 'My Profile'\n});"
          },
          {
            "lang": "python",
            "label": "Create a profile",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.profiles.create({\"name\": \"My Profile\"})"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProfileParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Profile created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateProfileResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/profile/{id}": {
      "get": {
        "summary": "Get profile by ID",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get a profile",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.profiles.get('profile-id');"
          },
          {
            "lang": "python",
            "label": "Get a profile",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.profiles.get('profile-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Profile details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileResponse"
                }
              }
            }
          },
          "404": {
            "description": "Profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete profile by ID",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Delete a profile",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.profiles.delete('profile-id');"
          },
          {
            "lang": "python",
            "label": "Delete a profile",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.profiles.delete('profile-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Profile deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/profiles": {
      "get": {
        "summary": "Get list of profiles",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "List profiles",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.profiles.list({\n  page: 1\n});"
          },
          {
            "lang": "python",
            "label": "List profiles",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.profiles.list({\"page\": 1})"
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "number",
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "default": 10
            }
          },
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of profiles",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid query parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/scrape": {
      "post": {
        "summary": "Create new scrape job",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start scrape job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.scrape.start({\n  url: 'https://example.com',\n  scrapeOptions: {\n    formats: ['markdown']\n  }\n});"
          },
          {
            "lang": "python",
            "label": "Start scrape job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.scrape.start({\n  \"url\": \"https://example.com\",\n  \"scrape_options\": {\n    \"formats\": [\"markdown\"]\n  }\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartScrapeJobParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Scrape job created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartScrapeJobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/scrape/{id}": {
      "get": {
        "summary": "Get scrape job status and result",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get scrape job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.scrape.get('job-id');"
          },
          {
            "lang": "python",
            "label": "Get scrape job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.scrape.get('job-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Scrape job details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScrapeJobResponse"
                }
              }
            }
          },
          "404": {
            "description": "Job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/scrape/{id}/status": {
      "get": {
        "summary": "Get scrape job status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get scrape job status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.scrape.getStatus('job-id');"
          },
          {
            "lang": "python",
            "label": "Get scrape job status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.scrape.get_status('job-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Scrape job status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/scrape/batch": {
      "post": {
        "summary": "Start a batch scrape job",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start batch scrape job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.scrape.batch.start({\n  urls: ['https://example.com/page1', 'https://example.com/page2'],\n  scrapeOptions: {\n    formats: ['markdown']\n  }\n});"
          },
          {
            "lang": "python",
            "label": "Start batch scrape job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.scrape.batch.start({\n  \"urls\": [\"https://example.com/page1\", \"https://example.com/page2\"],\n  \"scrape_options\": {\n    \"formats\": [\"markdown\"]\n  }\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartBatchScrapeJobParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Batch scrape job started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartBatchScrapeJobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too many concurrent batch scrape jobs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/scrape/batch/{id}": {
      "get": {
        "summary": "Get batch scrape job status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get batch scrape job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.scrape.batch.get('job-id', {\n  page: 1\n});"
          },
          {
            "lang": "python",
            "label": "Get batch scrape job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.scrape.batch.get('job-id', {\"page\": 1})"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Batch scrape job details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchScrapeJobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Batch scrape job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/scrape/batch/{id}/status": {
      "get": {
        "summary": "Get batch scrape job status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get batch scrape job status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.scrape.batch.getStatus('job-id');"
          },
          {
            "lang": "python",
            "label": "Get batch scrape job status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.scrape.batch.get_status('job-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Batch scrape job status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Batch scrape job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/crawl": {
      "post": {
        "summary": "Start a crawl job",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start crawl job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.crawl.start({\n  url: 'https://example.com',\n  scrapeOptions: {\n    formats: ['markdown']\n  }\n});"
          },
          {
            "lang": "python",
            "label": "Start crawl job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.crawl.start({\n  \"url\": \"https://example.com\",\n  \"scrape_options\": {\n    \"formats\": [\"markdown\"]\n  }\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "url"
                ],
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "maxPages": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "followLinks": {
                    "type": "boolean",
                    "default": true
                  },
                  "ignoreSitemap": {
                    "type": "boolean",
                    "default": false
                  },
                  "excludePatterns": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "includePatterns": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "sessionOptions": {
                    "$ref": "#/components/schemas/CreateSessionParams"
                  },
                  "scrapeOptions": {
                    "$ref": "#/components/schemas/ScrapeOptions"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Crawl job started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "jobId"
                  ],
                  "properties": {
                    "jobId": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/crawl/{id}": {
      "get": {
        "summary": "Get crawl job status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get crawl job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.crawl.get('job-id', {\n  page: 1\n});"
          },
          {
            "lang": "python",
            "label": "Get crawl job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.crawl.get('job-id', {\"page\": 1})"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "batchSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Crawl job details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "jobId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "status": {
                      "$ref": "#/components/schemas/JobStatus"
                    },
                    "error": {
                      "type": "string",
                      "nullable": true
                    },
                    "totalCrawledPages": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "totalPageBatches": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "currentPageBatch": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "batchSize": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CrawledPage"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "jobId"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Crawl job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/crawl/{id}/status": {
      "get": {
        "summary": "Get crawl job status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get crawl job status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.crawl.getStatus('job-id');"
          },
          {
            "lang": "python",
            "label": "Get crawl job status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.crawl.get_status('job-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Crawl job status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Crawl job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/extract": {
      "post": {
        "summary": "Start an extract job",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start extract job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.extract.start({\n  urls: ['https://example.com'],\n  prompt: 'Extract the main headline and author'\n});"
          },
          {
            "lang": "python",
            "label": "Start extract job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.extract.start({\n  \"urls\": [\"https://example.com\"],\n  \"prompt\": \"Extract the main headline and author\"\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartExtractJobParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Extract job started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartExtractJobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/extract/{id}": {
      "get": {
        "summary": "Get extract job status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get extract job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.extract.get('job-id');"
          },
          {
            "lang": "python",
            "label": "Get extract job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.extract.get('job-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Extract job details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractJobResponse"
                }
              }
            }
          },
          "404": {
            "description": "Extract job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/extract/{id}/status": {
      "get": {
        "summary": "Get extract job status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get extract job status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.extract.getStatus('job-id');"
          },
          {
            "lang": "python",
            "label": "Get extract job status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.extract.get_status('job-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Extract job status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Extract job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/hyper-agent": {
      "post": {
        "summary": "Start a HyperAgent task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start HyperAgent task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.hyperAgent.start({\n  task: 'Find the price of the product',\n  maxSteps: 20\n});"
          },
          {
            "lang": "python",
            "label": "Start HyperAgent task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.hyper_agent.start({\n  \"task\": \"Find the price of the product\",\n  \"max_steps\": 20\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartHyperAgentTaskParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "HyperAgent task started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartHyperAgentTaskResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/hyper-agent/{id}": {
      "get": {
        "summary": "Get HyperAgent task status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get HyperAgent task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.hyperAgent.get('task-id');"
          },
          {
            "lang": "python",
            "label": "Get HyperAgent task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.hyper_agent.get('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "HyperAgent task details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HyperAgentTaskResponse"
                }
              }
            }
          },
          "404": {
            "description": "HyperAgent task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/hyper-agent/{id}/stop": {
      "put": {
        "summary": "Stop a HyperAgent task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop HyperAgent task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.hyperAgent.stop('task-id');"
          },
          {
            "lang": "python",
            "label": "Stop HyperAgent task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.hyper_agent.stop('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "HyperAgent task stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/hyper-agent/{id}/status": {
      "get": {
        "summary": "Get HyperAgent task status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get HyperAgent task status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.hyperAgent.getStatus('task-id');"
          },
          {
            "lang": "python",
            "label": "Get HyperAgent task status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.hyper_agent.get_status('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "HyperAgent task status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "HyperAgent task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/browser-use": {
      "post": {
        "summary": "Start a browser use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start BrowserUse task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.browserUse.start({\n  task: 'Find the price of the product',\n  llm: 'gemini-2.0-flash',\n  maxSteps: 20\n});"
          },
          {
            "lang": "python",
            "label": "Start BrowserUse task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.browser_use.start({\n  \"task\": \"Find the price of the product\",\n  \"llm\": \"gemini-2.0-flash\",\n  \"max_steps\": 20\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartBrowserUseTaskParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Browser use task started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartBrowserUseTaskResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/browser-use/{id}": {
      "get": {
        "summary": "Get browser use task status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get BrowserUse task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.browserUse.get('task-id');"
          },
          {
            "lang": "python",
            "label": "Get BrowserUse task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.browser_use.get('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Browser use task details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrowserUseTaskResponse"
                }
              }
            }
          },
          "404": {
            "description": "Browser use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/browser-use/{id}/stop": {
      "put": {
        "summary": "Stop a browser use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop BrowserUse task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.browserUse.stop('task-id');"
          },
          {
            "lang": "python",
            "label": "Stop BrowserUse task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.browser_use.stop('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Browser use task stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/browser-use/{id}/status": {
      "get": {
        "summary": "Get browser use task status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get BrowserUse task status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.browserUse.getStatus('task-id');"
          },
          {
            "lang": "python",
            "label": "Get BrowserUse task status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.browser_use.get_status('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Browser use task status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Browser use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/claude-computer-use": {
      "post": {
        "summary": "Start a claude computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start Claude Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.claudeComputerUse.start({\n  task: 'Find the price of the product',\n  llm: 'claude-sonnet-4-5',\n  maxSteps: 20\n});"
          },
          {
            "lang": "python",
            "label": "Start Claude Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.claude_computer_use.start({\n  \"task\": \"Find the price of the product\",\n  \"llm\": \"claude-sonnet-4-5\",\n  \"max_steps\": 20\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartClaudeComputerUseTaskParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Claude computer use task started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartClaudeComputerUseTaskResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/claude-computer-use/{id}": {
      "get": {
        "summary": "Get claude computer use task status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Claude Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.claudeComputerUse.get('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Claude Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.claude_computer_use.get('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Claude computer use task details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaudeComputerUseTaskResponse"
                }
              }
            }
          },
          "404": {
            "description": "Claude computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/claude-computer-use/{id}/stop": {
      "put": {
        "summary": "Stop a claude computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop Claude Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.claudeComputerUse.stop('task-id');"
          },
          {
            "lang": "python",
            "label": "Stop Claude Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.claude_computer_use.stop('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Claude computer use task stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/claude-computer-use/{id}/status": {
      "get": {
        "summary": "Get claude computer use task status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Claude Computer Use task status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.claudeComputerUse.getStatus('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Claude Computer Use task status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.claude_computer_use.get_status('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Claude computer use task status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Claude computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/gemini-computer-use": {
      "post": {
        "summary": "Start a gemini computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start Gemini Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.geminiComputerUse.start({\n  task: 'Find the price of the product',\n  maxSteps: 20\n});"
          },
          {
            "lang": "python",
            "label": "Start Gemini Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.gemini_computer_use.start({\n  \"task\": \"Find the price of the product\",\n  \"max_steps\": 20\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartGeminiComputerUseTaskParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Gemini computer use task started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartGeminiComputerUseTaskResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/gemini-computer-use/{id}": {
      "get": {
        "summary": "Get gemini computer use task status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Gemini Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.geminiComputerUse.get('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Gemini Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.gemini_computer_use.get('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Gemini computer use task details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GeminiComputerUseTaskResponse"
                }
              }
            }
          },
          "404": {
            "description": "Gemini computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/gemini-computer-use/{id}/stop": {
      "put": {
        "summary": "Stop a gemini computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop Gemini Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.geminiComputerUse.stop('task-id');"
          },
          {
            "lang": "python",
            "label": "Stop Gemini Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.gemini_computer_use.stop('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Gemini computer use task stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/gemini-computer-use/{id}/status": {
      "get": {
        "summary": "Get gemini computer use task status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Gemini Computer Use task status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.geminiComputerUse.getStatus('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Gemini Computer Use task status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.gemini_computer_use.get_status('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Gemini computer use task status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Gemini computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/meta-computer-use": {
      "post": {
        "summary": "Start a meta computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start Meta Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.metaComputerUse.start({\n  task: 'Find the price of the product',\n  maxSteps: 20\n});"
          },
          {
            "lang": "python",
            "label": "Start Meta Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.meta_computer_use.start({\n  \"task\": \"Find the price of the product\",\n  \"max_steps\": 20\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartMetaComputerUseTaskParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Meta computer use task started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartMetaComputerUseTaskResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/meta-computer-use/{id}": {
      "get": {
        "summary": "Get meta computer use task status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Meta Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.metaComputerUse.get('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Meta Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.meta_computer_use.get('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Meta computer use task details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetaComputerUseTaskResponse"
                }
              }
            }
          },
          "404": {
            "description": "Meta computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/meta-computer-use/{id}/stop": {
      "put": {
        "summary": "Stop a meta computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop Meta Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.metaComputerUse.stop('task-id');"
          },
          {
            "lang": "python",
            "label": "Stop Meta Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.meta_computer_use.stop('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Meta computer use task stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/meta-computer-use/{id}/status": {
      "get": {
        "summary": "Get meta computer use task status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Meta Computer Use task status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.metaComputerUse.getStatus('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Meta Computer Use task status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.meta_computer_use.get_status('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Meta computer use task status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Meta computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/grok-computer-use": {
      "post": {
        "summary": "Start a grok computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start Grok Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.grokComputerUse.start({\n  task: 'Find the price of the product',\n  maxSteps: 20\n});"
          },
          {
            "lang": "python",
            "label": "Start Grok Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.grok_computer_use.start({\n  \"task\": \"Find the price of the product\",\n  \"max_steps\": 20\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartGrokComputerUseTaskParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Grok computer use task started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartGrokComputerUseTaskResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/grok-computer-use/{id}": {
      "get": {
        "summary": "Get grok computer use task status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Grok Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.grokComputerUse.get('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Grok Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.grok_computer_use.get('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Grok computer use task details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GrokComputerUseTaskResponse"
                }
              }
            }
          },
          "404": {
            "description": "Grok computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/grok-computer-use/{id}/stop": {
      "put": {
        "summary": "Stop a grok computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop Grok Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.grokComputerUse.stop('task-id');"
          },
          {
            "lang": "python",
            "label": "Stop Grok Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.grok_computer_use.stop('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Grok computer use task stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/grok-computer-use/{id}/status": {
      "get": {
        "summary": "Get grok computer use task status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Grok Computer Use task status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.grokComputerUse.getStatus('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Grok Computer Use task status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.grok_computer_use.get_status('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Grok computer use task status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Grok computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/cua": {
      "post": {
        "summary": "Start a CUA task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start CUA task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.cua.start({\n  task: 'Find the price of the product',\n  maxSteps: 20\n});"
          },
          {
            "lang": "python",
            "label": "Start CUA task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.cua.start({\n  \"task\": \"Find the price of the product\",\n  \"max_steps\": 20\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartCuaTaskParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "CUA task started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartCuaTaskResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/cua/{id}": {
      "get": {
        "summary": "Get CUA task status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get CUA task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.cua.get('task-id');"
          },
          {
            "lang": "python",
            "label": "Get CUA task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.cua.get('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "CUA task details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CuaTaskResponse"
                }
              }
            }
          },
          "404": {
            "description": "CUA task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/cua/{id}/stop": {
      "put": {
        "summary": "Stop a CUA task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop CUA task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.cua.stop('task-id');"
          },
          {
            "lang": "python",
            "label": "Stop CUA task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.cua.stop('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "CUA task stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/cua/{id}/status": {
      "get": {
        "summary": "Get CUA task status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get CUA task status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.cua.getStatus('task-id');"
          },
          {
            "lang": "python",
            "label": "Get CUA task status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.cua.get_status('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "CUA task status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "CUA task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/extensions/add": {
      "post": {
        "summary": "Add a new extension",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Add an extension",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.extensions.create({\n  filePath: '/path/to/extension.zip',\n  name: 'My Extension'\n});"
          },
          {
            "lang": "python",
            "label": "Add an extension",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.extensions.create({\n  \"file_path\": \"/path/to/extension.zip\",\n  \"name\": \"My Extension\"\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateExtensionParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Extension added successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtensionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/extensions/list": {
      "get": {
        "summary": "List all extensions",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "List extensions",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.extensions.list();"
          },
          {
            "lang": "python",
            "label": "List extensions",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.extensions.list()"
          }
        ],
        "responses": {
          "200": {
            "description": "Extension added successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExtensionResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/web/fetch": {
      "post": {
        "summary": "Fetch a web page",
        "description": "Fetches a web page and returns the content in various formats (HTML, Markdown, JSON, screenshot, etc.)",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Fetch a page",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nconst response = await client.web.fetch({\n  url: 'https://example.com',\n  outputs: {\n    formats: ['markdown', 'screenshot']\n  }\n});"
          },
          {
            "lang": "python",
            "label": "Fetch a page",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nresponse = client.web.fetch({\n  \"url\": \"https://example.com\",\n  \"outputs\": {\n    \"formats\": [\"markdown\", \"screenshot\"]\n  }\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FetchParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Page fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/web/search": {
      "post": {
        "summary": "Search the web",
        "description": "Performs a web search and returns search results with titles, URLs, and descriptions",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Search the web",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nconst response = await client.web.search({\n  query: 'hyperbrowser api',\n  filters: {\n    site: 'hyperbrowser.ai'\n  }\n});"
          },
          {
            "lang": "python",
            "label": "Search the web",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nresponse = client.web.search({\n  \"query\": \"hyperbrowser api\",\n  \"filters\": {\n    \"site\": \"hyperbrowser.ai\"\n  }\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebSearchParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search completed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebSearchResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid search parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/web/crawl": {
      "post": {
        "summary": "Start a web crawl job",
        "description": "Starts an asynchronous crawl job that follows links from a starting URL and returns content from each page in the specified formats.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start a web crawl",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nconst response = await client.web.crawl.start({\n  url: 'https://example.com',\n  outputs: {\n    formats: ['markdown']\n  },\n  crawlOptions: {\n    maxPages: 10,\n    followLinks: true\n  }\n});"
          },
          {
            "lang": "python",
            "label": "Start a web crawl",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nresponse = client.web.crawl.start({\n  \"url\": \"https://example.com\",\n  \"outputs\": {\n    \"formats\": [\"markdown\"]\n  },\n  \"crawl_options\": {\n    \"max_pages\": 10,\n    \"follow_links\": True\n  }\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartWebCrawlJobParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Crawl job started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "jobId"
                  ],
                  "properties": {
                    "jobId": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/web/crawl/{id}": {
      "get": {
        "summary": "Get web crawl job results",
        "description": "Retrieves the status and results of a web crawl job. Results are paginated.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get web crawl job",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nconst response = await client.web.crawl.get('job-id', {\n  page: 0,\n  batchSize: 10\n});"
          },
          {
            "lang": "python",
            "label": "Get web crawl job",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nresponse = client.web.crawl.get(\n  'job-id',\n  {\"page\": 0, \"batch_size\": 10}\n)"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "batchSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Web crawl job details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebCrawlJobResponse"
                }
              }
            }
          },
          "404": {
            "description": "Crawl job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/web/crawl/{id}/status": {
      "get": {
        "summary": "Get web crawl job status",
        "description": "Retrieves just the status of a web crawl job without the full results.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get web crawl job status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nconst response = await client.web.crawl.getStatus('job-id');"
          },
          {
            "lang": "python",
            "label": "Get web crawl job status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nresponse = client.web.crawl.get_status('job-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Web crawl job status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Crawl job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/x402/session": {
      "post": {
        "summary": "Create a session with X402 payment",
        "description": "Purchase one browser session at 0.10 USDC per hour, paid upfront for timeoutMinutes (5–60, default 30). No Hyperbrowser account or API key is required. A valid unpaid request returns 402 with payment requirements. Retry with a signed PAYMENT-SIGNATURE authorization. Payment is settled before connection credentials and a managementToken are returned. One authorization can create only one session. Invalid options are rejected before payment verification. See /integrations/x402/sessions for connection examples and lifetime behavior.",
        "security": [],
        "parameters": [
          {
            "name": "PAYMENT-SIGNATURE",
            "in": "header",
            "required": false,
            "description": "Base64-encoded payment authorization generated by an X402 client from the advertised PAYMENT-REQUIRED requirements. Omit on the initial request to obtain a quote.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/X402SessionParams"
              },
              "examples": {
                "defaults": {
                  "summary": "Default 30-minute browser session",
                  "value": {}
                },
                "customized": {
                  "summary": "Five-minute session with browser preferences",
                  "value": {
                    "screen": {
                      "width": 1920,
                      "height": 1080
                    },
                    "viewOnlyLiveView": true,
                    "timeoutMinutes": 5
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Browser created and payment settled. Use the returned connection details to control it without further X402 payments.",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64-encoded JSON with settlement information.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402SessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid or unsupported request parameters or malformed payment proof. Invalid options are rejected before payment verification or reservation of the proof.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment is missing or invalid, or settlement failed. Connection credentials are not returned. On settlement failure, the server attempts to stop the browser.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON with payment requirements, including accepted networks, assets, amounts, and recipients. Returned with the initial payment challenge.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "This payment authorization is already reserved or used, including by a request still in progress. No additional session is launched.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Session capacity is currently unavailable. A request rejected before settlement can be retried with the same unexpired authorization.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Session creation or payment processing failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "The service or payment facilitator is temporarily unavailable. If settlement was attempted, the authorization stays reserved; an error response alone does not establish that payment was not settled.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/x402/web/fetch": {
      "post": {
        "summary": "Fetch a web page with X402 payment",
        "description": "X402 payment endpoint. First request returns 402 with payment requirements. Retry with PAYMENT-SIGNATURE header containing cryptographic proof to get the actual data. See https://x402.gitbook.io/x402 for protocol details.",
        "parameters": [
          {
            "name": "PAYMENT-SIGNATURE",
            "in": "header",
            "required": false,
            "description": "Base64-encoded JSON containing payment proof (x402Version, resource, accepted payment method, and cryptographic payload with signature and payer address)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FetchParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Page fetched successfully (after valid payment)",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64-encoded JSON with settlement information",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required - returned on first request without PAYMENT-SIGNATURE header",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON containing X402 payment requirements (x402Version, resource info, and array of accepted payment methods with network, asset, amount, payTo address, and timeout)",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/x402/web/search": {
      "post": {
        "summary": "Search the web with X402 payment",
        "description": "X402 payment endpoint. First request returns 402 with payment requirements. Retry with PAYMENT-SIGNATURE header containing cryptographic proof to get search results. See https://x402.gitbook.io/x402 for protocol details.",
        "parameters": [
          {
            "name": "PAYMENT-SIGNATURE",
            "in": "header",
            "required": false,
            "description": "Base64-encoded JSON containing payment proof (x402Version, resource, accepted payment method, and cryptographic payload with signature and payer address)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebSearchParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search completed successfully (after valid payment)",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64-encoded JSON with settlement information",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebSearchResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid search parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required - returned on first request without PAYMENT-SIGNATURE header",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON containing X402 payment requirements (x402Version, resource info, and array of accepted payment methods with network, asset, amount, payTo address, and timeout)",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/sandbox": {
      "post": {
        "summary": "Create new sandbox",
        "tags": [
          "Sandboxes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSandboxParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sandbox created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/sandbox/{id}": {
      "get": {
        "summary": "Get sandbox by ID",
        "tags": [
          "Sandboxes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Sandbox ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sandbox details, including a runtime session token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/sandboxes": {
      "get": {
        "summary": "Get list of sandboxes",
        "tags": [
          "Sandboxes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size (max 100)",
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by sandbox status",
            "schema": {
              "$ref": "#/components/schemas/SandboxStatus"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "description": "Filter by creation time (epoch milliseconds, inclusive lower bound)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "description": "Filter by creation time (epoch milliseconds, inclusive upper bound)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "Search by sandbox ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of sandboxes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/sandbox/{id}/stop": {
      "put": {
        "summary": "Stop a sandbox",
        "tags": [
          "Sandboxes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Sandbox ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sandbox stop requested",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/sandbox/{id}/expose": {
      "post": {
        "summary": "Expose a sandbox port",
        "tags": [
          "Sandboxes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Sandbox ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SandboxExposePortParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Port exposed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxExposedPort"
                }
              }
            }
          }
        }
      }
    },
    "/api/sandbox/{id}/unexpose": {
      "post": {
        "summary": "Remove an exposed sandbox port",
        "tags": [
          "Sandboxes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Sandbox ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SandboxUnexposePortParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Port exposure removed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxUnexposePortResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/sandbox/{id}/snapshot": {
      "post": {
        "summary": "Create a sandbox memory snapshot",
        "tags": [
          "Sandboxes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Sandbox ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SandboxMemorySnapshotParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Snapshot creation started",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxMemorySnapshotResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/sandbox/{id}/network": {
      "put": {
        "summary": "Update sandbox network policy",
        "tags": [
          "Sandboxes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Sandbox ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SandboxNetworkPolicyPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated effective network policy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxNetworkUpdateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/volume": {
      "post": {
        "summary": "Create a volume",
        "tags": [
          "Volumes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVolumeParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Volume created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Volume"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Get list of volumes",
        "tags": [
          "Volumes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size (max 100)",
            "schema": {
              "type": "integer",
              "default": 20
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "Search by volume name or ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of volumes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VolumeListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/volume/{id}": {
      "get": {
        "summary": "Get volume by ID",
        "tags": [
          "Volumes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Volume ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Volume details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Volume"
                }
              }
            }
          }
        }
      }
    },
    "/api/volume/{key}": {
      "delete": {
        "summary": "Delete a volume",
        "tags": [
          "Volumes"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "description": "Volume ID or name. Name lookup is case-insensitive. Multiple volumes that share a name return 409 and require an id. Active sandboxes that still mount the volume also return 409.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Volume deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VolumeDeleteResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/images": {
      "get": {
        "summary": "Get list of sandbox images",
        "tags": [
          "Images"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size (max 100)",
            "schema": {
              "type": "integer",
              "default": 20
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "description": "Filter by image source. Repeat to include multiple sources.",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "public",
                  "team"
                ]
              }
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "Search by image name",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of images",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxImageListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/images/{key}": {
      "delete": {
        "summary": "Delete sandbox image",
        "tags": [
          "Images"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "description": "Team image name or ID. Names resolve to the newest launch-target revision (release_channel unset), including not-yet-uploaded rows. Public images cannot be deleted. In-flight builds, snapshots, and sandbox mappings that still reference the image return 409.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Image deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxImageDeleteResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/snapshots": {
      "get": {
        "summary": "Get list of sandbox snapshots",
        "tags": [
          "Snapshots"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "imageName",
            "in": "query",
            "required": false,
            "description": "Filter by source image name",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by snapshot status. Repeat to include multiple statuses.",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "creating",
                  "created",
                  "failed"
                ]
              }
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "Search by snapshot name",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size (max 100)",
            "schema": {
              "type": "integer",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of snapshots",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxSnapshotListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/snapshots/{key}": {
      "get": {
        "summary": "Get sandbox snapshot",
        "tags": [
          "Snapshots"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "description": "Snapshot name or ID. Names resolve to the newest created revision.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Snapshot details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxSnapshotResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete sandbox snapshot",
        "tags": [
          "Snapshots"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "description": "Snapshot name or ID. Names resolve to the newest created revision.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Snapshot deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxSnapshotDeleteResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/images/builds": {
      "post": {
        "summary": "Create an image build",
        "tags": [
          "Images"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateImageBuildParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Image build created with a presigned upload target",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateImageBuildResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Get list of image builds",
        "tags": [
          "Images"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by build status",
            "schema": {
              "type": "string",
              "enum": [
                "awaiting_upload",
                "upload_verified",
                "dispatching",
                "building",
                "verifying",
                "completed",
                "failed",
                "canceled"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of builds to return",
            "schema": {
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of image builds",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImageBuildListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/images/builds/{buildId}": {
      "get": {
        "summary": "Get image build by ID",
        "tags": [
          "Images"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "buildId",
            "in": "path",
            "required": true,
            "description": "Image build ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Image build details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImageBuildResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/images/builds/{buildId}/complete": {
      "post": {
        "summary": "Complete an image build upload",
        "tags": [
          "Images"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "buildId",
            "in": "path",
            "required": true,
            "description": "Image build ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteImageBuildParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Upload confirmed; build queued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImageBuildResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/images/builds/{buildId}/cancel": {
      "post": {
        "summary": "Cancel an image build",
        "tags": [
          "Images"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "buildId",
            "in": "path",
            "required": true,
            "description": "Image build ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Image build canceled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImageBuildResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/jev": {
      "post": {
        "summary": "Start a jev computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Start Jev Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.jevComputerUse.start({\n  task: 'Find the price of the product',\n  maxSteps: 20\n});"
          },
          {
            "lang": "python",
            "label": "Start Jev Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.jev_computer_use.start({\n  \"task\": \"Find the price of the product\",\n  \"max_steps\": 20\n})"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartJevComputerUseTaskParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Jev computer use task started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartJevComputerUseTaskResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/jev/{id}": {
      "get": {
        "summary": "Get jev computer use task status and results",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Jev Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.jevComputerUse.get('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Jev Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.jev_computer_use.get('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Jev computer use task details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JevComputerUseTaskResponse"
                }
              }
            }
          },
          "404": {
            "description": "Jev computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/jev/{id}/stop": {
      "put": {
        "summary": "Stop a jev computer use task",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Stop Jev Computer Use task",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.jevComputerUse.stop('task-id');"
          },
          {
            "lang": "python",
            "label": "Stop Jev Computer Use task",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.jev_computer_use.stop('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Jev computer use task stopped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasicResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/jev/{id}/status": {
      "get": {
        "summary": "Get jev computer use task status",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "javascript",
            "label": "Get Jev Computer Use task status",
            "source": "import { Hyperbrowser } from '@hyperbrowser/sdk';\n\nconst client = new Hyperbrowser({ apiKey: 'your-api-key' });\n\nawait client.agents.jevComputerUse.getStatus('task-id');"
          },
          {
            "lang": "python",
            "label": "Get Jev Computer Use task status",
            "source": "from hyperbrowser import Hyperbrowser\n\nclient = Hyperbrowser(api_key='your-api-key')\n\nclient.agents.jev_computer_use.get_status('task-id')"
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Jev computer use task status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Jev computer use task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/x402/session/{id}": {
      "get": {
        "summary": "Get an X402 session",
        "description": "Get the purchased session's status and original expiry without another payment. Authenticate with managementToken, not the browser token. Connection credentials are not reissued.",
        "security": [
          {
            "X402SessionManagement": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Purchased session ID."
          }
        ],
        "responses": {
          "200": {
            "description": "Success. No payment is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402SessionStatus"
                }
              }
            }
          },
          "400": {
            "description": "Invalid session ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or incorrectly scoped management token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The token authorizes a different session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Session not found for the token's session and team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Session lookup or stop failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/x402/session/{id}/stop": {
      "put": {
        "summary": "Stop an X402 session",
        "description": "Stop the purchased browser without another payment. Authenticate with managementToken, not the browser token. An already closed or errored session also succeeds.",
        "security": [
          {
            "X402SessionManagement": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Purchased session ID."
          }
        ],
        "responses": {
          "200": {
            "description": "Success. No payment is required.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid session ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, expired, or incorrectly scoped management token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The token authorizes a different session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Session not found for the token's session and team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Session lookup or stop failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}
