/api/public/v1/sessionssessions.list
Open sessions (scope=live) or the last 7 days (scope=recent), optionally for one profile.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
scopequery | "live" | "recent" | No | Default: `"live"`. |
profilequery | string (uuid) | No | Only this profile |
Examples
curl "https://browlix.com/api/public/v1/sessions" \
-H "Authorization: Bearer $BROWLIX_API_KEY"Response
200 with { data, correlation_id }.
| Field | Type | Always present | Description |
|---|---|---|---|
| data | array<object> | Yes | |
| data[].id | string (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[].fence | integer | Yes | Increments every time the profile is opened; stale reports carry an older fence (min -9007199254740991, max 9007199254740991) |
| data[].revision | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data[].headless | boolean | Yes | |
| data[].profile | object | Yes | |
| data[].profile.id | string (uuid) | Yes | |
| data[].profile.os | "windows" | "linux" | Yes | |
| data[].profile.name | string | Yes | |
| data[].profile.number | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data[].profile.group_id | string (uuid) | null | Yes | |
| data[].profile.revision | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data[].device | object | Yes | |
| data[].device.id | string (uuid) | Yes | |
| data[].device.os | "windows" | "linux" | Yes | |
| data[].device.name | string | Yes | |
| data[].device.state | string | Yes | |
| data[].device.freshness | string | Yes | |
| data[].lease | object | null | Yes | The machine's hold on the profile while the session runs (not an app hold — see sessions.acquire) |
| data[].lease.expires_at | string (date-time) | Yes | |
| data[].lease.expired | boolean | Yes | |
| data[].egress | object | null | Yes | |
| data[].egress.ip | string | Yes | |
| data[].egress.checked_at | string (date-time) | Yes | |
| data[].process | object | null | Yes | |
| data[].process.pid | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data[].runtime | object | null | Yes | |
| data[].runtime.channel | string | Yes | |
| data[].runtime.version | string | Yes | |
| data[].identity | object | null | Yes | What the browser actually reported (user agent, languages, timezone, …) |
| data[].mismatches | array<object> | Yes | |
| data[].remote | object | null | Yes | |
| data[].proxy_id | string (uuid) | null | Yes | |
| data[].run_id | string (uuid) | null | Yes | |
| data[].run_target_id | string (uuid) | null | Yes | |
| data[].started_by | string | null | Yes | |
| data[].stopped_by | string | null | Yes | |
| data[].stop_reason | string | null | Yes | |
| data[].reason_code | string | null | Yes | |
| data[].network_reason | string | null | Yes | |
| data[].ready_ms | integer | null | Yes | |
| data[].ready_at | string (date-time) | null | Yes | |
| data[].closed_at | string (date-time) | null | Yes | |
| data[].created_at | string (date-time) | Yes | |
| data[].updated_at | string (date-time) | Yes | |
| data[].attach_open | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data[].pending_changes | boolean | Yes | |
| data[].profile_revision | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| correlation_id | string (uuid) | Yes |
Errors
| Code | HTTP | Retryable |
|---|---|---|
| UNAUTHENTICATED | 401 | No |
| FORBIDDEN | 403 | No |
| RATE_LIMITED | 429 | Yes |
| VALIDATION_FAILED | 422 | No |
| DEPENDENCY_UNAVAILABLE | 503 | Yes |
| UNKNOWN | 500 | No |
