Skip to main content
GET
/
sessions
/
{session_id}
Get Session
const options = {method: 'GET', headers: {'X-Browser-Use-API-Key': '<api-key>'}};

fetch('https://api.browser-use.com/api/v4/sessions/{session_id}', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
curl --request GET \
--url https://api.browser-use.com/api/v4/sessions/{session_id} \
--header 'X-Browser-Use-API-Key: <api-key>'
import requests

url = "https://api.browser-use.com/api/v4/sessions/{session_id}"

headers = {"X-Browser-Use-API-Key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
{
  "sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "latestRunId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "task": "<string>",
  "title": "<string>",
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2023-11-07T05:31:56Z"
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}

Authorizations

X-Browser-Use-API-Key
string
header
required

Path Parameters

session_id
string<uuid>
required

Response

Successful Response

Lightweight metadata for one V4 session (its most recent run).

Deliberately slim — just what a session list needs (open the conversation, show a label + status + time). The heavy per-run fields (result, error, token/cost totals) live on RunSummary and aren't repeated here.

sessionId
string<uuid>
required
workspaceId
string<uuid> | null
required
latestRunId
string<uuid>
required
task
string
required
title
string | null
required
status
enum<string>
required
Available options:
queued,
dispatching,
running,
completed,
failed,
cancelled
createdAt
string<date-time>
required
updatedAt
string<date-time>
required