Docs
Dashboard
API reference / Logs and recordingBeta

List session events

Oldest first. Pass nextAfter back as after to page forward and to poll for new events.

GET/v1/sessions/{id}/events

Request

Method and pathGET/v1/sessions/{id}/events
Base URLhttps://api.boxline.dev
AuthenticationYour API key in the x-api-key header (or Authorization: Bearer). The examples read it from BOXLINE_API_KEY.

Path parameters

NameTypeDefaultAllowed valuesDescription
idrequiredstring––

Query parameters

NameTypeDefaultAllowed valuesDescription
typesstring––Comma-separated event types.
runIdstring––Only the events an agent run caused in this session (those whose data.runId is this run id).
afterstring––Only events after this seq (or the previous page's next).
limitinteger500–From 1 to 2000.
curl "https://api.boxline.dev/v1/sessions/$SESSION_ID/events?types=exec,error" \  -H "x-api-key: $BOXLINE_API_KEY"

Responses

200 OK

A page of events.

Fields

NameTypeDefaultAllowed valuesDescription
dataobject[]––
data[].seqinteger––
data[].atstring––Format: date-time.
data[].typestring–console, network, navigation, error, lifecycle, action, exec, files, captcha
data[].levelstring––
data[].textstring––
data[].urlstring––
data[].methodstring––
data[].statusinteger––
data[].resourceTypestring––
data[].durationMsinteger––
data[].tabIdstring––
data[].dataobject––What the event carries; see ExecEventData (exec), ActionEventData (action) and FilesEventData (files).
data[].data.bystring–api
data[].data.runIdstring––The agent run (by: agent).
data[].data.exitCodeinteger | null––
data[].data.timedOutboolean––
data[].data.stepinteger––The run's step number (by: agent); the step's n.
data[].data.filesstring[]––by: agent: the paths (relative to the workspace) of the files the command created or changed, as on the step's shell (at most 20).
data[].data.credentialsstring[]––The names of the credentials the command was given (never their values).
data[].data.actionstring––The action name (click, goto, step, …).
data[].data.lineinteger––by: script: the line of your script that made the call, in the editor's numbers. From 1 to 100000.
data[].data.frameinteger––by: agent, with a recording: the recording frame the step ended on (the step's screen.frame).
data[].data.codestring––A failure's API error code, when it has one (e.g. provider_unavailable, feature_not_in_plan).
data[].data.opstring–write, delete
data[].data.pathstring––Relative to the workspace.
data[].data.bytesinteger––op: write: the file's size.
nextAfterinteger––The last seq returned (or after when none).
nextstring | null––Pass it back as after for the next page; null on the last page.
Response 200
{  "data": [    {      "seq": 0,      "at": "2026-09-29T10:00:00.000Z",      "type": "console",      "level": "…",      "text": "…",      "url": "https://example.com/",      "method": "…",      "status": 0,      "resourceType": "…",      "durationMs": 0,      "tabId": "…",      "data": {        "by": "api",        "runId": "…",        "exitCode": 0,        "timedOut": false,        "step": 0,        "files": [          "…"        ],        "credentials": [          "…"        ]      }    }  ],  "nextAfter": 0,  "next": "eyJvIjoiY3JlYXRlZF9kZXNjIiwidCI6IjIwMjYtMDktMjlUMTA6MDA6MDAuMTIzNDU2WiIsImkiOiI2YzFmIn0"}

Errors

Errors have a matching HTTP status and the same body. code is stable, so check it in your code; message is for people. See Errors and request ids.

StatusCodesWhen
400 Bad Requestinvalid_request, invalid_json, invalid_cursor, invalid_idempotency_key, invalid_extension, variables_with_extensions, terms_not_accepted, invalid_reset_token, invalid_confirmation_code, wrong_password, no_password, invalid_next, invalid_oauth_tokenThe request is not valid.
401 UnauthorizedunauthorizedMissing or invalid API key.
404 Not Foundnot_found, invite_not_found, provider_unavailableNo such thing in this project (or organization), or no such route.
Error body
{  "error": {    "code": "not_found",    "message": "session not found",    "requestId": "req_4fJx0aQm2Lk9Pz7N"  }}

Learn more

These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.