Skip to content

Commit 634fad4

Browse files
Release 2.0.15
1 parent 00ffdea commit 634fad4

File tree

14 files changed

+457
-9
lines changed

14 files changed

+457
-9
lines changed

pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
[project]
22
name = "browser-use-sdk"
3-
dynamic = ["version"]
43

54
[tool.poetry]
65
name = "browser-use-sdk"
7-
version = "2.0.14"
6+
version = "2.0.15"
87
description = "The official Python library for the Browser Use API"
98
readme = "README.md"
109
authors = []

reference.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,85 @@ client.tasks.update_task(
539539
</dl>
540540

541541

542+
</dd>
543+
</dl>
544+
</details>
545+
546+
<details><summary><code>client.tasks.<a href="src/browser_use_sdk/tasks/client.py">get_task_status</a>(...)</code></summary>
547+
<dl>
548+
<dd>
549+
550+
#### 📝 Description
551+
552+
<dl>
553+
<dd>
554+
555+
<dl>
556+
<dd>
557+
558+
Lightweight endpoint optimized for polling task status.
559+
560+
Returns only the task status, output, and cost without loading steps,
561+
files, or session details. Use this endpoint for efficient polling
562+
instead of GET /tasks/{task_id}.
563+
564+
Recommended polling pattern:
565+
1. POST /tasks to create a task
566+
2. Poll GET /tasks/{task_id}/status until status is 'finished' or 'stopped'
567+
3. GET /tasks/{task_id} once at the end for full details including steps
568+
</dd>
569+
</dl>
570+
</dd>
571+
</dl>
572+
573+
#### 🔌 Usage
574+
575+
<dl>
576+
<dd>
577+
578+
<dl>
579+
<dd>
580+
581+
```python
582+
from browser_use_sdk import BrowserUse
583+
584+
client = BrowserUse(
585+
api_key="YOUR_API_KEY",
586+
)
587+
client.tasks.get_task_status(
588+
task_id="task_id",
589+
)
590+
591+
```
592+
</dd>
593+
</dl>
594+
</dd>
595+
</dl>
596+
597+
#### ⚙️ Parameters
598+
599+
<dl>
600+
<dd>
601+
602+
<dl>
603+
<dd>
604+
605+
**task_id:** `str`
606+
607+
</dd>
608+
</dl>
609+
610+
<dl>
611+
<dd>
612+
613+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
614+
615+
</dd>
616+
</dl>
617+
</dd>
618+
</dl>
619+
620+
542621
</dd>
543622
</dl>
544623
</details>
@@ -2936,6 +3015,14 @@ client.skills.execute_skill(
29363015
<dl>
29373016
<dd>
29383017

3018+
**session_id:** `typing.Optional[str]` — Optional session ID (UUID) for IP persistence.
3019+
3020+
</dd>
3021+
</dl>
3022+
3023+
<dl>
3024+
<dd>
3025+
29393026
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
29403027

29413028
</dd>
@@ -3523,6 +3610,14 @@ client.skills_marketplace.execute_skill(
35233610
<dl>
35243611
<dd>
35253612

3613+
**session_id:** `typing.Optional[str]` — Optional session ID (UUID) for IP persistence.
3614+
3615+
</dd>
3616+
</dl>
3617+
3618+
<dl>
3619+
<dd>
3620+
35263621
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
35273622

35283623
</dd>

src/browser_use_sdk/core/client_wrapper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ def __init__(
2222

2323
def get_headers(self) -> typing.Dict[str, str]:
2424
headers: typing.Dict[str, str] = {
25-
"User-Agent": "browser-use-sdk/2.0.14",
25+
"User-Agent": "browser-use-sdk/2.0.15",
2626
"X-Fern-Language": "Python",
2727
"X-Fern-SDK-Name": "browser-use-sdk",
28-
"X-Fern-SDK-Version": "2.0.14",
28+
"X-Fern-SDK-Version": "2.0.15",
2929
**(self.get_custom_headers() or {}),
3030
}
3131
headers["X-Browser-Use-API-Key"] = self.api_key

src/browser_use_sdk/skills/client.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ def execute_skill(
340340
skill_id: str,
341341
*,
342342
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
343+
session_id: typing.Optional[str] = OMIT,
343344
request_options: typing.Optional[RequestOptions] = None,
344345
) -> ExecuteSkillResponse:
345346
"""
@@ -352,6 +353,9 @@ def execute_skill(
352353
parameters : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
353354
Parameters to pass to the skill handler
354355
356+
session_id : typing.Optional[str]
357+
Optional session ID (UUID) for IP persistence.
358+
355359
request_options : typing.Optional[RequestOptions]
356360
Request-specific configuration.
357361
@@ -371,7 +375,9 @@ def execute_skill(
371375
skill_id="skill_id",
372376
)
373377
"""
374-
_response = self._raw_client.execute_skill(skill_id, parameters=parameters, request_options=request_options)
378+
_response = self._raw_client.execute_skill(
379+
skill_id, parameters=parameters, session_id=session_id, request_options=request_options
380+
)
375381
return _response.data
376382

377383
def refine_skill(
@@ -882,6 +888,7 @@ async def execute_skill(
882888
skill_id: str,
883889
*,
884890
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
891+
session_id: typing.Optional[str] = OMIT,
885892
request_options: typing.Optional[RequestOptions] = None,
886893
) -> ExecuteSkillResponse:
887894
"""
@@ -894,6 +901,9 @@ async def execute_skill(
894901
parameters : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
895902
Parameters to pass to the skill handler
896903
904+
session_id : typing.Optional[str]
905+
Optional session ID (UUID) for IP persistence.
906+
897907
request_options : typing.Optional[RequestOptions]
898908
Request-specific configuration.
899909
@@ -922,7 +932,7 @@ async def main() -> None:
922932
asyncio.run(main())
923933
"""
924934
_response = await self._raw_client.execute_skill(
925-
skill_id, parameters=parameters, request_options=request_options
935+
skill_id, parameters=parameters, session_id=session_id, request_options=request_options
926936
)
927937
return _response.data
928938

src/browser_use_sdk/skills/raw_client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,7 @@ def execute_skill(
601601
skill_id: str,
602602
*,
603603
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
604+
session_id: typing.Optional[str] = OMIT,
604605
request_options: typing.Optional[RequestOptions] = None,
605606
) -> HttpResponse[ExecuteSkillResponse]:
606607
"""
@@ -613,6 +614,9 @@ def execute_skill(
613614
parameters : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
614615
Parameters to pass to the skill handler
615616
617+
session_id : typing.Optional[str]
618+
Optional session ID (UUID) for IP persistence.
619+
616620
request_options : typing.Optional[RequestOptions]
617621
Request-specific configuration.
618622
@@ -626,6 +630,7 @@ def execute_skill(
626630
method="POST",
627631
json={
628632
"parameters": parameters,
633+
"sessionId": session_id,
629634
},
630635
headers={
631636
"content-type": "application/json",
@@ -1515,6 +1520,7 @@ async def execute_skill(
15151520
skill_id: str,
15161521
*,
15171522
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
1523+
session_id: typing.Optional[str] = OMIT,
15181524
request_options: typing.Optional[RequestOptions] = None,
15191525
) -> AsyncHttpResponse[ExecuteSkillResponse]:
15201526
"""
@@ -1527,6 +1533,9 @@ async def execute_skill(
15271533
parameters : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
15281534
Parameters to pass to the skill handler
15291535
1536+
session_id : typing.Optional[str]
1537+
Optional session ID (UUID) for IP persistence.
1538+
15301539
request_options : typing.Optional[RequestOptions]
15311540
Request-specific configuration.
15321541
@@ -1540,6 +1549,7 @@ async def execute_skill(
15401549
method="POST",
15411550
json={
15421551
"parameters": parameters,
1552+
"sessionId": session_id,
15431553
},
15441554
headers={
15451555
"content-type": "application/json",

src/browser_use_sdk/skills_marketplace/client.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ def execute_skill(
154154
skill_id: str,
155155
*,
156156
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
157+
session_id: typing.Optional[str] = OMIT,
157158
request_options: typing.Optional[RequestOptions] = None,
158159
) -> ExecuteSkillResponse:
159160
"""
@@ -166,6 +167,9 @@ def execute_skill(
166167
parameters : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
167168
Parameters to pass to the skill handler
168169
170+
session_id : typing.Optional[str]
171+
Optional session ID (UUID) for IP persistence.
172+
169173
request_options : typing.Optional[RequestOptions]
170174
Request-specific configuration.
171175
@@ -185,7 +189,9 @@ def execute_skill(
185189
skill_id="skill_id",
186190
)
187191
"""
188-
_response = self._raw_client.execute_skill(skill_id, parameters=parameters, request_options=request_options)
192+
_response = self._raw_client.execute_skill(
193+
skill_id, parameters=parameters, session_id=session_id, request_options=request_options
194+
)
189195
return _response.data
190196

191197

@@ -353,6 +359,7 @@ async def execute_skill(
353359
skill_id: str,
354360
*,
355361
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
362+
session_id: typing.Optional[str] = OMIT,
356363
request_options: typing.Optional[RequestOptions] = None,
357364
) -> ExecuteSkillResponse:
358365
"""
@@ -365,6 +372,9 @@ async def execute_skill(
365372
parameters : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
366373
Parameters to pass to the skill handler
367374
375+
session_id : typing.Optional[str]
376+
Optional session ID (UUID) for IP persistence.
377+
368378
request_options : typing.Optional[RequestOptions]
369379
Request-specific configuration.
370380
@@ -393,6 +403,6 @@ async def main() -> None:
393403
asyncio.run(main())
394404
"""
395405
_response = await self._raw_client.execute_skill(
396-
skill_id, parameters=parameters, request_options=request_options
406+
skill_id, parameters=parameters, session_id=session_id, request_options=request_options
397407
)
398408
return _response.data

src/browser_use_sdk/skills_marketplace/raw_client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ def execute_skill(
240240
skill_id: str,
241241
*,
242242
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
243+
session_id: typing.Optional[str] = OMIT,
243244
request_options: typing.Optional[RequestOptions] = None,
244245
) -> HttpResponse[ExecuteSkillResponse]:
245246
"""
@@ -252,6 +253,9 @@ def execute_skill(
252253
parameters : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
253254
Parameters to pass to the skill handler
254255
256+
session_id : typing.Optional[str]
257+
Optional session ID (UUID) for IP persistence.
258+
255259
request_options : typing.Optional[RequestOptions]
256260
Request-specific configuration.
257261
@@ -265,6 +269,7 @@ def execute_skill(
265269
method="POST",
266270
json={
267271
"parameters": parameters,
272+
"sessionId": session_id,
268273
},
269274
headers={
270275
"content-type": "application/json",
@@ -547,6 +552,7 @@ async def execute_skill(
547552
skill_id: str,
548553
*,
549554
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
555+
session_id: typing.Optional[str] = OMIT,
550556
request_options: typing.Optional[RequestOptions] = None,
551557
) -> AsyncHttpResponse[ExecuteSkillResponse]:
552558
"""
@@ -559,6 +565,9 @@ async def execute_skill(
559565
parameters : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
560566
Parameters to pass to the skill handler
561567
568+
session_id : typing.Optional[str]
569+
Optional session ID (UUID) for IP persistence.
570+
562571
request_options : typing.Optional[RequestOptions]
563572
Request-specific configuration.
564573
@@ -572,6 +581,7 @@ async def execute_skill(
572581
method="POST",
573582
json={
574583
"parameters": parameters,
584+
"sessionId": session_id,
575585
},
576586
headers={
577587
"content-type": "application/json",

0 commit comments

Comments
 (0)