From ce09d0a7a970560604cac6e79692e83c75ac0d6c Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 13 May 2026 20:16:24 +0000
Subject: [PATCH 1/8] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 4e2d03e..192797a 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 23
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-2118fd938d408dda6ed82d06c48b0785fad91fd54b5397acc3421a49a386c791.yml
-openapi_spec_hash: 8e48a39a55a11b128028b47747aea775
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-466614a040e7f31307530bd6ba443e714b6303eaa141904e7d32e6641d5ec55f.yml
+openapi_spec_hash: 2d06680e7c17847e4fbcac35124d2456
config_hash: 40fbac80e24faaa0dc19e93368bcd821
From 95c8dfa7988a9784df18a5bf12e6298a2d6e3de4 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 18 May 2026 21:47:57 +0000
Subject: [PATCH 2/8] feat: [AI-1993] - Surface structured JSON content on
/v2/fetch
---
.stats.yml | 8 ++--
api.md | 11 -----
src/resources/fetch-api.ts | 5 +-
src/resources/sessions/index.ts | 1 -
src/resources/sessions/replays.ts | 49 --------------------
src/resources/sessions/sessions.ts | 6 ---
tests/api-resources/sessions/replays.test.ts | 40 ----------------
7 files changed, 7 insertions(+), 113 deletions(-)
delete mode 100644 src/resources/sessions/replays.ts
delete mode 100644 tests/api-resources/sessions/replays.test.ts
diff --git a/.stats.yml b/.stats.yml
index 192797a..523861e 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 23
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-466614a040e7f31307530bd6ba443e714b6303eaa141904e7d32e6641d5ec55f.yml
-openapi_spec_hash: 2d06680e7c17847e4fbcac35124d2456
-config_hash: 40fbac80e24faaa0dc19e93368bcd821
+configured_endpoints: 21
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-1821faac6d1422fea15b3ba1f88c0f5f00c43464524e17d3fd1efd1ea148b7c4.yml
+openapi_spec_hash: 1e3fba074314f557dc6973cf97ea6a69
+config_hash: cf04ecfb8dad5fbd8b85be25d6e9ec55
diff --git a/api.md b/api.md
index 11f9afd..eb38395 100644
--- a/api.md
+++ b/api.md
@@ -114,14 +114,3 @@ Types:
Methods:
- client.sessions.uploads.create(id, { ...params }) -> UploadCreateResponse
-
-## Replays
-
-Types:
-
-- ReplayRetrieveResponse
-
-Methods:
-
-- client.sessions.replays.retrieve(id) -> ReplayRetrieveResponse
-- client.sessions.replays.retrievePage(id, pageId) -> Response
diff --git a/src/resources/fetch-api.ts b/src/resources/fetch-api.ts
index 976f473..46ab50b 100644
--- a/src/resources/fetch-api.ts
+++ b/src/resources/fetch-api.ts
@@ -19,9 +19,10 @@ export interface FetchAPICreateResponse {
id: string;
/**
- * The response body content
+ * The response body content. A string for `raw` and `markdown` formats; a
+ * structured object for `json` format (the schema-extracted result).
*/
- content: string;
+ content: string | { [key: string]: unknown };
/**
* The MIME type of the response
diff --git a/src/resources/sessions/index.ts b/src/resources/sessions/index.ts
index b3c2a80..9c9a61e 100644
--- a/src/resources/sessions/index.ts
+++ b/src/resources/sessions/index.ts
@@ -3,7 +3,6 @@
export { Downloads } from './downloads';
export { Logs, type SessionLog, type LogListResponse } from './logs';
export { Recording, type SessionRecording, type RecordingRetrieveResponse } from './recording';
-export { Replays, type ReplayRetrieveResponse } from './replays';
export {
Sessions,
type Session,
diff --git a/src/resources/sessions/replays.ts b/src/resources/sessions/replays.ts
deleted file mode 100644
index 70d1f3b..0000000
--- a/src/resources/sessions/replays.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-import { APIResource } from '../../resource';
-import * as Core from '../../core';
-import { type Response } from '../../_shims/index';
-
-export class Replays extends APIResource {
- /**
- * Returns page metadata for a session replay, including timing information and the
- * URL of each page's HLS playlist.
- */
- retrieve(id: string, options?: Core.RequestOptions): Core.APIPromise {
- return this._client.get(`/v1/sessions/${id}/replays`, options);
- }
-
- /**
- * Returns an HLS VOD media playlist (.m3u8) for a specific page of a session
- * replay.
- */
- retrievePage(id: string, pageId: string, options?: Core.RequestOptions): Core.APIPromise {
- return this._client.get(`/v1/sessions/${id}/replays/${pageId}`, {
- ...options,
- headers: { Accept: 'application/vnd.apple.mpegurl', ...options?.headers },
- __binaryResponse: true,
- });
- }
-}
-
-export interface ReplayRetrieveResponse {
- pageCount: number;
-
- pages: Array;
-}
-
-export namespace ReplayRetrieveResponse {
- export interface Page {
- endTimeMs: number;
-
- pageId: string;
-
- startTimeMs: number;
-
- url: string;
- }
-}
-
-export declare namespace Replays {
- export { type ReplayRetrieveResponse as ReplayRetrieveResponse };
-}
diff --git a/src/resources/sessions/sessions.ts b/src/resources/sessions/sessions.ts
index ac5b37d..d1f4dcd 100644
--- a/src/resources/sessions/sessions.ts
+++ b/src/resources/sessions/sessions.ts
@@ -9,8 +9,6 @@ import * as LogsAPI from './logs';
import { LogListResponse, Logs, SessionLog } from './logs';
import * as RecordingAPI from './recording';
import { Recording, RecordingRetrieveResponse, SessionRecording } from './recording';
-import * as ReplaysAPI from './replays';
-import { ReplayRetrieveResponse, Replays } from './replays';
import * as UploadsAPI from './uploads';
import { UploadCreateParams, UploadCreateResponse, Uploads } from './uploads';
@@ -19,7 +17,6 @@ export class Sessions extends APIResource {
logs: LogsAPI.Logs = new LogsAPI.Logs(this._client);
recording: RecordingAPI.Recording = new RecordingAPI.Recording(this._client);
uploads: UploadsAPI.Uploads = new UploadsAPI.Uploads(this._client);
- replays: ReplaysAPI.Replays = new ReplaysAPI.Replays(this._client);
/**
* Create a Session
@@ -440,7 +437,6 @@ Sessions.Downloads = Downloads;
Sessions.Logs = Logs;
Sessions.Recording = Recording;
Sessions.Uploads = Uploads;
-Sessions.Replays = Replays;
export declare namespace Sessions {
export {
@@ -469,6 +465,4 @@ export declare namespace Sessions {
type UploadCreateResponse as UploadCreateResponse,
type UploadCreateParams as UploadCreateParams,
};
-
- export { Replays as Replays, type ReplayRetrieveResponse as ReplayRetrieveResponse };
}
diff --git a/tests/api-resources/sessions/replays.test.ts b/tests/api-resources/sessions/replays.test.ts
deleted file mode 100644
index 4387aaa..0000000
--- a/tests/api-resources/sessions/replays.test.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-import Browserbase from '@browserbasehq/sdk';
-import { Response } from 'node-fetch';
-
-const client = new Browserbase({
- apiKey: 'My API Key',
- baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
-});
-
-describe('resource replays', () => {
- test('retrieve', async () => {
- const responsePromise = client.sessions.replays.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
- const rawResponse = await responsePromise.asResponse();
- expect(rawResponse).toBeInstanceOf(Response);
- const response = await responsePromise;
- expect(response).not.toBeInstanceOf(Response);
- const dataAndResponse = await responsePromise.withResponse();
- expect(dataAndResponse.data).toBe(response);
- expect(dataAndResponse.response).toBe(rawResponse);
- });
-
- test('retrieve: request options instead of params are passed correctly', async () => {
- // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
- await expect(
- client.sessions.replays.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
- path: '/_stainless_unknown_path',
- }),
- ).rejects.toThrow(Browserbase.NotFoundError);
- });
-
- test('retrievePage: request options instead of params are passed correctly', async () => {
- // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
- await expect(
- client.sessions.replays.retrievePage('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', '090', {
- path: '/_stainless_unknown_path',
- }),
- ).rejects.toThrow(Browserbase.NotFoundError);
- });
-});
From 397c60f9a97e8a8a587b00138586ac7a2797cee5 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 19 May 2026 20:54:50 +0000
Subject: [PATCH 3/8] feat: [AI-1972] - Move fetch v2 handler into /v1/fetch
---
.stats.yml | 4 ++--
src/resources/fetch-api.ts | 13 +++++++++++++
tests/api-resources/fetch-api.test.ts | 2 ++
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 523861e..8544550 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 21
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-1821faac6d1422fea15b3ba1f88c0f5f00c43464524e17d3fd1efd1ea148b7c4.yml
-openapi_spec_hash: 1e3fba074314f557dc6973cf97ea6a69
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-3032c74460ad9c1c4b0a1b2d9107c556f292974a8ce12d525660a9cf31f10bc1.yml
+openapi_spec_hash: 8ac1c673ce4e72b88bbbf30100b95e8f
config_hash: cf04ecfb8dad5fbd8b85be25d6e9ec55
diff --git a/src/resources/fetch-api.ts b/src/resources/fetch-api.ts
index 46ab50b..3232d17 100644
--- a/src/resources/fetch-api.ts
+++ b/src/resources/fetch-api.ts
@@ -61,10 +61,23 @@ export interface FetchAPICreateParams {
*/
allowRedirects?: boolean;
+ /**
+ * Output format for the response content. `raw` (default) returns the response
+ * body unchanged; `json` returns structured data (requires `schema`); `markdown`
+ * returns the page as markdown.
+ */
+ format?: 'raw' | 'json' | 'markdown';
+
/**
* Whether to enable proxy support for the request
*/
proxies?: boolean;
+
+ /**
+ * JSON Schema describing the desired structure of the response. Only used when
+ * `format` is `json`.
+ */
+ schema?: { [key: string]: unknown };
}
export declare namespace FetchAPI {
diff --git a/tests/api-resources/fetch-api.test.ts b/tests/api-resources/fetch-api.test.ts
index 7e250d3..a74882c 100644
--- a/tests/api-resources/fetch-api.test.ts
+++ b/tests/api-resources/fetch-api.test.ts
@@ -25,7 +25,9 @@ describe('resource fetchAPI', () => {
url: 'https://example.com',
allowInsecureSsl: true,
allowRedirects: true,
+ format: 'raw',
proxies: true,
+ schema: { foo: 'bar' },
});
});
});
From 0123bc8dd7754b7dad06692cf4d6032492d23576 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 10:41:12 +0000
Subject: [PATCH 4/8] feat: [AI-1748][apps/api] Obtain custom certificates in
API during session reservation
---
.stats.yml | 4 ++--
src/resources/fetch-api.ts | 18 ++----------------
tests/api-resources/fetch-api.test.ts | 2 --
3 files changed, 4 insertions(+), 20 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 8544550..c2ae426 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 21
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-3032c74460ad9c1c4b0a1b2d9107c556f292974a8ce12d525660a9cf31f10bc1.yml
-openapi_spec_hash: 8ac1c673ce4e72b88bbbf30100b95e8f
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-090302cbdfdd8758ae5907f93842b16040a66772578d0327349135378e0bce40.yml
+openapi_spec_hash: cb19458f0642bea3cf6eaf91113f9fda
config_hash: cf04ecfb8dad5fbd8b85be25d6e9ec55
diff --git a/src/resources/fetch-api.ts b/src/resources/fetch-api.ts
index 3232d17..976f473 100644
--- a/src/resources/fetch-api.ts
+++ b/src/resources/fetch-api.ts
@@ -19,10 +19,9 @@ export interface FetchAPICreateResponse {
id: string;
/**
- * The response body content. A string for `raw` and `markdown` formats; a
- * structured object for `json` format (the schema-extracted result).
+ * The response body content
*/
- content: string | { [key: string]: unknown };
+ content: string;
/**
* The MIME type of the response
@@ -61,23 +60,10 @@ export interface FetchAPICreateParams {
*/
allowRedirects?: boolean;
- /**
- * Output format for the response content. `raw` (default) returns the response
- * body unchanged; `json` returns structured data (requires `schema`); `markdown`
- * returns the page as markdown.
- */
- format?: 'raw' | 'json' | 'markdown';
-
/**
* Whether to enable proxy support for the request
*/
proxies?: boolean;
-
- /**
- * JSON Schema describing the desired structure of the response. Only used when
- * `format` is `json`.
- */
- schema?: { [key: string]: unknown };
}
export declare namespace FetchAPI {
diff --git a/tests/api-resources/fetch-api.test.ts b/tests/api-resources/fetch-api.test.ts
index a74882c..7e250d3 100644
--- a/tests/api-resources/fetch-api.test.ts
+++ b/tests/api-resources/fetch-api.test.ts
@@ -25,9 +25,7 @@ describe('resource fetchAPI', () => {
url: 'https://example.com',
allowInsecureSsl: true,
allowRedirects: true,
- format: 'raw',
proxies: true,
- schema: { foo: 'bar' },
});
});
});
From cce765af5828449b905cf647afcc2d90df4bd567 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 20:35:33 +0000
Subject: [PATCH 5/8] feat(api): manual updates
---
.stats.yml | 4 ++--
src/resources/fetch-api.ts | 18 ++++++++++++++++--
tests/api-resources/fetch-api.test.ts | 2 ++
3 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index c2ae426..8544550 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 21
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-090302cbdfdd8758ae5907f93842b16040a66772578d0327349135378e0bce40.yml
-openapi_spec_hash: cb19458f0642bea3cf6eaf91113f9fda
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-3032c74460ad9c1c4b0a1b2d9107c556f292974a8ce12d525660a9cf31f10bc1.yml
+openapi_spec_hash: 8ac1c673ce4e72b88bbbf30100b95e8f
config_hash: cf04ecfb8dad5fbd8b85be25d6e9ec55
diff --git a/src/resources/fetch-api.ts b/src/resources/fetch-api.ts
index 976f473..3232d17 100644
--- a/src/resources/fetch-api.ts
+++ b/src/resources/fetch-api.ts
@@ -19,9 +19,10 @@ export interface FetchAPICreateResponse {
id: string;
/**
- * The response body content
+ * The response body content. A string for `raw` and `markdown` formats; a
+ * structured object for `json` format (the schema-extracted result).
*/
- content: string;
+ content: string | { [key: string]: unknown };
/**
* The MIME type of the response
@@ -60,10 +61,23 @@ export interface FetchAPICreateParams {
*/
allowRedirects?: boolean;
+ /**
+ * Output format for the response content. `raw` (default) returns the response
+ * body unchanged; `json` returns structured data (requires `schema`); `markdown`
+ * returns the page as markdown.
+ */
+ format?: 'raw' | 'json' | 'markdown';
+
/**
* Whether to enable proxy support for the request
*/
proxies?: boolean;
+
+ /**
+ * JSON Schema describing the desired structure of the response. Only used when
+ * `format` is `json`.
+ */
+ schema?: { [key: string]: unknown };
}
export declare namespace FetchAPI {
diff --git a/tests/api-resources/fetch-api.test.ts b/tests/api-resources/fetch-api.test.ts
index 7e250d3..a74882c 100644
--- a/tests/api-resources/fetch-api.test.ts
+++ b/tests/api-resources/fetch-api.test.ts
@@ -25,7 +25,9 @@ describe('resource fetchAPI', () => {
url: 'https://example.com',
allowInsecureSsl: true,
allowRedirects: true,
+ format: 'raw',
proxies: true,
+ schema: { foo: 'bar' },
});
});
});
From d18107b210c64be3ce0541789f74adb47136734f Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 20:38:52 +0000
Subject: [PATCH 6/8] feat(api): manual updates
---
.stats.yml | 6 +--
api.md | 11 +++++
src/resources/sessions/index.ts | 1 +
src/resources/sessions/replays.ts | 49 ++++++++++++++++++++
src/resources/sessions/sessions.ts | 6 +++
tests/api-resources/sessions/replays.test.ts | 40 ++++++++++++++++
6 files changed, 110 insertions(+), 3 deletions(-)
create mode 100644 src/resources/sessions/replays.ts
create mode 100644 tests/api-resources/sessions/replays.test.ts
diff --git a/.stats.yml b/.stats.yml
index 8544550..724c919 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 21
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-3032c74460ad9c1c4b0a1b2d9107c556f292974a8ce12d525660a9cf31f10bc1.yml
+configured_endpoints: 23
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-17193ab4cc450d38ce1bfdb1a571001c04b754ba2ff2d2bb2dcf4a898d6c6c41.yml
openapi_spec_hash: 8ac1c673ce4e72b88bbbf30100b95e8f
-config_hash: cf04ecfb8dad5fbd8b85be25d6e9ec55
+config_hash: 40fbac80e24faaa0dc19e93368bcd821
diff --git a/api.md b/api.md
index eb38395..11f9afd 100644
--- a/api.md
+++ b/api.md
@@ -114,3 +114,14 @@ Types:
Methods:
- client.sessions.uploads.create(id, { ...params }) -> UploadCreateResponse
+
+## Replays
+
+Types:
+
+- ReplayRetrieveResponse
+
+Methods:
+
+- client.sessions.replays.retrieve(id) -> ReplayRetrieveResponse
+- client.sessions.replays.retrievePage(id, pageId) -> Response
diff --git a/src/resources/sessions/index.ts b/src/resources/sessions/index.ts
index 9c9a61e..b3c2a80 100644
--- a/src/resources/sessions/index.ts
+++ b/src/resources/sessions/index.ts
@@ -3,6 +3,7 @@
export { Downloads } from './downloads';
export { Logs, type SessionLog, type LogListResponse } from './logs';
export { Recording, type SessionRecording, type RecordingRetrieveResponse } from './recording';
+export { Replays, type ReplayRetrieveResponse } from './replays';
export {
Sessions,
type Session,
diff --git a/src/resources/sessions/replays.ts b/src/resources/sessions/replays.ts
new file mode 100644
index 0000000..70d1f3b
--- /dev/null
+++ b/src/resources/sessions/replays.ts
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../../resource';
+import * as Core from '../../core';
+import { type Response } from '../../_shims/index';
+
+export class Replays extends APIResource {
+ /**
+ * Returns page metadata for a session replay, including timing information and the
+ * URL of each page's HLS playlist.
+ */
+ retrieve(id: string, options?: Core.RequestOptions): Core.APIPromise {
+ return this._client.get(`/v1/sessions/${id}/replays`, options);
+ }
+
+ /**
+ * Returns an HLS VOD media playlist (.m3u8) for a specific page of a session
+ * replay.
+ */
+ retrievePage(id: string, pageId: string, options?: Core.RequestOptions): Core.APIPromise {
+ return this._client.get(`/v1/sessions/${id}/replays/${pageId}`, {
+ ...options,
+ headers: { Accept: 'application/vnd.apple.mpegurl', ...options?.headers },
+ __binaryResponse: true,
+ });
+ }
+}
+
+export interface ReplayRetrieveResponse {
+ pageCount: number;
+
+ pages: Array;
+}
+
+export namespace ReplayRetrieveResponse {
+ export interface Page {
+ endTimeMs: number;
+
+ pageId: string;
+
+ startTimeMs: number;
+
+ url: string;
+ }
+}
+
+export declare namespace Replays {
+ export { type ReplayRetrieveResponse as ReplayRetrieveResponse };
+}
diff --git a/src/resources/sessions/sessions.ts b/src/resources/sessions/sessions.ts
index d1f4dcd..ac5b37d 100644
--- a/src/resources/sessions/sessions.ts
+++ b/src/resources/sessions/sessions.ts
@@ -9,6 +9,8 @@ import * as LogsAPI from './logs';
import { LogListResponse, Logs, SessionLog } from './logs';
import * as RecordingAPI from './recording';
import { Recording, RecordingRetrieveResponse, SessionRecording } from './recording';
+import * as ReplaysAPI from './replays';
+import { ReplayRetrieveResponse, Replays } from './replays';
import * as UploadsAPI from './uploads';
import { UploadCreateParams, UploadCreateResponse, Uploads } from './uploads';
@@ -17,6 +19,7 @@ export class Sessions extends APIResource {
logs: LogsAPI.Logs = new LogsAPI.Logs(this._client);
recording: RecordingAPI.Recording = new RecordingAPI.Recording(this._client);
uploads: UploadsAPI.Uploads = new UploadsAPI.Uploads(this._client);
+ replays: ReplaysAPI.Replays = new ReplaysAPI.Replays(this._client);
/**
* Create a Session
@@ -437,6 +440,7 @@ Sessions.Downloads = Downloads;
Sessions.Logs = Logs;
Sessions.Recording = Recording;
Sessions.Uploads = Uploads;
+Sessions.Replays = Replays;
export declare namespace Sessions {
export {
@@ -465,4 +469,6 @@ export declare namespace Sessions {
type UploadCreateResponse as UploadCreateResponse,
type UploadCreateParams as UploadCreateParams,
};
+
+ export { Replays as Replays, type ReplayRetrieveResponse as ReplayRetrieveResponse };
}
diff --git a/tests/api-resources/sessions/replays.test.ts b/tests/api-resources/sessions/replays.test.ts
new file mode 100644
index 0000000..4387aaa
--- /dev/null
+++ b/tests/api-resources/sessions/replays.test.ts
@@ -0,0 +1,40 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Browserbase from '@browserbasehq/sdk';
+import { Response } from 'node-fetch';
+
+const client = new Browserbase({
+ apiKey: 'My API Key',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource replays', () => {
+ test('retrieve', async () => {
+ const responsePromise = client.sessions.replays.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ test('retrieve: request options instead of params are passed correctly', async () => {
+ // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
+ await expect(
+ client.sessions.replays.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
+ path: '/_stainless_unknown_path',
+ }),
+ ).rejects.toThrow(Browserbase.NotFoundError);
+ });
+
+ test('retrievePage: request options instead of params are passed correctly', async () => {
+ // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
+ await expect(
+ client.sessions.replays.retrievePage('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', '090', {
+ path: '/_stainless_unknown_path',
+ }),
+ ).rejects.toThrow(Browserbase.NotFoundError);
+ });
+});
From 66d1e2a86b36362afdbeb58706c70fe14d6182a6 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 21:33:19 +0000
Subject: [PATCH 7/8] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 724c919..f40d116 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 23
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-17193ab4cc450d38ce1bfdb1a571001c04b754ba2ff2d2bb2dcf4a898d6c6c41.yml
-openapi_spec_hash: 8ac1c673ce4e72b88bbbf30100b95e8f
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-b2831c9c836f039762834825afdc20569587a825d29ac5c3748c78b009bf059b.yml
+openapi_spec_hash: dd85a934900cb6583f12ebf6117be884
config_hash: 40fbac80e24faaa0dc19e93368bcd821
From 6a077fec88202242773c41a16010a8711c1e6682 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 21:33:42 +0000
Subject: [PATCH 8/8] release: 2.12.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 12 ++++++++++++
package-lock.json | 4 ++--
package.json | 2 +-
src/version.ts | 2 +-
5 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index a9b8e02..7a48e52 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.11.0"
+ ".": "2.12.0"
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7075cbd..460a81b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# Changelog
+## 2.12.0 (2026-05-20)
+
+Full Changelog: [v2.11.0...v2.12.0](https://github.com/browserbase/sdk-node/compare/v2.11.0...v2.12.0)
+
+### Features
+
+* [AI-1748][apps/api] Obtain custom certificates in API during session reservation ([0123bc8](https://github.com/browserbase/sdk-node/commit/0123bc8dd7754b7dad06692cf4d6032492d23576))
+* [AI-1972] - Move fetch v2 handler into /v1/fetch ([397c60f](https://github.com/browserbase/sdk-node/commit/397c60f9a97e8a8a587b00138586ac7a2797cee5))
+* [AI-1993] - Surface structured JSON content on /v2/fetch ([95c8dfa](https://github.com/browserbase/sdk-node/commit/95c8dfa7988a9784df18a5bf12e6298a2d6e3de4))
+* **api:** manual updates ([d18107b](https://github.com/browserbase/sdk-node/commit/d18107b210c64be3ce0541789f74adb47136734f))
+* **api:** manual updates ([cce765a](https://github.com/browserbase/sdk-node/commit/cce765af5828449b905cf647afcc2d90df4bd567))
+
## 2.11.0 (2026-05-13)
Full Changelog: [v2.10.0...v2.11.0](https://github.com/browserbase/sdk-node/compare/v2.10.0...v2.11.0)
diff --git a/package-lock.json b/package-lock.json
index 64a24c0..1298b90 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@browserbasehq/sdk",
- "version": "2.11.0",
+ "version": "2.12.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@browserbasehq/sdk",
- "version": "2.11.0",
+ "version": "2.12.0",
"dependencies": {
"@types/node": "^18.11.18",
"@types/node-fetch": "^2.6.4",
diff --git a/package.json b/package.json
index d836657..c303732 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@browserbasehq/sdk",
- "version": "2.11.0",
+ "version": "2.12.0",
"description": "The official Node.js library for the Browserbase API",
"author": "Browserbase ",
"types": "dist/index.d.ts",
diff --git a/src/version.ts b/src/version.ts
index e91ff8d..e06ef68 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '2.11.0'; // x-release-please-version
+export const VERSION = '2.12.0'; // x-release-please-version