Skip to main content
GET/api/public/v1/sessions

sessions.list

Open sessions (scope=live) or the last 7 days (scope=recent), optionally for one profile.

Capability: session.readMCP tool: sessions_list
View as Markdown

Parameters

NameTypeRequiredDescription
scopequery"live" | "recent"NoDefault: `"live"`.
profilequerystring (uuid)NoOnly this profile

Examples

curl "https://browlix.com/api/public/v1/sessions" \
  -H "Authorization: Bearer $BROWLIX_API_KEY"

Response

200 with { data, correlation_id }.

FieldTypeAlways presentDescription
dataarray<object>Yes
data[].idstring (uuid)Yes
data[].lifecycle"queued" | "preflight" | "starting" | "ready" | "quiescing" | "stopping" | "closed" | "failed" | …Yes
data[].control"free" | "reserved" | "controlled" | "handoff_pending" | "revoked" | "uncertain"Yes
data[].connectivity"connected" | "reconnecting" | "offline" | "unknown"Yes
data[].network"unchecked" | "checking" | "healthy" | "unhealthy" | "unknown"Yes
data[].sync"clean" | "dirty" | "snapshotting" | "upload_pending" | "committing" | "committed" | "conflict" | "failed"Yes
data[].fenceintegerYesIncrements every time the profile is opened; stale reports carry an older fence (min -9007199254740991, max 9007199254740991)
data[].revisionintegerYes(min -9007199254740991, max 9007199254740991)
data[].headlessbooleanYes
data[].profileobjectYes
data[].profile.idstring (uuid)Yes
data[].profile.os"windows" | "linux"Yes
data[].profile.namestringYes
data[].profile.numberintegerYes(min -9007199254740991, max 9007199254740991)
data[].profile.group_idstring (uuid) | nullYes
data[].profile.revisionintegerYes(min -9007199254740991, max 9007199254740991)
data[].deviceobjectYes
data[].device.idstring (uuid)Yes
data[].device.os"windows" | "linux"Yes
data[].device.namestringYes
data[].device.statestringYes
data[].device.freshnessstringYes
data[].leaseobject | nullYesThe machine's hold on the profile while the session runs (not an app hold — see sessions.acquire)
data[].lease.expires_atstring (date-time)Yes
data[].lease.expiredbooleanYes
data[].egressobject | nullYes
data[].egress.ipstringYes
data[].egress.checked_atstring (date-time)Yes
data[].processobject | nullYes
data[].process.pidintegerYes(min -9007199254740991, max 9007199254740991)
data[].runtimeobject | nullYes
data[].runtime.channelstringYes
data[].runtime.versionstringYes
data[].identityobject | nullYesWhat the browser actually reported (user agent, languages, timezone, …)
data[].mismatchesarray<object>Yes
data[].remoteobject | nullYes
data[].proxy_idstring (uuid) | nullYes
data[].run_idstring (uuid) | nullYes
data[].run_target_idstring (uuid) | nullYes
data[].started_bystring | nullYes
data[].stopped_bystring | nullYes
data[].stop_reasonstring | nullYes
data[].reason_codestring | nullYes
data[].network_reasonstring | nullYes
data[].ready_msinteger | nullYes
data[].ready_atstring (date-time) | nullYes
data[].closed_atstring (date-time) | nullYes
data[].created_atstring (date-time)Yes
data[].updated_atstring (date-time)Yes
data[].attach_openintegerYes(min -9007199254740991, max 9007199254740991)
data[].pending_changesbooleanYes
data[].profile_revisionintegerYes(min -9007199254740991, max 9007199254740991)
correlation_idstring (uuid)Yes

New fields can appear at any time; ignore the ones you do not know.

Errors

CodeHTTPRetryable
UNAUTHENTICATED401No
FORBIDDEN403No
RATE_LIMITED429Yes
VALIDATION_FAILED422No
DEPENDENCY_UNAVAILABLE503Yes
UNKNOWN500No

Every error code and when to retry

All operations