Kernel Browser Replays API
Record and manage browser session video replays.
Record and manage browser session video replays.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/kernel:kernel-browser-replays-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: Developer tools and cloud infrastructure for AI agents to use web browsers
title: Kernel Browser Replays API
version: 0.1.0
servers:
- description: API Server
url: https://api.onkernel.com
security:
- bearerAuth: []
tags:
- description: Record and manage browser session video replays.
name: Browser Replays
paths:
/browsers/{id_or_name}/replays:
get:
description: List all replays for the specified browser session.
operationId: listBrowsersReplays
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/BrowserReplay'
type: array
description: List of replays retrieved successfully.
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
security:
- bearerAuth: []
summary: List browser session replays
tags:
- Browser Replays
post:
description: Start recording the browser session and return a replay ID.
operationId: startBrowserReplayRecording
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
properties:
framerate:
description: Recording framerate in fps. Values above 20 require GPU to be enabled on the browser session.
maximum: 60
minimum: 1
type: integer
max_duration_in_seconds:
description: Maximum recording duration in seconds.
minimum: 1
type: integer
record_audio:
default: false
description: Record audio in addition to video. When false (the default), the recording is video-only.
type: boolean
type: object
required: false
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/BrowserReplay'
description: Recording started successfully.
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'500':
$ref: '#/components/responses/InternalError'
security:
- bearerAuth: []
summary: Start a browser session replay recording
tags:
- Browser Replays
/browsers/{id_or_name}/replays/{replay_id}:
get:
description: Download or stream the specified replay recording.
operationId: getBrowsersReplaysById
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
- description: Replay recording identifier
in: path
name: replay_id
required: true
schema:
type: string
responses:
'200':
content:
video/mp4:
schema:
format: binary
type: string
description: Replay recording retrieved successfully.
'202':
description: Replay recording is still in progress, please try again later
headers:
Retry-After:
description: Suggested wait time in seconds before retrying
schema:
minimum: 1
type: integer
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
security:
- bearerAuth: []
summary: Download a replay recording
tags:
- Browser Replays
/browsers/{id_or_name}/replays/{replay_id}/stop:
post:
description: Stop the specified replay recording and persist the video.
operationId: stopBrowserReplayRecording
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
- description: Replay recording identifier
in: path
name: replay_id
required: true
schema:
type: string
responses:
'200':
description: Recording stopped successfully.
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
security:
- bearerAuth: []
summary: Stop a browser session replay recording
tags:
- Browser Replays
components:
responses:
BadRequest:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad Request – invalid input
NotFound:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Resource not found
Conflict:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Conflict – resource already exists
InternalError:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal Server Error
Forbidden:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Forbidden – insufficient permissions or plan
Unauthorized:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized – missing or invalid authorization token
schemas:
ErrorDetail:
properties:
code:
description: Lower-level error code providing more specific detail
example: invalid_input
type: string
message:
description: Further detail about the error
example: Provided version string is not semver compliant
type: string
type: object
Error:
properties:
code:
description: Application-specific error code (machine-readable)
example: bad_request
type: string
details:
description: Additional error details (for multiple errors)
items:
$ref: '#/components/schemas/ErrorDetail'
type: array
inner_error:
$ref: '#/components/schemas/ErrorDetail'
message:
description: Human-readable error description for debugging
example: 'Missing required field: app_name'
type: string
required:
- code
- message
type: object
BrowserReplay:
description: Information about a browser replay recording.
properties:
finished_at:
description: Timestamp when replay finished
format: date-time
nullable: true
type: string
replay_id:
description: Unique identifier for the replay recording.
type: string
replay_view_url:
description: URL for viewing the replay recording.
example: https://api.onkernel.com/browser/replays?jwt=eyJ0eXAi...&replay_id=7e2c1a9f-1234-4cde-9abc-ffeedd001122
type: string
started_at:
description: Timestamp when replay started
format: date-time
nullable: true
type: string
required:
- replay_id
type: object
securitySchemes:
bearerAuth:
scheme: bearer
type: http
x-service-info:
categories:
- browsers
docs:
apiReference: https://www.kernel.sh/docs
homepage: https://www.kernel.sh
llms: https://api.onkernel.com/llms.txt
x-provenance:
method: harvested
publisher: Kernel
source: https://api.onkernel.com/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)