openapi: 3.1.0 info: title: Kernel API Keys Browser Telemetry API description: Developer tools and cloud infrastructure for AI agents to use web browsers version: 0.1.0 servers: - url: https://api.onkernel.com description: API Server security: - bearerAuth: [] tags: - name: Browser Telemetry description: Stream live telemetry events from a browser session. paths: /browsers/{id}/telemetry: get: summary: Stream telemetry events via SSE description: 'Streams browser telemetry events as a server-sent events (SSE) stream. The stream closes when the browser session terminates. Each event frame includes an id: field containing a monotonically increasing sequence number; pass it as Last-Event-ID on reconnect to resume without gaps. The event: field is never set; all frames carry JSON in the data: field. A keepalive comment frame is sent every 15 seconds when no events arrive. Returns 404 if the browser session does not exist. If telemetry was not enabled on the session, the stream opens but no events are delivered. ' operationId: streamBrowserTelemetry tags: - Browser Telemetry security: - bearerAuth: [] parameters: - name: id in: path required: true schema: type: string description: Browser session ID - name: Last-Event-ID in: header schema: type: string description: Last event sequence number for SSE reconnection (sent by SSE clients on reconnect) responses: '200': description: SSE stream of telemetry events headers: X-SSE-Content-Type: description: Media type of SSE data events (always application/json). schema: type: string const: application/json content: text/event-stream: schema: $ref: '#/components/schemas/BrowserTelemetryEventEnvelope' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' x-codeSamples: - lang: JavaScript source: "import Kernel from '@onkernel/sdk';\n\nconst client = new Kernel({\n apiKey: process.env['KERNEL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.browsers.telemetry.stream('id');\n\nconsole.log(response.event);" - lang: Python source: "import os\nfrom kernel import Kernel\n\nclient = Kernel(\n api_key=os.environ.get(\"KERNEL_API_KEY\"), # This is the default and can be omitted\n)\nfor telemetry in client.browsers.telemetry.stream(\n id=\"id\",\n):\n print(telemetry)" - lang: Go source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/kernel/kernel-go-sdk\"\n\t\"github.com/kernel/kernel-go-sdk/option\"\n)\n\nfunc main() {\n\tclient := kernel.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tstream := client.Browsers.Telemetry.StreamStreaming(\n\t\tcontext.TODO(),\n\t\t\"id\",\n\t\tkernel.BrowserTelemetryStreamParams{},\n\t)\n\tfor stream.Next() {\n\t\tfmt.Printf(\"%+v\\n\", stream.Current())\n\t}\n\terr := stream.Err()\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n}\n" components: schemas: BrowserNetworkRequestEvent: type: object description: A browser network request sent event. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: network_request source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: request_id: type: string description: CDP request identifier, unique within the session. method: type: string description: HTTP method as sent on the wire (e.g. GET, POST). document_url: type: string description: URL of the document that initiated the request. headers: $ref: '#/components/schemas/BrowserHttpHeaders' description: Request headers. resource_type: type: string description: CDP Network.ResourceType for the request, passed through as-is from Chrome. Known values include Document, Fetch, XHR, Script, Stylesheet, Image, Media, Font, TextTrack, EventSource, WebSocket, Manifest, Prefetch, Other, and more. initiator_type: type: string description: CDP Initiator.type indicating what caused the request, passed through as-is from Chrome. Known values include script, parser, preload, and other. post_data: type: string description: Request body for POST/PUT requests, if available. is_redirect: type: boolean description: True if this request is the result of a redirect. redirect_url: type: string description: Original URL before the redirect, present when is_redirect is true. truncated: type: boolean description: True if the data field was truncated due to size limits. ErrorDetail: type: object properties: code: type: string description: Lower-level error code providing more specific detail example: invalid_input message: type: string description: Further detail about the error example: Provided version string is not semver compliant BrowserInteractionScrollSettledEvent: type: object description: A browser scroll settled event emitted after scroll position stops changing, captured via injected page script. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: interaction_scroll_settled source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: from_x: type: integer description: Scroll x-position at the start of the scroll gesture in CSS pixels. from_y: type: integer description: Scroll y-position at the start of the scroll gesture in CSS pixels. to_x: type: integer description: Final scroll x-position after the gesture settled in CSS pixels. to_y: type: integer description: Final scroll y-position after the gesture settled in CSS pixels. target_selector: type: string description: CSS selector path to the scrolled element. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserMonitorInitFailedEvent: type: object description: The CDP session could not be initialized. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: monitor_init_failed source: $ref: '#/components/schemas/BrowserEventSource' data: type: object additionalProperties: false properties: step: type: string description: The CDP method or initialization step that failed (e.g. Target.setAutoAttach). truncated: type: boolean description: True if the data field was truncated due to size limits. Error: type: object required: - code - message properties: code: type: string description: Application-specific error code (machine-readable) example: bad_request message: type: string description: Human-readable error description for debugging example: 'Missing required field: app_name' details: type: array description: Additional error details (for multiple errors) items: $ref: '#/components/schemas/ErrorDetail' inner_error: $ref: '#/components/schemas/ErrorDetail' BrowserMonitorDisconnectedEvent: type: object description: The CDP connection to Chrome was lost. Telemetry events may be dropped until monitor_reconnected arrives. Treat any in-progress computed state (network_idle, page_layout_settled) as unreliable until then. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: monitor_disconnected source: $ref: '#/components/schemas/BrowserEventSource' data: type: object additionalProperties: false properties: reason: type: string description: 'Reason for the disconnection. chrome_restarted: Chrome process restarted.' enum: - chrome_restarted truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserPageNavigationSettledEvent: type: object description: Emitted when page_dom_content_loaded and page_layout_settled have both fired for the same navigation, indicating the page is loaded and visually stable. Independent of network_idle; a single pending request does not block it. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: page_navigation_settled source: $ref: '#/components/schemas/BrowserEventSource' data: $ref: '#/components/schemas/BrowserEventContext' truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserNetworkIdleEvent: type: object description: A browser network idle event emitted after a 500ms quiet period with no in-flight HTTP requests. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: network_idle source: $ref: '#/components/schemas/BrowserEventSource' data: $ref: '#/components/schemas/BrowserEventContext' truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserPageTabOpenedEvent: type: object description: A new browser tab or target was opened (CDP Target.attachedToTarget for page targets). Fires before a CDP session is attached to the new target, so session_id, frame_id, loader_id, and nav_seq are absent; this event does not compose BrowserEventContext. Consumers reading context fields generically should treat it as a special case. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: page_tab_opened source: $ref: '#/components/schemas/BrowserEventSource' data: type: object additionalProperties: false properties: target_id: type: string description: CDP target identifier for the newly opened tab. target_type: $ref: '#/components/schemas/BrowserTargetType' url: type: string description: Initial URL of the new tab. title: type: string description: Initial page title of the new tab. opener_id: type: string description: Target identifier of the tab that opened this one, if any. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserPageLcpEvent: type: object description: A browser Largest Contentful Paint (LCP) event from the Performance Timeline API. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: page_lcp source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: source_frame_id: type: string description: CDP frame identifier of the frame where the LCP element was rendered. time: type: number description: Performance Timeline timestamp of the LCP entry in milliseconds. lcp_details: type: object additionalProperties: false description: LargestContentfulPaint attributes from the Performance Timeline entry. properties: render_time: type: number description: Render time of the LCP element in milliseconds; 0 for cross-origin images without Timing-Allow-Origin. load_time: type: number description: Load time of the LCP element in milliseconds. size: type: number description: Visible area of the LCP element in pixels squared. element_id: type: string description: id attribute of the LCP element, if present. url: type: string description: URL of the LCP element for image or video elements. node_id: type: integer description: CDP DOM node identifier of the LCP element. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserPageLayoutShiftEvent: type: object description: A browser cumulative layout shift (CLS) event from the Performance Timeline API. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: page_layout_shift source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: source_frame_id: type: string description: CDP frame identifier of the frame where the layout shift occurred. time: type: number description: Performance Timeline timestamp of the layout shift in milliseconds. duration: type: number description: Duration of the layout shift entry in milliseconds (always 0 for layout shifts per spec). layout_shift_details: type: object additionalProperties: false description: PerformanceLayoutShift attributes from the Performance Timeline entry. properties: value: type: number description: Layout shift score for this entry (contribution to CLS). had_recent_input: type: boolean description: True if the layout shift was preceded by user input within 500ms, excluding it from CLS. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserInteractionClickEvent: type: object description: A browser user click event captured via injected page script. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: interaction_click source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: x: type: integer description: Viewport x-coordinate of the click in CSS pixels. y: type: integer description: Viewport y-coordinate of the click in CSS pixels. selector: type: string description: CSS selector path to the clicked element. tag: type: string description: HTML tag name of the clicked element in uppercase (e.g. BUTTON, A, DIV). text: type: string description: Visible text content of the clicked element, trimmed. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserPageLayoutSettledEvent: type: object description: A browser layout settled event emitted 1 second after page load with no intervening layout shifts, indicating visual stability. Each layout shift resets the 1-second timer. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: page_layout_settled source: $ref: '#/components/schemas/BrowserEventSource' data: $ref: '#/components/schemas/BrowserEventContext' truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserTelemetryEvent: oneOf: - $ref: '#/components/schemas/BrowserConsoleLogEvent' - $ref: '#/components/schemas/BrowserConsoleErrorEvent' - $ref: '#/components/schemas/BrowserNetworkRequestEvent' - $ref: '#/components/schemas/BrowserNetworkResponseEvent' - $ref: '#/components/schemas/BrowserNetworkLoadingFailedEvent' - $ref: '#/components/schemas/BrowserNetworkIdleEvent' - $ref: '#/components/schemas/BrowserPageNavigationEvent' - $ref: '#/components/schemas/BrowserPageDomContentLoadedEvent' - $ref: '#/components/schemas/BrowserPageLoadEvent' - $ref: '#/components/schemas/BrowserPageTabOpenedEvent' - $ref: '#/components/schemas/BrowserPageLayoutShiftEvent' - $ref: '#/components/schemas/BrowserPageLcpEvent' - $ref: '#/components/schemas/BrowserPageLayoutSettledEvent' - $ref: '#/components/schemas/BrowserPageNavigationSettledEvent' - $ref: '#/components/schemas/BrowserInteractionClickEvent' - $ref: '#/components/schemas/BrowserInteractionKeyEvent' - $ref: '#/components/schemas/BrowserInteractionScrollSettledEvent' - $ref: '#/components/schemas/BrowserMonitorScreenshotEvent' - $ref: '#/components/schemas/BrowserMonitorDisconnectedEvent' - $ref: '#/components/schemas/BrowserMonitorReconnectedEvent' - $ref: '#/components/schemas/BrowserMonitorReconnectFailedEvent' - $ref: '#/components/schemas/BrowserMonitorInitFailedEvent' discriminator: propertyName: type mapping: console_log: '#/components/schemas/BrowserConsoleLogEvent' console_error: '#/components/schemas/BrowserConsoleErrorEvent' network_request: '#/components/schemas/BrowserNetworkRequestEvent' network_response: '#/components/schemas/BrowserNetworkResponseEvent' network_loading_failed: '#/components/schemas/BrowserNetworkLoadingFailedEvent' network_idle: '#/components/schemas/BrowserNetworkIdleEvent' page_navigation: '#/components/schemas/BrowserPageNavigationEvent' page_dom_content_loaded: '#/components/schemas/BrowserPageDomContentLoadedEvent' page_load: '#/components/schemas/BrowserPageLoadEvent' page_tab_opened: '#/components/schemas/BrowserPageTabOpenedEvent' page_layout_shift: '#/components/schemas/BrowserPageLayoutShiftEvent' page_lcp: '#/components/schemas/BrowserPageLcpEvent' page_layout_settled: '#/components/schemas/BrowserPageLayoutSettledEvent' page_navigation_settled: '#/components/schemas/BrowserPageNavigationSettledEvent' interaction_click: '#/components/schemas/BrowserInteractionClickEvent' interaction_key: '#/components/schemas/BrowserInteractionKeyEvent' interaction_scroll_settled: '#/components/schemas/BrowserInteractionScrollSettledEvent' monitor_screenshot: '#/components/schemas/BrowserMonitorScreenshotEvent' monitor_disconnected: '#/components/schemas/BrowserMonitorDisconnectedEvent' monitor_reconnected: '#/components/schemas/BrowserMonitorReconnectedEvent' monitor_reconnect_failed: '#/components/schemas/BrowserMonitorReconnectFailedEvent' monitor_init_failed: '#/components/schemas/BrowserMonitorInitFailedEvent' description: 'Union type representing any browser telemetry event. Discriminated on `type`. Events with a `monitor_` prefix (monitor_screenshot, monitor_disconnected, monitor_reconnected, monitor_reconnect_failed, monitor_init_failed) are always emitted regardless of the category configuration in BrowserTelemetryConfig. All other event types are controlled by the per-category enable/disable flags. ' BrowserTelemetryEventEnvelope: type: object description: 'Envelope wrapping a browser telemetry event with its monotonic sequence number. Each SSE data: frame carries one envelope as JSON. The seq value is also emitted as the SSE id: field so clients can pass it as Last-Event-ID on reconnect. ' required: - seq - event properties: seq: type: integer format: int64 minimum: 1 description: 'Process-monotonic sequence number assigned by the browser VM. Pass as Last-Event-ID on reconnect to resume without gaps. Gaps in received seq values indicate dropped events. ' event: $ref: '#/components/schemas/BrowserTelemetryEvent' additionalProperties: false BrowserPageNavigationEvent: type: object description: A browser page navigation started event (CDP Page.frameNavigated). Carries nav context fields inline but not nav_seq, as this event resets the navigation epoch. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: page_navigation source: $ref: '#/components/schemas/BrowserEventSource' data: type: object additionalProperties: false properties: url: type: string description: URL navigated to. frame_id: type: string description: CDP frame identifier of the navigated frame. parent_frame_id: type: string description: Parent frame identifier for subframe navigations; absent for top-level navigations. loader_id: type: string description: New CDP document loader identifier assigned for this navigation. session_id: type: string description: CDP session identifier. target_id: type: string description: Browser target identifier. target_type: $ref: '#/components/schemas/BrowserTargetType' truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserCallStack: type: object description: CDP Runtime.StackTrace representing the JavaScript call stack at the time of an event. Fields use CDP naming conventions rather than snake_case to match the Chrome DevTools Protocol wire format. required: - callFrames properties: description: type: string description: Optional label for the stack trace (e.g. async cause). callFrames: type: array description: Ordered list of call frames, outermost first. items: type: object required: - functionName - scriptId - url - lineNumber - columnNumber properties: functionName: type: string description: JavaScript function name, or empty string for anonymous functions. scriptId: type: string description: CDP script identifier. url: type: string description: URL or name of the script file. lineNumber: type: integer description: Zero-based line number within the script. columnNumber: type: integer description: Zero-based column number within the line. parent: $ref: '#/components/schemas/BrowserCallStack' description: Parent stack trace for async stacks. BrowserEventContext: type: object description: Browser event context stamped by the browser monitor onto all CDP-sourced events. Identifies the target, frame, and navigation epoch in which the event occurred. properties: session_id: type: string description: CDP session identifier for the target connection. target_id: type: string description: Browser target identifier (stable across navigations within a tab). target_type: $ref: '#/components/schemas/BrowserTargetType' frame_id: type: string description: CDP frame identifier within the target. loader_id: type: string description: CDP document loader identifier, reset on each navigation. url: type: string description: URL relevant to this event — page URL for navigation and page events, request URL for network events. nav_seq: type: integer format: int64 description: Monotonically increasing navigation sequence number, incremented on each top-level navigation within the target. BrowserConsoleLogEvent: type: object description: A browser console log event (console.log, console.info, console.warn, etc.). required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: console_log source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: level: type: string description: CDP Runtime.consoleAPICalled type, passed through unfiltered from Chrome. error is routed to console_error events instead; all other CDP console types appear here. See CDP spec for the full enum. text: type: string description: First console argument coerced to string. args: type: array description: All console arguments coerced to strings. items: type: string stack_trace: $ref: '#/components/schemas/BrowserCallStack' truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserTargetType: type: string description: CDP target type of the page that produced the event. enum: - page - background_page - service_worker - shared_worker - other BrowserMonitorScreenshotEvent: type: object description: A periodic screenshot of the browser viewport. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: monitor_screenshot source: $ref: '#/components/schemas/BrowserEventSource' data: type: object additionalProperties: false properties: png: type: string contentEncoding: base64 description: Base64-encoded PNG screenshot of the browser viewport. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserPageDomContentLoadedEvent: type: object description: A browser DOMContentLoaded event (CDP Page.domContentEventFired). required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: page_dom_content_loaded source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: cdp_timestamp: type: number description: Chrome monotonic clock value in seconds at which DOMContentLoaded fired, relative to browser process start (not Unix epoch). Use ts for wall-clock time. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserMonitorReconnectFailedEvent: type: object description: The CDP connection to Chrome could not be re-established after exhausting all reconnection attempts. No further telemetry events will arrive on this session. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: monitor_reconnect_failed source: $ref: '#/components/schemas/BrowserEventSource' data: type: object additionalProperties: false properties: reason: type: string description: 'Reason for the reconnection failure. reconnect_exhausted: all retry attempts were used up without successfully restoring the CDP connection.' enum: - reconnect_exhausted truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserNetworkLoadingFailedEvent: type: object description: A browser network loading failed event. If the request was already in flight when CDP attached (no prior network_request was emitted for it), url, frame_id, loader_id, and resource_type are absent; BrowserEventContext is partially populated in that case. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: network_loading_failed source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: request_id: type: string description: CDP request identifier matching the originating network_request event. error_text: type: string description: Network error description (e.g. net::ERR_CONNECTION_REFUSED). canceled: type: boolean description: True if the request was canceled by the browser or page script. resource_type: type: string description: CDP Network.ResourceType for the request, passed through as-is from Chrome. Known values include Document, Fetch, XHR, Script, Stylesheet, Image, Media, Font, TextTrack, EventSource, WebSocket, Manifest, Prefetch, Other, and more. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserEventSource: type: object description: Provenance metadata identifying which producer emitted the event. required: - kind properties: kind: type: string enum: - cdp - kernel_api - extension - local_process description: 'Event producer. cdp: Chrome DevTools Protocol events from the browser. kernel_api: Kernel API server. extension: injected Chrome extension. local_process: system process running alongside the browser.' event: type: string description: Producer-specific event name (e.g. Runtime.consoleAPICalled for CDP-sourced console events, Runtime.exceptionThrown for uncaught exceptions). metadata: type: object description: Producer-specific context (e.g. CDP target/session/frame IDs). additionalProperties: type: string BrowserConsoleErrorEvent: type: object description: 'A browser console error or uncaught JavaScript exception event. Emitted from two distinct CDP sources with different data shapes. Runtime.consoleAPICalled (console.error calls) produces level, text, args, and stack_trace. Runtime.exceptionThrown (uncaught exceptions) produces text, line, column, source_url, and stack_trace. Fields not applicable to the source are absent. ' required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: console_error source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object required: - text properties: text: type: string description: Error message text. Present in both source paths. stack_trace: $ref: '#/components/schemas/BrowserCallStack' level: type: string description: CDP console type value, always "error". Present only when sourced from Runtime.consoleAPICalled. args: type: array description: All console arguments coerced to strings. Present only when sourced from Runtime.consoleAPICalled. items: type: string line: type: integer description: Line number in the script where the exception was thrown. Present only when sourced from Runtime.exceptionThrown. column: type: integer description: Column number in the script where the exception was thrown. Present only when sourced from Runtime.exceptionThrown. source_url: type: string description: URL of the script file that threw the exception. Present only when sourced from Runtime.exceptionThrown. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserPageLoadEvent: type: object description: A browser page load event (CDP Page.loadEventFired). required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: page_load source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: cdp_timestamp: type: number description: Chrome monotonic clock value in seconds at which the load event fired, relative to browser process start (not Unix epoch). Use ts for wall-clock time. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserNetworkResponseEvent: type: object description: A browser network response received event. Fired after the response body is fully received, not when headers arrive. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: network_response source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: request_id: type: string description: CDP request identifier matching the originating network_request event. method: type: string description: HTTP method of the original request. status: type: integer description: HTTP response status code. status_text: type: string description: HTTP response status text (e.g. OK, Not Found). headers: $ref: '#/components/schemas/BrowserHttpHeaders' description: Response headers. mime_type: type: string description: MIME type of the response (e.g. text/html, application/json). resource_type: type: string description: CDP Network.ResourceType for the request, passed through as-is from Chrome. Known values include Document, Fetch, XHR, Script, Stylesheet, Image, Media, Font, TextTrack, EventSource, WebSocket, Manifest, Prefetch, Other, and more. body: type: string description: Truncated response body, present only for text MIME types. truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserInteractionKeyEvent: type: object description: A browser keyboard event captured via injected page script. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: interaction_key source: $ref: '#/components/schemas/BrowserEventSource' data: allOf: - $ref: '#/components/schemas/BrowserEventContext' - type: object properties: key: type: string description: Key value from the KeyboardEvent (e.g. Enter, Backspace, a). selector: type: string description: CSS selector path to the element that had focus when the key was pressed. tag: type: string description: HTML tag name of the focused element in uppercase (e.g. INPUT, TEXTAREA, DIV). truncated: type: boolean description: True if the data field was truncated due to size limits. BrowserHttpHeaders: type: object description: HTTP headers map forwarded as-is from CDP without normalization. Values are typically strings but may be any JSON type. additionalProperties: true BrowserMonitorReconnectedEvent: type: object description: The CDP connection to Chrome was successfully re-established after a disconnection. Events emitted during the gap are lost. Computed state is reset, so navigation and network tracking restart fresh from this point. required: - ts - type - source properties: ts: type: integer format: int64 description: Event timestamp in Unix microseconds. type: type: string const: monitor_reconnected source: $ref: '#/components/schemas/BrowserEventSource' data: type: object additionalProperties: false properties: reconnect_duration_ms: type: integer format: int64 description: Wall-clock time in milliseconds taken to reconnect after the disconnection. truncated: type: boolean description: True if the data field was truncated due to size limits. responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' Forbidden: description: Forbidden – insufficient permissions or plan content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Unauthorized – missing or invalid authorization token content: application/json: schema: $ref: '#/components/schemas/Error' InternalError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: bearerAuth: type: http scheme: bearer