{ "openapi": "3.0.3", "info": { "title": "Steel Browser Instance API", "description": "Documentation for controlling a single instance of Steel Browser", "version": "0.0.1" }, "components": { "securitySchemes": {}, "schemas": { "ScrapeRequest": { "title": "ScrapeRequest", "type": "object", "properties": { "url": { "type": "string" }, "format": { "type": "array", "items": { "type": "string", "enum": [ "html", "readability", "cleaned_html", "markdown" ] } }, "screenshot": { "type": "boolean" }, "pdf": { "type": "boolean" }, "proxyUrl": { "type": "string", "nullable": true, "description": "Proxy URL to use for the scrape. Provide `null` to disable proxy. If not provided, current session proxy settings will be used." }, "delay": { "type": "number" }, "logUrl": { "type": "string" } }, "additionalProperties": false }, "ScrapeResponse": { "title": "ScrapeResponse", "type": "object", "properties": { "content": { "type": "object", "additionalProperties": {} }, "metadata": { "type": "object", "properties": { "title": { "type": "string" }, "language": { "type": "string" }, "urlSource": { "type": "string" }, "timestamp": { "type": "string", "format": "date-time" }, "description": { "type": "string" }, "keywords": { "type": "string" }, "author": { "type": "string" }, "ogTitle": { "type": "string" }, "ogDescription": { "type": "string" }, "ogImage": { "type": "string" }, "ogUrl": { "type": "string" }, "ogSiteName": { "type": "string" }, "articleAuthor": { "type": "string" }, "publishedTime": { "type": "string" }, "modifiedTime": { "type": "string" }, "canonical": { "type": "string" }, "favicon": { "type": "string" }, "jsonLd": {}, "statusCode": { "type": "integer" } }, "required": [ "statusCode" ], "additionalProperties": false }, "links": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string" }, "text": { "type": "string" } }, "required": [ "url", "text" ], "additionalProperties": false } }, "screenshot": { "type": "string" }, "pdf": { "type": "string" } }, "required": [ "content", "metadata", "links" ], "additionalProperties": false }, "ScreenshotRequest": { "title": "ScreenshotRequest", "type": "object", "properties": { "url": { "type": "string" }, "proxyUrl": { "type": "string", "nullable": true, "description": "Proxy URL to use for the scrape. Provide `null` to disable proxy. If not provided, current session proxy settings will be used." }, "delay": { "type": "number" }, "fullPage": { "type": "boolean" }, "logUrl": { "type": "string" } }, "additionalProperties": false }, "ScreenshotResponse": { "title": "ScreenshotResponse" }, "PDFRequest": { "title": "PDFRequest", "type": "object", "properties": { "url": { "type": "string" }, "proxyUrl": { "type": "string", "nullable": true, "description": "Proxy URL to use for the scrape. Provide `null` to disable proxy. If not provided, current session proxy settings will be used." }, "delay": { "type": "number" }, "logUrl": { "type": "string" } }, "additionalProperties": false }, "PDFResponse": { "title": "PDFResponse" }, "CreateSession": { "title": "CreateSession", "type": "object", "properties": { "sessionId": { "type": "string", "format": "uuid", "description": "Unique identifier for the session" }, "proxyUrl": { "type": "string", "description": "Proxy URL to use for the session" }, "userAgent": { "type": "string", "description": "User agent string to use for the session" }, "sessionContext": { "type": "object", "properties": { "cookies": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the cookie" }, "value": { "type": "string", "description": "The value of the cookie" }, "url": { "type": "string", "description": "The URL of the cookie" }, "domain": { "type": "string", "description": "The domain of the cookie" }, "path": { "type": "string", "description": "The path of the cookie" }, "secure": { "type": "boolean", "description": "Whether the cookie is secure" }, "httpOnly": { "type": "boolean", "description": "Whether the cookie is HTTP only" }, "sameSite": { "type": "string", "enum": [ "Strict", "Lax", "None" ], "description": "The same site attribute of the cookie" }, "size": { "type": "number", "description": "The size of the cookie" }, "expires": { "type": "number", "description": "The expiration date of the cookie" }, "partitionKey": { "type": "object", "properties": { "topLevelSite": { "type": "string", "description": "The site of the top-level URL the browser was visiting at the start of the request to the endpoint that set the cookie." }, "hasCrossSiteAncestor": { "type": "boolean", "description": "Indicates if the cookie has any ancestors that are cross-site to the topLevelSite." } }, "required": [ "topLevelSite", "hasCrossSiteAncestor" ], "additionalProperties": false, "description": "The partition key of the cookie" }, "session": { "type": "boolean", "description": "Whether the cookie is a session cookie" }, "priority": { "type": "string", "enum": [ "Low", "Medium", "High" ], "description": "The priority of the cookie" }, "sameParty": { "type": "boolean", "description": "Whether the cookie is a same party cookie" }, "sourceScheme": { "type": "string", "enum": [ "Unset", "NonSecure", "Secure" ], "description": "The source scheme of the cookie" }, "sourcePort": { "type": "number", "description": "The source port of the cookie" } }, "required": [ "name", "value" ], "additionalProperties": false }, "description": "Cookies to initialize in the session" }, "localStorage": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } }, "description": "Domain-specific localStorage items to initialize in the session" }, "sessionStorage": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } }, "description": "Domain-specific sessionStorage items to initialize in the session" }, "indexedDB": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "data": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "records": { "type": "array", "items": { "type": "object", "properties": { "key": {}, "value": {}, "blobFiles": { "type": "array", "items": { "type": "object", "properties": { "blobNumber": { "type": "number" }, "mimeType": { "type": "string" }, "size": { "type": "number" }, "filename": { "type": "string" }, "lastModified": { "type": "string", "format": "date-time" }, "path": { "type": "string" } }, "required": [ "blobNumber", "mimeType", "size" ], "additionalProperties": false } } }, "additionalProperties": false } } }, "required": [ "id", "name", "records" ], "additionalProperties": false } } }, "required": [ "id", "name", "data" ], "additionalProperties": false } }, "description": "Domain-specific indexedDB items to initialize in the session" } }, "additionalProperties": false, "description": "Session context data to be used in the created session" }, "isSelenium": { "type": "boolean", "description": "Indicates if Selenium is used in the session" }, "blockAds": { "type": "boolean", "description": "Flag to indicate if ads should be blocked in the session" }, "optimizeBandwidth": { "anyOf": [ { "type": "boolean" }, { "type": "object", "properties": { "blockImages": { "type": "boolean" }, "blockMedia": { "type": "boolean" }, "blockStylesheets": { "type": "boolean" }, "blockHosts": { "type": "array", "items": { "type": "string" } }, "blockUrlPatterns": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ], "description": "Enable bandwidth optimizations. Passing true enables all flags (except hosts/patterns). Object allows granular control." }, "skipFingerprintInjection": { "type": "boolean", "description": "Flag to indicate if fingerprint injection should be skipped for this session." }, "deviceConfig": { "type": "object", "properties": { "device": { "type": "string", "enum": [ "desktop", "mobile" ], "default": "desktop" } }, "additionalProperties": false, "description": "Device configuration for the session. Specify 'mobile' for mobile device fingerprints and configurations." }, "logSinkUrl": { "type": "string", "description": "Deprecated: Log sink URL to use for the session" }, "extensions": { "type": "array", "items": { "type": "string" }, "description": "Extensions to use for the session" }, "persist": { "type": "boolean", "description": "Flag to indicate if session should be persisted" }, "userDataDir": { "type": "string", "description": "User data directory path to use for the session" }, "timezone": { "type": "string", "description": "Timezone to use for the session" }, "dimensions": { "type": "object", "properties": { "width": { "type": "number" }, "height": { "type": "number" } }, "required": [ "width", "height" ], "additionalProperties": false, "description": "Dimensions to use for the session" }, "userPreferences": { "type": "object", "additionalProperties": {}, "description": "Chrome user preferences to customize browser behavior (e.g., font size, popup blocking, notification settings)" }, "extra": { "type": "object", "additionalProperties": {}, "description": "Extra metadata to help initialize the session" }, "credentials": { "type": "object", "properties": { "autoSubmit": { "anyOf": [ { "type": "boolean" }, { "not": {} } ] }, "blurFields": { "anyOf": [ { "type": "boolean" }, { "not": {} } ] }, "exactOrigin": { "anyOf": [ { "type": "boolean" }, { "not": {} } ] } }, "additionalProperties": false, "description": "Configuration for session credentials" }, "headless": { "type": "boolean", "description": "Headless mode for the session" } }, "additionalProperties": false }, "SessionDetails": { "title": "SessionDetails", "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier for the session" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the session started" }, "status": { "type": "string", "enum": [ "idle", "live", "released", "failed" ], "description": "Status of the session" }, "duration": { "type": "integer", "description": "Duration of the session in milliseconds" }, "eventCount": { "type": "integer", "description": "Number of events processed in the session" }, "dimensions": { "type": "object", "properties": { "width": { "type": "number" }, "height": { "type": "number" } }, "required": [ "width", "height" ], "additionalProperties": false, "description": "Dimensions used for the session" }, "timeout": { "type": "integer", "description": "Session timeout duration in milliseconds" }, "creditsUsed": { "type": "integer", "description": "Amount of credits consumed by the session" }, "websocketUrl": { "type": "string", "description": "URL for the session's WebSocket connection" }, "debugUrl": { "type": "string", "description": "URL for a viewing the live browser instance for the session" }, "debuggerUrl": { "type": "string", "description": "URL for debugging the session" }, "sessionViewerUrl": { "type": "string", "description": "URL to view session details" }, "userAgent": { "type": "string", "description": "User agent string used in the session" }, "proxy": { "type": "string", "description": "Proxy server used for the session" }, "proxyTxBytes": { "type": "integer", "minimum": 0, "description": "Amount of data transmitted through the proxy" }, "proxyRxBytes": { "type": "integer", "minimum": 0, "description": "Amount of data received through the proxy" }, "solveCaptcha": { "type": "boolean", "description": "Indicates if captcha solving is enabled" }, "isSelenium": { "type": "boolean", "description": "Indicates if Selenium is used in the session" } }, "required": [ "id", "createdAt", "status", "duration", "eventCount", "timeout", "creditsUsed", "websocketUrl", "debugUrl", "debuggerUrl", "sessionViewerUrl", "proxyTxBytes", "proxyRxBytes" ], "additionalProperties": false }, "MultipleSessions": { "title": "MultipleSessions", "type": "object", "properties": { "sessions": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier for the session" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the session started" }, "status": { "type": "string", "enum": [ "idle", "live", "released", "failed" ], "description": "Status of the session" }, "duration": { "type": "integer", "description": "Duration of the session in milliseconds" }, "eventCount": { "type": "integer", "description": "Number of events processed in the session" }, "dimensions": { "type": "object", "properties": { "width": { "type": "number" }, "height": { "type": "number" } }, "required": [ "width", "height" ], "additionalProperties": false, "description": "Dimensions used for the session" }, "timeout": { "type": "integer", "description": "Session timeout duration in milliseconds" }, "creditsUsed": { "type": "integer", "description": "Amount of credits consumed by the session" }, "websocketUrl": { "type": "string", "description": "URL for the session's WebSocket connection" }, "debugUrl": { "type": "string", "description": "URL for a viewing the live browser instance for the session" }, "debuggerUrl": { "type": "string", "description": "URL for debugging the session" }, "sessionViewerUrl": { "type": "string", "description": "URL to view session details" }, "userAgent": { "type": "string", "description": "User agent string used in the session" }, "proxy": { "type": "string", "description": "Proxy server used for the session" }, "proxyTxBytes": { "type": "integer", "minimum": 0, "description": "Amount of data transmitted through the proxy" }, "proxyRxBytes": { "type": "integer", "minimum": 0, "description": "Amount of data received through the proxy" }, "solveCaptcha": { "type": "boolean", "description": "Indicates if captcha solving is enabled" }, "isSelenium": { "type": "boolean", "description": "Indicates if Selenium is used in the session" } }, "required": [ "id", "createdAt", "status", "duration", "eventCount", "timeout", "creditsUsed", "websocketUrl", "debugUrl", "debuggerUrl", "sessionViewerUrl", "proxyTxBytes", "proxyRxBytes" ], "additionalProperties": false } } }, "required": [ "sessions" ], "additionalProperties": false }, "SessionContextSchema": { "title": "SessionContextSchema", "type": "object", "properties": { "cookies": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the cookie" }, "value": { "type": "string", "description": "The value of the cookie" }, "url": { "type": "string", "description": "The URL of the cookie" }, "domain": { "type": "string", "description": "The domain of the cookie" }, "path": { "type": "string", "description": "The path of the cookie" }, "secure": { "type": "boolean", "description": "Whether the cookie is secure" }, "httpOnly": { "type": "boolean", "description": "Whether the cookie is HTTP only" }, "sameSite": { "type": "string", "enum": [ "Strict", "Lax", "None" ], "description": "The same site attribute of the cookie" }, "size": { "type": "number", "description": "The size of the cookie" }, "expires": { "type": "number", "description": "The expiration date of the cookie" }, "partitionKey": { "type": "object", "properties": { "topLevelSite": { "type": "string", "description": "The site of the top-level URL the browser was visiting at the start of the request to the endpoint that set the cookie." }, "hasCrossSiteAncestor": { "type": "boolean", "description": "Indicates if the cookie has any ancestors that are cross-site to the topLevelSite." } }, "required": [ "topLevelSite", "hasCrossSiteAncestor" ], "additionalProperties": false, "description": "The partition key of the cookie" }, "session": { "type": "boolean", "description": "Whether the cookie is a session cookie" }, "priority": { "type": "string", "enum": [ "Low", "Medium", "High" ], "description": "The priority of the cookie" }, "sameParty": { "type": "boolean", "description": "Whether the cookie is a same party cookie" }, "sourceScheme": { "type": "string", "enum": [ "Unset", "NonSecure", "Secure" ], "description": "The source scheme of the cookie" }, "sourcePort": { "type": "number", "description": "The source port of the cookie" } }, "required": [ "name", "value" ], "additionalProperties": false }, "description": "Cookies to initialize in the session" }, "localStorage": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } }, "description": "Domain-specific localStorage items to initialize in the session" }, "sessionStorage": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } }, "description": "Domain-specific sessionStorage items to initialize in the session" }, "indexedDB": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "data": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "records": { "type": "array", "items": { "type": "object", "properties": { "key": {}, "value": {}, "blobFiles": { "type": "array", "items": { "type": "object", "properties": { "blobNumber": { "type": "number" }, "mimeType": { "type": "string" }, "size": { "type": "number" }, "filename": { "type": "string" }, "lastModified": { "type": "string", "format": "date-time" }, "path": { "type": "string" } }, "required": [ "blobNumber", "mimeType", "size" ], "additionalProperties": false } } }, "additionalProperties": false } } }, "required": [ "id", "name", "records" ], "additionalProperties": false } } }, "required": [ "id", "name", "data" ], "additionalProperties": false } }, "description": "Domain-specific indexedDB items to initialize in the session" } }, "additionalProperties": false }, "RecordedEvents": { "title": "RecordedEvents", "type": "object", "properties": { "events": { "type": "array", "description": "Events to emit" } }, "required": [ "events" ], "additionalProperties": false }, "ReleaseSession": { "title": "ReleaseSession", "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier for the session" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the session started" }, "status": { "type": "string", "enum": [ "idle", "live", "released", "failed" ], "description": "Status of the session" }, "duration": { "type": "integer", "description": "Duration of the session in milliseconds" }, "eventCount": { "type": "integer", "description": "Number of events processed in the session" }, "dimensions": { "type": "object", "properties": { "width": { "type": "number" }, "height": { "type": "number" } }, "required": [ "width", "height" ], "additionalProperties": false, "description": "Dimensions used for the session" }, "timeout": { "type": "integer", "description": "Session timeout duration in milliseconds" }, "creditsUsed": { "type": "integer", "description": "Amount of credits consumed by the session" }, "websocketUrl": { "type": "string", "description": "URL for the session's WebSocket connection" }, "debugUrl": { "type": "string", "description": "URL for a viewing the live browser instance for the session" }, "debuggerUrl": { "type": "string", "description": "URL for debugging the session" }, "sessionViewerUrl": { "type": "string", "description": "URL to view session details" }, "userAgent": { "type": "string", "description": "User agent string used in the session" }, "proxy": { "type": "string", "description": "Proxy server used for the session" }, "proxyTxBytes": { "type": "integer", "minimum": 0, "description": "Amount of data transmitted through the proxy" }, "proxyRxBytes": { "type": "integer", "minimum": 0, "description": "Amount of data received through the proxy" }, "solveCaptcha": { "type": "boolean", "description": "Indicates if captcha solving is enabled" }, "isSelenium": { "type": "boolean", "description": "Indicates if Selenium is used in the session" }, "success": { "type": "boolean", "description": "Indicates if the session was successfully released" } }, "required": [ "id", "createdAt", "status", "duration", "eventCount", "timeout", "creditsUsed", "websocketUrl", "debugUrl", "debuggerUrl", "sessionViewerUrl", "proxyTxBytes", "proxyRxBytes", "success" ], "additionalProperties": false }, "SessionStreamQuery": { "title": "SessionStreamQuery", "type": "object", "properties": { "showControls": { "type": "boolean", "default": true, "description": "Show controls in the browser iframe" }, "theme": { "type": "string", "enum": [ "dark", "light" ], "default": "dark", "description": "Theme of the browser iframe" }, "interactive": { "type": "boolean", "default": true, "description": "Make the browser iframe interactive" }, "pageId": { "type": "string", "description": "Page ID to connect to" }, "pageIndex": { "type": "string", "description": "Page index (or tab index) to connect to" } }, "additionalProperties": false }, "SessionStreamResponse": { "title": "SessionStreamResponse", "type": "string", "description": "HTML content for the session streamer view" }, "SessionLiveDetailsResponse": { "title": "SessionLiveDetailsResponse", "type": "object", "properties": { "sessionViewerUrl": { "type": "string" }, "sessionViewerFullscreenUrl": { "type": "string" }, "websocketUrl": { "type": "string" }, "pages": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "url": { "type": "string" }, "title": { "type": "string" }, "favicon": { "type": "string", "nullable": true } }, "required": [ "id", "url", "title", "favicon" ], "additionalProperties": false } }, "browserState": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "idle", "live", "released", "failed" ] }, "userAgent": { "type": "string" }, "browserVersion": { "type": "string" }, "initialDimensions": { "type": "object", "properties": { "width": { "type": "number" }, "height": { "type": "number" } }, "required": [ "width", "height" ], "additionalProperties": false }, "pageCount": { "type": "number" } }, "required": [ "status", "userAgent", "browserVersion", "initialDimensions", "pageCount" ], "additionalProperties": false } }, "required": [ "sessionViewerUrl", "sessionViewerFullscreenUrl", "websocketUrl", "pages", "browserState" ], "additionalProperties": false }, "LogQuerySchema": { "title": "LogQuerySchema", "type": "object", "properties": { "startTime": { "type": "string", "format": "date-time" }, "endTime": { "type": "string", "format": "date-time" }, "eventTypes": { "type": "string" }, "pageId": { "type": "string" }, "targetType": { "type": "string" }, "limit": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 100 }, "offset": { "type": "integer", "minimum": 0, "default": 0 } }, "additionalProperties": false }, "LogStatsSchema": { "title": "LogStatsSchema", "type": "object", "properties": { "totalEvents": { "type": "number" }, "oldestEvent": { "type": "string", "format": "date-time", "nullable": true }, "newestEvent": { "type": "string", "format": "date-time", "nullable": true }, "sizeBytes": { "type": "number" } }, "required": [ "totalEvents", "oldestEvent", "newestEvent", "sizeBytes" ], "additionalProperties": false }, "LogQueryResultSchema": { "title": "LogQueryResultSchema", "type": "object", "properties": { "events": { "type": "array", "items": { "type": "object", "additionalProperties": {} } }, "total": { "type": "number" }, "hasMore": { "type": "boolean" } }, "required": [ "events", "total", "hasMore" ], "additionalProperties": false }, "ExportLogsSchema": { "title": "ExportLogsSchema", "type": "object", "properties": { "query": { "type": "object", "properties": { "startTime": { "type": "string", "format": "date-time" }, "endTime": { "type": "string", "format": "date-time" }, "eventTypes": { "type": "string" }, "pageId": { "type": "string" }, "targetType": { "type": "string" }, "limit": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 100 }, "offset": { "type": "integer", "minimum": 0, "default": 0 } }, "additionalProperties": false } }, "additionalProperties": false }, "GetDevtoolsUrlSchema": { "title": "GetDevtoolsUrlSchema", "type": "object", "properties": { "pageId": { "type": "string" } }, "additionalProperties": false }, "LaunchRequest": { "title": "LaunchRequest", "type": "object", "properties": { "options": { "type": "object", "properties": { "args": { "type": "array", "items": { "type": "string" } }, "chromiumSandbox": { "type": "boolean" }, "devtools": { "type": "boolean" }, "downloadsPath": { "type": "string" }, "headless": { "type": "boolean" }, "ignoreDefaultArgs": { "anyOf": [ { "type": "boolean" }, { "type": "array", "items": { "type": "string" } } ] }, "proxyUrl": { "type": "string" }, "timeout": { "type": "number" }, "tracesDir": { "type": "string" } }, "additionalProperties": false }, "req": {}, "stealth": { "type": "boolean" }, "cookies": { "type": "array" }, "userAgent": { "type": "string" }, "extensions": { "type": "array", "items": { "type": "string" } }, "logSinkUrl": { "type": "string", "description": "Deprecated" }, "customHeaders": { "type": "object", "additionalProperties": { "type": "string" } }, "timezone": { "type": "string" }, "dimensions": { "type": "object", "properties": { "width": { "type": "number" }, "height": { "type": "number" } }, "required": [ "width", "height" ], "additionalProperties": false, "nullable": true } }, "required": [ "options" ], "additionalProperties": false }, "LaunchResponse": { "title": "LaunchResponse", "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ], "additionalProperties": false }, "FileUploadRequest": { "title": "FileUploadRequest", "type": "object", "properties": { "file": { "description": "The file to upload (binary) or URL string to download from" }, "path": { "type": "string", "description": "Path to the file in the storage system" } }, "additionalProperties": false }, "FileDetails": { "title": "FileDetails", "type": "object", "properties": { "path": { "type": "string", "description": "Path to the file in the storage system" }, "size": { "type": "number", "description": "Size of the file in bytes" }, "lastModified": { "type": "string", "format": "date-time", "description": "Timestamp when the file was last updated" } }, "required": [ "path", "size", "lastModified" ], "additionalProperties": false }, "MultipleFiles": { "title": "MultipleFiles", "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "string", "description": "Path to the file in the storage system" }, "size": { "type": "number", "description": "Size of the file in bytes" }, "lastModified": { "type": "string", "format": "date-time", "description": "Timestamp when the file was last updated" } }, "required": [ "path", "size", "lastModified" ], "additionalProperties": false }, "description": "Array of files for the current page" } }, "required": [ "data" ], "additionalProperties": false } } }, "paths": { "/v1/scrape": { "post": { "operationId": "scrape", "summary": "Scrape a URL", "tags": [ "Browser Actions" ], "description": "Scrape a URL", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeRequest" } } } }, "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeResponse" } } } } } } }, "/v1/screenshot": { "post": { "operationId": "screenshot", "summary": "Take a screenshot", "tags": [ "Browser Actions" ], "description": "Take a screenshot", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScreenshotRequest" } } } }, "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScreenshotResponse" } } } } } } }, "/v1/pdf": { "post": { "operationId": "pdf", "summary": "Get the PDF content of a page", "tags": [ "Browser Actions" ], "description": "Get the PDF content of a page", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PDFRequest" } } } }, "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PDFResponse" } } } } } } }, "/v1/health": { "get": { "operationId": "health", "summary": "Check if the server and browser are running", "tags": [ "Health" ], "description": "Check if the server and browser are running", "responses": { "200": { "description": "Default Response" } } } }, "/v1/sessions": { "post": { "operationId": "launch_browser_session", "summary": "Launch a browser session", "tags": [ "Sessions" ], "description": "Launch a browser session", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSession" } } } }, "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionDetails" } } } } } }, "get": { "operationId": "get_sessions", "summary": "Get all sessions", "tags": [ "Sessions" ], "description": "Get all sessions", "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultipleSessions" } } } } } } }, "/v1/sessions/{sessionId}": { "get": { "operationId": "get_session_details", "summary": "Get session details", "tags": [ "Sessions" ], "description": "Get session details", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true } ], "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionDetails" } } } } } } }, "/v1/sessions/{sessionId}/context": { "get": { "operationId": "get_browser_context", "summary": "Get a browser context", "tags": [ "Sessions" ], "description": "Get a browser context", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true } ], "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionContextSchema" } } } } } } }, "/v1/sessions/{sessionId}/release": { "post": { "operationId": "release_browser_session", "summary": "Release a browser session", "tags": [ "Sessions" ], "description": "Release a browser session", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true } ], "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReleaseSession" } } } } } } }, "/v1/sessions/release": { "post": { "operationId": "release_browser_sessions", "summary": "Release browser sessions", "tags": [ "Sessions" ], "description": "Release browser sessions", "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReleaseSession" } } } } } } }, "/v1/sessions/debug": { "get": { "operationId": "get_session_debugger_stream", "summary": "Get session debugger view", "tags": [ "Sessions" ], "description": "Returns an HTML page with a live debugger view of the session", "parameters": [ { "schema": { "type": "boolean", "default": true }, "in": "query", "name": "showControls", "required": false, "description": "Show controls in the browser iframe" }, { "schema": { "type": "string", "enum": [ "dark", "light" ], "default": "dark" }, "in": "query", "name": "theme", "required": false, "description": "Theme of the browser iframe" }, { "schema": { "type": "boolean", "default": true }, "in": "query", "name": "interactive", "required": false, "description": "Make the browser iframe interactive" }, { "schema": { "type": "string" }, "in": "query", "name": "pageId", "required": false, "description": "Page ID to connect to" }, { "schema": { "type": "string" }, "in": "query", "name": "pageIndex", "required": false, "description": "Page index (or tab index) to connect to" } ], "responses": { "200": { "description": "HTML content for the session streamer view", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionStreamResponse" } } } } } } }, "/v1/events": { "post": { "operationId": "receive_events", "summary": "Receive recorded events from the browser", "tags": [ "Sessions" ], "description": "Receive recorded events from the browser", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecordedEvents" } } } }, "responses": { "200": { "description": "Default Response" } } } }, "/v1/sessions/{id}/live-details": { "get": { "operationId": "get_session_live_details", "summary": "Get session live details", "tags": [ "Sessions" ], "description": "Returns the live state of the session, including pages, tabs, and browser state", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "id", "required": true } ], "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionLiveDetailsResponse" } } } } } } }, "/v1/sessions/scrape": { "post": { "operationId": "scrape_session", "summary": "Scrape Current Session", "tags": [ "Sessions" ], "description": "Scrape Current Session", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeRequest" } } } }, "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeResponse" } } } } } } }, "/v1/sessions/screenshot": { "post": { "operationId": "screenshot_session", "summary": "Take Screenshot of Current Session", "tags": [ "Sessions" ], "description": "Take Screenshot of Current Session", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScreenshotRequest" } } } }, "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScreenshotResponse" } } } } } } }, "/v1/sessions/pdf": { "post": { "operationId": "pdf_session", "summary": "Generate PDF of Current Session", "tags": [ "Sessions" ], "description": "Generate PDF of Current Session", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PDFRequest" } } } }, "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PDFResponse" } } } } } } }, "/v1/devtools/inspector.html": { "get": { "operationId": "getDevtoolsUrl", "summary": "Get the URL for the DevTools inspector", "tags": [ "CDP" ], "description": "Get the URL for the DevTools inspector", "parameters": [ { "schema": { "type": "string" }, "in": "query", "name": "pageId", "required": false } ], "responses": { "200": { "description": "Default Response" } } } }, "/v1/sessions/{sessionId}/files": { "post": { "operationId": "upload_file", "summary": "Upload a file", "tags": [ "Files" ], "description": "Uploads a file to a session via `multipart/form-data` with a `file` field that accepts either binary data or a URL string to download from, and an optional `path` field for the file storage path.", "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/FileUploadRequest" } } } }, "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true } ], "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileDetails" } } } } } }, "get": { "operationId": "list_files", "summary": "List files", "tags": [ "Files" ], "description": "List all files from the session in descending order.", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true } ], "responses": { "200": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultipleFiles" } } } } } }, "delete": { "operationId": "delete_all_files", "summary": "Delete all files", "tags": [ "Files" ], "description": "Delete all files from a session", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true } ], "responses": { "204": { "description": "No content" } } } }, "/v1/sessions/{sessionId}/files/{*}": { "get": { "operationId": "download_file", "summary": "Download a file", "tags": [ "Files" ], "description": "Download a file from a session", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true }, { "schema": { "type": "string" }, "in": "path", "name": "*", "required": true } ], "responses": { "200": { "description": "Default Response" } } }, "delete": { "operationId": "delete_file", "summary": "Delete a file", "tags": [ "Files" ], "description": "Delete a file from a session", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true }, { "schema": { "type": "string" }, "in": "path", "name": "*", "required": true } ], "responses": { "204": { "description": "No content" } } } }, "/v1/sessions/{sessionId}/files.zip": { "get": { "operationId": "download_archive", "summary": "Download archive", "tags": [ "Files" ], "description": "Download all files from the session as a zip archive.", "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "sessionId", "required": true } ], "responses": { "200": { "description": "Default Response" } } } }, "/v1/logs/query": { "get": { "tags": [ "Logs" ], "description": "Query browser logs from local storage", "parameters": [ { "schema": { "type": "string", "format": "date-time" }, "in": "query", "name": "startTime", "required": false }, { "schema": { "type": "string", "format": "date-time" }, "in": "query", "name": "endTime", "required": false }, { "schema": { "type": "string" }, "in": "query", "name": "eventTypes", "required": false }, { "schema": { "type": "string" }, "in": "query", "name": "pageId", "required": false }, { "schema": { "type": "string" }, "in": "query", "name": "targetType", "required": false }, { "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 100 }, "in": "query", "name": "limit", "required": false }, { "schema": { "type": "integer", "minimum": 0, "default": 0 }, "in": "query", "name": "offset", "required": false } ], "responses": { "200": { "description": "Default Response" } } } }, "/v1/logs/stats": { "get": { "tags": [ "Logs" ], "description": "Get statistics about stored browser logs", "responses": { "200": { "description": "Default Response" } } } }, "/v1/logs/stream": { "get": { "tags": [ "Logs" ], "description": "Stream browser logs in real-time using SSE", "responses": { "200": { "description": "Default Response" } } } }, "/v1/logs/export": { "post": { "tags": [ "Logs" ], "description": "Export browser logs to Parquet format", "parameters": [ { "schema": { "type": "string", "format": "date-time" }, "in": "query", "name": "startTime", "required": false }, { "schema": { "type": "string", "format": "date-time" }, "in": "query", "name": "endTime", "required": false }, { "schema": { "type": "string" }, "in": "query", "name": "eventTypes", "required": false }, { "schema": { "type": "string" }, "in": "query", "name": "pageId", "required": false }, { "schema": { "type": "string" }, "in": "query", "name": "targetType", "required": false }, { "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 100 }, "in": "query", "name": "limit", "required": false }, { "schema": { "type": "integer", "minimum": 0, "default": 0 }, "in": "query", "name": "offset", "required": false } ], "responses": { "200": { "description": "Default Response" } } } }, "/v1/logs/": { "delete": { "tags": [ "Logs" ], "description": "Clear all browser logs from storage", "responses": { "200": { "description": "Default Response" } } } } }, "servers": [ { "url": "http://0.0.0.0:3000/", "description": "Local server" }, { "url": "http://0.0.0.0:3000", "description": "Local server from env variables" } ] }