Skip to Content
webagent docs
API reference

Sessions

Create, inspect, control and stop browser sessions.

Open as .md
GET
/v1/sessions

List sessions, newest first. Any of cursor, limit, state, since, until, q gives the paged reply { items, nextCursor? }, else { sessions }

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Query Parameters

limit?integer
Range1 <= value <= 100
Default50
cursor?string
Length1 <= length <= 500
state?array<>
Items1 <= items <= 5
since?integer
Range0 <= value <= 9007199254740991
until?integer
Range0 <= value <= 9007199254740991
q?string
Lengthlength <= 200

Response Body

OK

application/json
  1. response
items*array<>
nextCursor?string
Length1 <= length <= 500
Example Request
curl -X GET 'https://api.us.webagent.lookover.ai/v1/sessions'
Example Response
{  "items": [    {      "id": "string",      "tenantId": "string",      "projectId": "string",      "homeRegion": "us",      "executionRegion": "us",      "status": "starting",      "engine": "chromium",      "browser": "chromium",      "engineRef": {        "id": "string",        "version": "string",        "name": "string"      },      "pool": "shared",      "createdAt": "2019-08-24T14:15:22Z",      "endedAt": "2019-08-24T14:15:22Z",      "endReason": "closed",      "title": "string",      "queue": {        "position": 1,        "etaSeconds": 0,        "reason": "vpc_full",        "queuedAt": "2019-08-24T14:15:22Z",        "expiresAt": "2019-08-24T14:15:22Z"      },      "lastUrl": "string",      "durationMs": 0,      "costMicros": 0,      "startedBy": {        "kind": "key",        "id": "string",        "name": "string"      }    }  ],  "nextCursor": "string"}

Create a browser session

POST
/v1/sessions

Create a browser session (empty body: every default). startUrl opens a page before the session is live; a blocked address is 403 navigation_blocked

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Header Parameters

Idempotency-Key?string

Retry safely: the same key and body replay the first answer.

Length1 <= length <= 255

Request Body

application/json
  1. body
engine?string
Value in"chromium""firefox""webkit"
device?string
block?
headers?array<>
Itemsitems <= 20
record?boolean
chromePreferences?
captureBodies?boolean|
initScripts?array<>
Itemsitems <= 10
geolocation?
reduceMotion?boolean
instrument?array<>
Items1 <= items <= 2
cpuThrottle?number
Range1 <= value <= 20
network?|
cache?string
Value in"default""disabled"
viewport?
userAgent?string
Lengthlength <= 512
locale?string
Lengthlength <= 35
timezone?string
Lengthlength <= 64
blockAds?boolean
proxyUrl?string
Formaturi
useProxy?boolean|
dedicatedIp?boolean
isSelenium?boolean
idleTimeoutMs?integer
Range10000 <= value <= 86400000
maxDurationMs?integer
Range10000 <= value <= 86400000
allowHosts?array<>
Itemsitems <= 100
followPopups?boolean
startUrl?string
Formaturi
Lengthlength <= 2048
acceptDialogs?boolean
metadata?
browser?string
Value in"chromium""firefox""webkit"
engineId?string
Match^eng_(us|in)_[0-9a-z]{24}$
engineVersion?string
Match^\d+\.\d+\.\d+$
Lengthlength <= 40
proxyId?string
Match^prx_(us|in)_[0-9a-z]{24}$
region?string
Value in"us""in"
profileId?string
Match^prof_(us|in)_[0-9a-z]{24}$
persistProfile?boolean
profileName?string
Length1 <= length <= 100
extensionIds?array<>
Itemsitems <= 10
credentials?boolean|
siteAccess?boolean|
botAuth?boolean
waitForCapacityMs?integer
Range0 <= value <= 30000
queueForCapacity?

Response Body

OK

application/json
  1. response
id*string
Match^sess_(us|in)_[0-9a-z]{24}$
tenantId*string
Match^ten_(us|in)_[0-9a-z]{24}$
projectId*string
Match^prj_(us|in)_[0-9a-z]{24}$
homeRegion*string
Value in"us""in"
executionRegion*string
Value in"us""in"
status*string
Value in"starting""live""paused""ended""lost"
engine*string
Value in"chromium""firefox""webkit"
browser?string
Value in"chromium""firefox""webkit"
engineRef?
pool*string
Value in"shared""job""isolated""dedicated"
createdAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
endedAt?string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
endReason?string
Value in"closed""idle_timeout""max_duration""runner_lost""error""memory_limit""capacity_timeout"
title?string
Lengthlength <= 300
queue?
token*string
tokenExpiresAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
endpoints*
Example Request
curl -X POST 'https://api.us.webagent.lookover.ai/v1/sessions' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "id": "string",  "tenantId": "string",  "projectId": "string",  "homeRegion": "us",  "executionRegion": "us",  "status": "starting",  "engine": "chromium",  "browser": "chromium",  "engineRef": {    "id": "string",    "version": "string",    "name": "string"  },  "pool": "shared",  "createdAt": "2019-08-24T14:15:22Z",  "endedAt": "2019-08-24T14:15:22Z",  "endReason": "closed",  "title": "string",  "queue": {    "position": 1,    "etaSeconds": 0,    "reason": "vpc_full",    "queuedAt": "2019-08-24T14:15:22Z",    "expiresAt": "2019-08-24T14:15:22Z"  },  "token": "string",  "tokenExpiresAt": "2019-08-24T14:15:22Z",  "endpoints": {    "http": "http://example.com",    "cdp": "http://example.com",    "bidi": "http://example.com",    "playwright": "http://example.com",    "live": "http://example.com"  }}

Get a session record

GET
/v1/sessions/{id}

Get a session record (with endpoints while it is starting, live or paused)

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Response Body

OK

application/json
  1. response
id*string
Match^sess_(us|in)_[0-9a-z]{24}$
tenantId*string
Match^ten_(us|in)_[0-9a-z]{24}$
projectId*string
Match^prj_(us|in)_[0-9a-z]{24}$
homeRegion*string
Value in"us""in"
executionRegion*string
Value in"us""in"
status*string
Value in"starting""live""paused""ended""lost"
engine*string
Value in"chromium""firefox""webkit"
browser?string
Value in"chromium""firefox""webkit"
engineRef?
pool*string
Value in"shared""job""isolated""dedicated"
createdAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
endedAt?string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
endReason?string
Value in"closed""idle_timeout""max_duration""runner_lost""error""memory_limit""capacity_timeout"
title?string
Lengthlength <= 300
queue?
endpoints?
startedBy?|||||
Example Request
curl -X GET 'https://api.us.webagent.lookover.ai/v1/sessions/string'
Example Response
{  "id": "string",  "tenantId": "string",  "projectId": "string",  "homeRegion": "us",  "executionRegion": "us",  "status": "starting",  "engine": "chromium",  "browser": "chromium",  "engineRef": {    "id": "string",    "version": "string",    "name": "string"  },  "pool": "shared",  "createdAt": "2019-08-24T14:15:22Z",  "endedAt": "2019-08-24T14:15:22Z",  "endReason": "closed",  "title": "string",  "queue": {    "position": 1,    "etaSeconds": 0,    "reason": "vpc_full",    "queuedAt": "2019-08-24T14:15:22Z",    "expiresAt": "2019-08-24T14:15:22Z"  },  "endpoints": {    "http": "http://example.com",    "cdp": "http://example.com",    "bidi": "http://example.com",    "playwright": "http://example.com",    "live": "http://example.com"  },  "startedBy": {    "kind": "key",    "id": "string",    "name": "string"  }}

Rename a session

PATCH
/v1/sessions/{id}

Rename a session ({ title }, 1..120 characters, trimmed). Any member who can see it; a title set this way is never replaced by an automatic one

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Request Body

application/json
  1. body
title*string
Length1 <= length <= 120

Response Body

OK

application/json
  1. response
id*string
Match^sess_(us|in)_[0-9a-z]{24}$
tenantId*string
Match^ten_(us|in)_[0-9a-z]{24}$
projectId*string
Match^prj_(us|in)_[0-9a-z]{24}$
homeRegion*string
Value in"us""in"
executionRegion*string
Value in"us""in"
status*string
Value in"starting""live""paused""ended""lost"
engine*string
Value in"chromium""firefox""webkit"
browser?string
Value in"chromium""firefox""webkit"
engineRef?
pool*string
Value in"shared""job""isolated""dedicated"
createdAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
endedAt?string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
endReason?string
Value in"closed""idle_timeout""max_duration""runner_lost""error""memory_limit""capacity_timeout"
title?string
Lengthlength <= 300
queue?
endpoints?
startedBy?|||||
Example Request
curl -X PATCH 'https://api.us.webagent.lookover.ai/v1/sessions/string' \  -H 'Content-Type: application/json' \  -d '{  "title": "string"}'
Example Response
{  "id": "string",  "tenantId": "string",  "projectId": "string",  "homeRegion": "us",  "executionRegion": "us",  "status": "starting",  "engine": "chromium",  "browser": "chromium",  "engineRef": {    "id": "string",    "version": "string",    "name": "string"  },  "pool": "shared",  "createdAt": "2019-08-24T14:15:22Z",  "endedAt": "2019-08-24T14:15:22Z",  "endReason": "closed",  "title": "string",  "queue": {    "position": 1,    "etaSeconds": 0,    "reason": "vpc_full",    "queuedAt": "2019-08-24T14:15:22Z",    "expiresAt": "2019-08-24T14:15:22Z"  },  "endpoints": {    "http": "http://example.com",    "cdp": "http://example.com",    "bidi": "http://example.com",    "playwright": "http://example.com",    "live": "http://example.com"  },  "startedBy": {    "kind": "key",    "id": "string",    "name": "string"  }}

Stop a session

DELETE
/v1/sessions/{id}

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Response Body

OK

application/json
  1. response
deleted*boolean
closed*boolean
Example Request
curl -X DELETE 'https://api.us.webagent.lookover.ai/v1/sessions/string'
Example Response
{  "deleted": true,  "closed": true}
GET
/v1/sessions/{id}/logs

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Query Parameters

after?integer
Range0 <= value <= 9007199254740991
Default0
limit?integer
Range1 <= value <= 1000
Default200

Response Body

OK

application/json
  1. response
events*array<>
next?integer
Range0 <= value <= 9007199254740991
Example Request
curl -X GET 'https://api.us.webagent.lookover.ai/v1/sessions/string/logs'
Example Response
{  "events": [    {      "at": 0,      "sessionId": "string",      "type": "timeline",      "level": "string",      "tabId": "string",      "url": "string",      "text": "string",      "data": {        "property1": null,        "property2": null      },      "truncated": true,      "property1": null,      "property2": null    }  ],  "next": 0}
GET
/v1/sessions/{id}/logs.ndjson

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Response Body

Redirect to a short-lived URL of the log

Example Request
curl -X GET 'https://api.us.webagent.lookover.ai/v1/sessions/string/logs.ndjson'
Example Response
Empty
GET
/v1/sessions/{id}/recording

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Response Body

Redirect to a short-lived URL of the recording

Example Request
curl -X GET 'https://api.us.webagent.lookover.ai/v1/sessions/string/recording'
Example Response
Empty
GET
/v1/sessions/{id}/recording/thumbnail

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Response Body

Redirect to a short-lived URL of the thumbnail

Example Request
curl -X GET 'https://api.us.webagent.lookover.ai/v1/sessions/string/recording/thumbnail'
Example Response
Empty
POST
/v1/sessions/{id}/share

A signed share link to the live view or the recording (empty body: live, view only, 1 h)

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Request Body

application/json
  1. body
kind?string
Default"live"
Value in"live""replay"
interactive?boolean
Defaultfalse
ttlSeconds?integer
Range60 <= value <= 604800
Default3600

Response Body

OK

application/json
  1. response
url*string
Formaturi
expiresAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
Example Request
curl -X POST 'https://api.us.webagent.lookover.ai/v1/sessions/string/share' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "url": "http://example.com",  "expiresAt": "2019-08-24T14:15:22Z"}
DELETE
/v1/sessions/{id}/share

Revoke every share link issued so far for the session; links made afterwards work (same role as creating one)

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Response Body

OK

application/json
  1. response
sessionId*string
Match^sess_(us|in)_[0-9a-z]{24}$
revokedAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
Example Request
curl -X DELETE 'https://api.us.webagent.lookover.ai/v1/sessions/string/share'
Example Response
{  "sessionId": "string",  "revokedAt": "2019-08-24T14:15:22Z"}
POST
/v1/sessions/{id}/token

Authorization

headerAuthorizationBearer <token>

An API key (wa_<region>_…) or a dashboard access token.

Path Parameters

id*string
Match^sess_(us|in)_[0-9a-z]{24}$

Response Body

OK

application/json
  1. response
token*string
tokenExpiresAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
Example Request
curl -X POST 'https://api.us.webagent.lookover.ai/v1/sessions/string/token'
Example Response
{  "token": "string",  "tokenExpiresAt": "2019-08-24T14:15:22Z"}
GET
/v1/share/{token}

Open a share link (no API key): live socket + share token, or the recording URL

Path Parameters

token*string
Length1 <= length

Response Body

OK

application/json
  1. response
kind*string
sessionId*string
Match^sess_(us|in)_[0-9a-z]{24}$
interactive*boolean
expiresAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
live*string
Formaturi
token*string
tokenExpiresAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
Example Request
curl -X GET 'https://api.us.webagent.lookover.ai/v1/share/string'
Example Response
{  "kind": "live",  "sessionId": "string",  "interactive": true,  "expiresAt": "2019-08-24T14:15:22Z",  "live": "http://example.com",  "token": "string",  "tokenExpiresAt": "2019-08-24T14:15:22Z"}