Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.69.0"
".": "0.70.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 120
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-cde481b2f320ce48f83db84ae96226b0e7568146c9387c4fefebf286ecb0dd0a.yml
openapi_spec_hash: 6bd86d767290fcd7e2a6aae26dff5417
config_hash: 03c7e57f268c750e2415831662e95969
configured_endpoints: 122
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-d9b82fc5346c9be1bf9c2b18792fdcdec6a80a86153ca765c9e93e597b46fa24.yml
openapi_spec_hash: 9cbaab975acfa421b795d11aa635c57e
config_hash: 99b2b2a25e8067ad9c9214e38e01d64c
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Changelog

## 0.70.0 (2026-06-23)

Full Changelog: [v0.69.0...v0.70.0](https://github.com/kernel/kernel-python-sdk/compare/v0.69.0...v0.70.0)

### Features

* Add GET /browsers/{id}/telemetry/events (read from S2) ([9a84bff](https://github.com/kernel/kernel-python-sdk/commit/9a84bff15de4d6ed1930f0d9dc01ace64548866c))
* Align browser-pool timeout/viewport/fill-rate contract with implementation; reject save_changes on update ([5fdc97b](https://github.com/kernel/kernel-python-sdk/commit/5fdc97b27bdd92cb6f91f1162c1a5827e4a6a172))
* api: support per-acquire start_url override on browser pool acquire ([31e7cef](https://github.com/kernel/kernel-python-sdk/commit/31e7cefe14fa6d8a98652f387563b395d7af7b09))
* **api:** add GET /extensions/{id_or_name}/metadata ([a88cbff](https://github.com/kernel/kernel-python-sdk/commit/a88cbff17b47ecc14a8ba74170dcf467bff55816))
* **api:** resolve GET /org/projects/{id} by ID or name ([b5ff4c6](https://github.com/kernel/kernel-python-sdk/commit/b5ff4c68b5915e77c63c9f9719870d1e7c38e8f2))
* Forward replay param through telemetry stream passthrough ([e330f60](https://github.com/kernel/kernel-python-sdk/commit/e330f6024b254fe4275f222ee834026528675324))

## 0.69.0 (2026-06-18)

Full Changelog: [v0.68.0...v0.69.0](https://github.com/kernel/kernel-python-sdk/compare/v0.68.0...v0.69.0)
Expand Down
7 changes: 5 additions & 2 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,13 +146,15 @@ from kernel.types.browsers import (
BrowserTelemetryCategoryConfig,
BrowserTelemetryConfig,
BrowserTelemetryEvent,
TelemetryEventsResponse,
TelemetryStreamResponse,
)
```

Methods:

- <code title="get /browsers/{id}/telemetry/stream">client.browsers.telemetry.<a href="./src/kernel/resources/browsers/telemetry.py">stream</a>(id) -> <a href="./src/kernel/types/browsers/telemetry_stream_response.py">TelemetryStreamResponse</a></code>
- <code title="get /browsers/{id}/telemetry/events">client.browsers.telemetry.<a href="./src/kernel/resources/browsers/telemetry.py">events</a>(id, \*\*<a href="src/kernel/types/browsers/telemetry_events_params.py">params</a>) -> <a href="./src/kernel/types/browsers/telemetry_events_response.py">SyncOffsetPagination[TelemetryEventsResponse]</a></code>
- <code title="get /browsers/{id}/telemetry/stream">client.browsers.telemetry.<a href="./src/kernel/resources/browsers/telemetry.py">stream</a>(id, \*\*<a href="src/kernel/types/browsers/telemetry_stream_params.py">params</a>) -> <a href="./src/kernel/types/browsers/telemetry_stream_response.py">TelemetryStreamResponse</a></code>

## Replays

Expand Down Expand Up @@ -342,7 +344,7 @@ Methods:
Types:

```python
from kernel.types import ExtensionListResponse, ExtensionUploadResponse
from kernel.types import ExtensionListResponse, ExtensionGetResponse, ExtensionUploadResponse
```

Methods:
Expand All @@ -351,6 +353,7 @@ Methods:
- <code title="delete /extensions/{id_or_name}">client.extensions.<a href="./src/kernel/resources/extensions.py">delete</a>(id_or_name) -> None</code>
- <code title="get /extensions/{id_or_name}">client.extensions.<a href="./src/kernel/resources/extensions.py">download</a>(id_or_name) -> BinaryAPIResponse</code>
- <code title="get /extensions/from_chrome_store">client.extensions.<a href="./src/kernel/resources/extensions.py">download_from_chrome_store</a>(\*\*<a href="src/kernel/types/extension_download_from_chrome_store_params.py">params</a>) -> BinaryAPIResponse</code>
- <code title="get /extensions/{id_or_name}/metadata">client.extensions.<a href="./src/kernel/resources/extensions.py">get</a>(id_or_name) -> <a href="./src/kernel/types/extension_get_response.py">ExtensionGetResponse</a></code>
- <code title="post /extensions">client.extensions.<a href="./src/kernel/resources/extensions.py">upload</a>(\*\*<a href="src/kernel/types/extension_upload_params.py">params</a>) -> <a href="./src/kernel/types/extension_upload_response.py">ExtensionUploadResponse</a></code>

# BrowserPools
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "kernel"
version = "0.69.0"
version = "0.70.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/kernel/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "kernel"
__version__ = "0.69.0" # x-release-please-version
__version__ = "0.70.0" # x-release-please-version
36 changes: 28 additions & 8 deletions src/kernel/resources/browser_pools.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,9 @@ def create(

extensions: List of browser extensions to load into the session. Provide each by id or name.

fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10%.
fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10. The cap is 25 for
most organizations but can be raised per-organization, so only the lower bound
is enforced here.

headless: If true, launches the browser using a headless image. Defaults to false.

Expand All @@ -122,7 +124,7 @@ def create(
mechanisms.

timeout_seconds: Default idle timeout in seconds for browsers acquired from this pool before they
are destroyed. Defaults to 600 seconds if not specified
are destroyed. Defaults to 600 seconds. Minimum 10, maximum 259200 (72 hours).

viewport: Initial browser window size in pixels with optional refresh rate. If omitted,
image defaults apply (1920x1080@25). For GPU images, the default is
Expand Down Expand Up @@ -243,7 +245,9 @@ def update(

extensions: List of browser extensions to load into the session. Provide each by id or name.

fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10%.
fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10. The cap is 25 for
most organizations but can be raised per-organization, so only the lower bound
is enforced here.

headless: If true, launches the browser using a headless image. Defaults to false.

Expand Down Expand Up @@ -273,7 +277,7 @@ def update(
mechanisms.

timeout_seconds: Default idle timeout in seconds for browsers acquired from this pool before they
are destroyed. Defaults to 600 seconds if not specified
are destroyed. Defaults to 600 seconds. Minimum 10, maximum 259200 (72 hours).

viewport: Initial browser window size in pixels with optional refresh rate. If omitted,
image defaults apply (1920x1080@25). For GPU images, the default is
Expand Down Expand Up @@ -423,6 +427,7 @@ def acquire(
*,
acquire_timeout_seconds: int | Omit = omit,
name: str | Omit = omit,
start_url: str | Omit = omit,
tags: TagsParam | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
Expand All @@ -448,6 +453,10 @@ def acquire(
project. Applies to this lease only and is cleared when the browser is released
back to the pool.

start_url: Optional URL to navigate the acquired browser to. Overrides the pool's start_url
for this acquire only. Best-effort: failures to navigate do not fail the
acquire.

tags: Optional user-defined key-value tags for the acquired browser session, used to
find and group sessions later. Applies to this lease only and are cleared when
the browser is released back to the pool. Up to 50 pairs.
Expand All @@ -468,6 +477,7 @@ def acquire(
{
"acquire_timeout_seconds": acquire_timeout_seconds,
"name": name,
"start_url": start_url,
"tags": tags,
},
browser_pool_acquire_params.BrowserPoolAcquireParams,
Expand Down Expand Up @@ -621,7 +631,9 @@ async def create(

extensions: List of browser extensions to load into the session. Provide each by id or name.

fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10%.
fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10. The cap is 25 for
most organizations but can be raised per-organization, so only the lower bound
is enforced here.

headless: If true, launches the browser using a headless image. Defaults to false.

Expand All @@ -647,7 +659,7 @@ async def create(
mechanisms.

timeout_seconds: Default idle timeout in seconds for browsers acquired from this pool before they
are destroyed. Defaults to 600 seconds if not specified
are destroyed. Defaults to 600 seconds. Minimum 10, maximum 259200 (72 hours).

viewport: Initial browser window size in pixels with optional refresh rate. If omitted,
image defaults apply (1920x1080@25). For GPU images, the default is
Expand Down Expand Up @@ -768,7 +780,9 @@ async def update(

extensions: List of browser extensions to load into the session. Provide each by id or name.

fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10%.
fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10. The cap is 25 for
most organizations but can be raised per-organization, so only the lower bound
is enforced here.

headless: If true, launches the browser using a headless image. Defaults to false.

Expand Down Expand Up @@ -798,7 +812,7 @@ async def update(
mechanisms.

timeout_seconds: Default idle timeout in seconds for browsers acquired from this pool before they
are destroyed. Defaults to 600 seconds if not specified
are destroyed. Defaults to 600 seconds. Minimum 10, maximum 259200 (72 hours).

viewport: Initial browser window size in pixels with optional refresh rate. If omitted,
image defaults apply (1920x1080@25). For GPU images, the default is
Expand Down Expand Up @@ -948,6 +962,7 @@ async def acquire(
*,
acquire_timeout_seconds: int | Omit = omit,
name: str | Omit = omit,
start_url: str | Omit = omit,
tags: TagsParam | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
Expand All @@ -973,6 +988,10 @@ async def acquire(
project. Applies to this lease only and is cleared when the browser is released
back to the pool.

start_url: Optional URL to navigate the acquired browser to. Overrides the pool's start_url
for this acquire only. Best-effort: failures to navigate do not fail the
acquire.

tags: Optional user-defined key-value tags for the acquired browser session, used to
find and group sessions later. Applies to this lease only and are cleared when
the browser is released back to the pool. Up to 50 pairs.
Expand All @@ -993,6 +1012,7 @@ async def acquire(
{
"acquire_timeout_seconds": acquire_timeout_seconds,
"name": name,
"start_url": start_url,
"tags": tags,
},
browser_pool_acquire_params.BrowserPoolAcquireParams,
Expand Down
Loading
Loading