Skip to content

Commit f730bbb

Browse files
authored
Merge pull request #5 from browser-use/release-please--branches--main--changes--next--components--browser-use-sdk
release: 0.2.0
2 parents 61a0d0f + 56de3f6 commit f730bbb

33 files changed

+1492
-311
lines changed

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "0.1.1"
2+
".": "0.2.0"
33
}

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 22
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browser-use%2Fbrowser-use-86040fd18419e7b4e0947660d9c0ff1abe21550528d2d2a549736cd16f85a92d.yml
3-
openapi_spec_hash: 7c5de9d0f633db35fd9e250fcc834d1f
4-
config_hash: 99e0e445bc20c5723030c315bab52940
1+
configured_endpoints: 26
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browser-use%2Fbrowser-use-9ff5409663c58ae9e3ecc9ac764956189e3a70600f5ba1b961bb1dedf0208271.yml
3+
openapi_spec_hash: 9865acb75430d9b799502acbae860df0
4+
config_hash: 9d52be5177b2ede4cb0633c04f4cc4ef

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## 0.2.0 (2025-08-15)
4+
5+
Full Changelog: [v0.1.1...v0.2.0](https://github.com/browser-use/browser-use-node/compare/v0.1.1...v0.2.0)
6+
7+
### Features
8+
9+
* **api:** api update ([3df1a94](https://github.com/browser-use/browser-use-node/commit/3df1a94275d67ce41756227e6f0b749b2c3ed009))
10+
* **api:** manual updates ([7183cef](https://github.com/browser-use/browser-use-node/commit/7183cef2c497b83985d368cb3a559fc0e11e4082))
11+
312
## 0.1.1 (2025-08-14)
413

514
Full Changelog: [v0.1.0...v0.1.1](https://github.com/browser-use/browser-use-node/compare/v0.1.0...v0.1.1)

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ const client = new BrowserUse({
2626
apiKey: process.env['BROWSER_USE_API_KEY'], // This is the default and can be omitted
2727
});
2828

29-
const tasks = await client.tasks.list();
29+
const me = await client.users.me.retrieve();
3030

31-
console.log(tasks.items);
31+
console.log(me.additionalCreditsBalanceUsd);
3232
```
3333

3434
### Request & Response types
@@ -43,7 +43,7 @@ const client = new BrowserUse({
4343
apiKey: process.env['BROWSER_USE_API_KEY'], // This is the default and can be omitted
4444
});
4545

46-
const tasks: BrowserUse.TaskListResponse = await client.tasks.list();
46+
const me: BrowserUse.Users.MeRetrieveResponse = await client.users.me.retrieve();
4747
```
4848

4949
Documentation for each method, request param, and response field are available in docstrings and will appear on hover in most modern editors.
@@ -56,7 +56,7 @@ a subclass of `APIError` will be thrown:
5656

5757
<!-- prettier-ignore -->
5858
```ts
59-
const tasks = await client.tasks.list().catch(async (err) => {
59+
const me = await client.users.me.retrieve().catch(async (err) => {
6060
if (err instanceof BrowserUse.APIError) {
6161
console.log(err.status); // 400
6262
console.log(err.name); // BadRequestError
@@ -96,7 +96,7 @@ const client = new BrowserUse({
9696
});
9797

9898
// Or, configure per-request:
99-
await client.tasks.list({
99+
await client.users.me.retrieve({
100100
maxRetries: 5,
101101
});
102102
```
@@ -113,7 +113,7 @@ const client = new BrowserUse({
113113
});
114114

115115
// Override per-request:
116-
await client.tasks.list({
116+
await client.users.me.retrieve({
117117
timeout: 5 * 1000,
118118
});
119119
```
@@ -136,13 +136,13 @@ Unlike `.asResponse()` this method consumes the body, returning once it is parse
136136
```ts
137137
const client = new BrowserUse();
138138

139-
const response = await client.tasks.list().asResponse();
139+
const response = await client.users.me.retrieve().asResponse();
140140
console.log(response.headers.get('X-My-Header'));
141141
console.log(response.statusText); // access the underlying Response object
142142

143-
const { data: tasks, response: raw } = await client.tasks.list().withResponse();
143+
const { data: me, response: raw } = await client.users.me.retrieve().withResponse();
144144
console.log(raw.headers.get('X-My-Header'));
145-
console.log(tasks.items);
145+
console.log(me.additionalCreditsBalanceUsd);
146146
```
147147

148148
### Logging
@@ -222,7 +222,7 @@ parameter. This library doesn't validate at runtime that the request matches the
222222
send will be sent as-is.
223223

224224
```ts
225-
client.tasks.list({
225+
client.users.me.retrieve({
226226
// ...
227227
// @ts-expect-error baz is not yet public
228228
baz: 'undocumented option',

api.md

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,49 @@
1+
# Users
2+
3+
## Me
4+
5+
Types:
6+
7+
- <code><a href="./src/resources/users/me/me.ts">MeRetrieveResponse</a></code>
8+
9+
Methods:
10+
11+
- <code title="get /users/me">client.users.me.<a href="./src/resources/users/me/me.ts">retrieve</a>() -> MeRetrieveResponse</code>
12+
13+
### Files
14+
15+
Types:
16+
17+
- <code><a href="./src/resources/users/me/files.ts">FileCreatePresignedURLResponse</a></code>
18+
19+
Methods:
20+
21+
- <code title="post /users/me/files/presigned-url">client.users.me.files.<a href="./src/resources/users/me/files.ts">createPresignedURL</a>({ ...params }) -> FileCreatePresignedURLResponse</code>
22+
123
# Tasks
224

325
Types:
426

27+
- <code><a href="./src/resources/tasks.ts">FileView</a></code>
528
- <code><a href="./src/resources/tasks.ts">LlmModel</a></code>
29+
- <code><a href="./src/resources/tasks.ts">TaskItemView</a></code>
630
- <code><a href="./src/resources/tasks.ts">TaskStatus</a></code>
31+
- <code><a href="./src/resources/tasks.ts">TaskStepView</a></code>
732
- <code><a href="./src/resources/tasks.ts">TaskView</a></code>
8-
- <code><a href="./src/resources/tasks.ts">TaskRetrieveResponse</a></code>
933
- <code><a href="./src/resources/tasks.ts">TaskListResponse</a></code>
10-
- <code><a href="./src/resources/tasks.ts">TaskRetrieveLogsResponse</a></code>
11-
- <code><a href="./src/resources/tasks.ts">TaskRetrieveOutputFileResponse</a></code>
34+
- <code><a href="./src/resources/tasks.ts">TaskGetLogsResponse</a></code>
35+
- <code><a href="./src/resources/tasks.ts">TaskGetOutputFileResponse</a></code>
36+
- <code><a href="./src/resources/tasks.ts">TaskGetUserUploadedFileResponse</a></code>
1237

1338
Methods:
1439

1540
- <code title="post /tasks">client.tasks.<a href="./src/resources/tasks.ts">create</a>({ ...params }) -> TaskView</code>
16-
- <code title="get /tasks/{task_id}">client.tasks.<a href="./src/resources/tasks.ts">retrieve</a>(taskID, { ...params }) -> TaskRetrieveResponse</code>
41+
- <code title="get /tasks/{task_id}">client.tasks.<a href="./src/resources/tasks.ts">retrieve</a>(taskID) -> TaskView</code>
1742
- <code title="patch /tasks/{task_id}">client.tasks.<a href="./src/resources/tasks.ts">update</a>(taskID, { ...params }) -> TaskView</code>
1843
- <code title="get /tasks">client.tasks.<a href="./src/resources/tasks.ts">list</a>({ ...params }) -> TaskListResponse</code>
19-
- <code title="get /tasks/{task_id}/logs">client.tasks.<a href="./src/resources/tasks.ts">retrieveLogs</a>(taskID) -> TaskRetrieveLogsResponse</code>
20-
- <code title="get /tasks/{task_id}/output-files/{file_name}">client.tasks.<a href="./src/resources/tasks.ts">retrieveOutputFile</a>(fileName, { ...params }) -> TaskRetrieveOutputFileResponse</code>
44+
- <code title="get /tasks/{task_id}/logs">client.tasks.<a href="./src/resources/tasks.ts">getLogs</a>(taskID) -> TaskGetLogsResponse</code>
45+
- <code title="get /tasks/{task_id}/output-files/{file_id}">client.tasks.<a href="./src/resources/tasks.ts">getOutputFile</a>(fileID, { ...params }) -> TaskGetOutputFileResponse</code>
46+
- <code title="get /tasks/{task_id}/user-uploaded-files/{file_id}">client.tasks.<a href="./src/resources/tasks.ts">getUserUploadedFile</a>(fileID, { ...params }) -> TaskGetUserUploadedFileResponse</code>
2147

2248
# Sessions
2349

@@ -32,19 +58,19 @@ Methods:
3258
- <code title="get /sessions/{session_id}">client.sessions.<a href="./src/resources/sessions/sessions.ts">retrieve</a>(sessionID, { ...params }) -> SessionView</code>
3359
- <code title="patch /sessions/{session_id}">client.sessions.<a href="./src/resources/sessions/sessions.ts">update</a>(sessionID, { ...params }) -> SessionView</code>
3460
- <code title="get /sessions">client.sessions.<a href="./src/resources/sessions/sessions.ts">list</a>({ ...params }) -> SessionListResponse</code>
61+
- <code title="delete /sessions/{session_id}">client.sessions.<a href="./src/resources/sessions/sessions.ts">delete</a>(sessionID) -> void</code>
3562

3663
## PublicShare
3764

3865
Types:
3966

4067
- <code><a href="./src/resources/sessions/public-share.ts">ShareView</a></code>
41-
- <code><a href="./src/resources/sessions/public-share.ts">PublicShareDeleteResponse</a></code>
4268

4369
Methods:
4470

4571
- <code title="post /sessions/{session_id}/public-share">client.sessions.publicShare.<a href="./src/resources/sessions/public-share.ts">create</a>(sessionID) -> ShareView</code>
4672
- <code title="get /sessions/{session_id}/public-share">client.sessions.publicShare.<a href="./src/resources/sessions/public-share.ts">retrieve</a>(sessionID) -> ShareView</code>
47-
- <code title="delete /sessions/{session_id}/public-share">client.sessions.publicShare.<a href="./src/resources/sessions/public-share.ts">delete</a>(sessionID) -> unknown</code>
73+
- <code title="delete /sessions/{session_id}/public-share">client.sessions.publicShare.<a href="./src/resources/sessions/public-share.ts">delete</a>(sessionID) -> void</code>
4874

4975
# BrowserProfiles
5076

@@ -53,28 +79,26 @@ Types:
5379
- <code><a href="./src/resources/browser-profiles.ts">BrowserProfileView</a></code>
5480
- <code><a href="./src/resources/browser-profiles.ts">ProxyCountryCode</a></code>
5581
- <code><a href="./src/resources/browser-profiles.ts">BrowserProfileListResponse</a></code>
56-
- <code><a href="./src/resources/browser-profiles.ts">BrowserProfileDeleteResponse</a></code>
5782

5883
Methods:
5984

6085
- <code title="post /browser-profiles">client.browserProfiles.<a href="./src/resources/browser-profiles.ts">create</a>({ ...params }) -> BrowserProfileView</code>
6186
- <code title="get /browser-profiles/{profile_id}">client.browserProfiles.<a href="./src/resources/browser-profiles.ts">retrieve</a>(profileID) -> BrowserProfileView</code>
6287
- <code title="patch /browser-profiles/{profile_id}">client.browserProfiles.<a href="./src/resources/browser-profiles.ts">update</a>(profileID, { ...params }) -> BrowserProfileView</code>
6388
- <code title="get /browser-profiles">client.browserProfiles.<a href="./src/resources/browser-profiles.ts">list</a>({ ...params }) -> BrowserProfileListResponse</code>
64-
- <code title="delete /browser-profiles/{profile_id}">client.browserProfiles.<a href="./src/resources/browser-profiles.ts">delete</a>(profileID) -> unknown</code>
89+
- <code title="delete /browser-profiles/{profile_id}">client.browserProfiles.<a href="./src/resources/browser-profiles.ts">delete</a>(profileID) -> void</code>
6590

6691
# AgentProfiles
6792

6893
Types:
6994

7095
- <code><a href="./src/resources/agent-profiles.ts">AgentProfileView</a></code>
7196
- <code><a href="./src/resources/agent-profiles.ts">AgentProfileListResponse</a></code>
72-
- <code><a href="./src/resources/agent-profiles.ts">AgentProfileDeleteResponse</a></code>
7397

7498
Methods:
7599

76100
- <code title="post /agent-profiles">client.agentProfiles.<a href="./src/resources/agent-profiles.ts">create</a>({ ...params }) -> AgentProfileView</code>
77101
- <code title="get /agent-profiles/{profile_id}">client.agentProfiles.<a href="./src/resources/agent-profiles.ts">retrieve</a>(profileID) -> AgentProfileView</code>
78102
- <code title="patch /agent-profiles/{profile_id}">client.agentProfiles.<a href="./src/resources/agent-profiles.ts">update</a>(profileID, { ...params }) -> AgentProfileView</code>
79103
- <code title="get /agent-profiles">client.agentProfiles.<a href="./src/resources/agent-profiles.ts">list</a>({ ...params }) -> AgentProfileListResponse</code>
80-
- <code title="delete /agent-profiles/{profile_id}">client.agentProfiles.<a href="./src/resources/agent-profiles.ts">delete</a>(profileID) -> unknown</code>
104+
- <code title="delete /agent-profiles/{profile_id}">client.agentProfiles.<a href="./src/resources/agent-profiles.ts">delete</a>(profileID) -> void</code>

examples/demo.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#!/usr/bin/env -S npm run tsn -T
22

33
import { BrowserUse } from 'browser-use-sdk';
4-
import { TaskView } from 'browser-use-sdk/resources';
54
import { spinner } from './utils';
65

76
// gets API Key from environment variable BROWSER_USE_API_KEY
@@ -18,7 +17,7 @@ async function main() {
1817

1918
poll: do {
2019
// Wait for Task to Finish
21-
const status = (await browseruse.tasks.retrieve(rsp.id, { statusOnly: false })) as TaskView;
20+
const status = await browseruse.tasks.retrieve(rsp.id);
2221

2322
switch (status.status) {
2423
case 'started':

examples/stream.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#!/usr/bin/env -S npm run tsn -T
2+
3+
import { BrowserUse } from 'browser-use-sdk';
4+
5+
async function main() {
6+
// gets API Key from environment variable BROWSER_USE_API_KEY
7+
const browseruse = new BrowserUse();
8+
9+
console.log('Creating task and starting stream...\n');
10+
11+
// Create a task and get the stream
12+
const stream = browseruse.tasks.stream({
13+
task: 'What is the weather in San Francisco?',
14+
});
15+
16+
// Get a reader from the stream
17+
const reader = stream.getReader();
18+
const decoder = new TextDecoder();
19+
20+
try {
21+
// Read the stream chunk by chunk
22+
while (true) {
23+
const { done, value } = await reader.read();
24+
25+
if (done) {
26+
console.log('\nStream completed');
27+
break;
28+
}
29+
30+
// Decode the chunk and parse the Server-Sent Events format
31+
const chunk = decoder.decode(value, { stream: true });
32+
const lines = chunk.split('\n');
33+
34+
for (const line of lines) {
35+
if (line.startsWith('event: ')) {
36+
const event = line.slice(7);
37+
process.stdout.write(`\n[${event}] `);
38+
} else if (line.startsWith('data: ')) {
39+
const data = line.slice(6);
40+
if (data.trim() && data !== '{}') {
41+
try {
42+
const parsed = JSON.parse(data) as BrowserUse.TaskView;
43+
44+
process.stdout.write(`${parsed.status}`);
45+
if (parsed.sessionLiveUrl) {
46+
process.stdout.write(` | Live URL: ${parsed.sessionLiveUrl}`);
47+
}
48+
49+
if (parsed.steps.length > 0) {
50+
const latestStep = parsed.steps[parsed.steps.length - 1];
51+
process.stdout.write(` | ${latestStep!.nextGoal}`);
52+
}
53+
54+
if (parsed.status === 'finished') {
55+
process.stdout.write(`\n\nOUTPUT: ${parsed.doneOutput}`);
56+
// Close the reader and exit the main loop when task is finished
57+
reader.releaseLock();
58+
return;
59+
}
60+
} catch (e) {
61+
process.stdout.write(`Raw data: ${data}`);
62+
}
63+
}
64+
}
65+
}
66+
}
67+
} catch (error) {
68+
console.error('Error reading stream:', error);
69+
} finally {
70+
reader.releaseLock();
71+
}
72+
}
73+
74+
main().catch(console.error);

examples/structured-output.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,16 @@ async function main() {
2323
const stop = spinner(() => log);
2424

2525
// Create Task
26-
const rsp = await browseruse.tasks.createWithStructuredOutput({
26+
const rsp = await browseruse.tasks.create({
2727
task: 'Extract top 10 Hacker News posts and return the title, url, and score',
2828
structuredOutputJson: TaskOutput,
2929
});
3030

3131
poll: do {
3232
// Wait for Task to Finish
33-
const status = await browseruse.tasks.retrieveWithStructuredOutput(rsp.id, {
34-
structuredOutputJson: TaskOutput,
33+
const status = await browseruse.tasks.retrieve({
34+
taskId: rsp.id,
35+
schema: TaskOutput,
3536
});
3637

3738
switch (status.status) {
@@ -52,12 +53,16 @@ async function main() {
5253
}
5354

5455
case 'finished':
56+
if (status.doneOutput == null) {
57+
throw new Error('No output');
58+
}
59+
5560
stop();
5661

5762
// Print Structured Output
5863
console.log('TOP POSTS:');
5964

60-
for (const post of status.doneOutput!.posts) {
65+
for (const post of status.doneOutput.posts) {
6166
console.log(` - ${post.title} (${post.score}) ${post.url}`);
6267
}
6368

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "browser-use-sdk",
3-
"version": "0.1.1",
3+
"version": "0.2.0",
44
"description": "The official TypeScript library for the Browser Use API",
55
"author": "Browser Use <[email protected]>",
66
"types": "dist/index.d.ts",

0 commit comments

Comments
 (0)