Skip to main content
GET
/
accounts
/
{external_id}
/
events
Get Events
curl --request GET \
  --url https://api.example.com/accounts/{external_id}/events

Get Events

Returns events for a sub-account. Supports long-polling for real-time updates — the request will hang until new events arrive or the timeout is reached.

Request

GET /accounts/:external_id/events
GET /accounts/:external_id/events?since=1706900000&poll=true

Path parameters

ParameterTypeDescription
external_idstringThe sub-account’s external ID

Query parameters

ParameterTypeDefaultDescription
sinceintegernoneOnly return events after this cursor value
pollbooleanfalseIf true, long-poll until new events arrive (up to ~30s)

Examples

# Get all events
curl https://prime-api.legend.xyz/accounts/acc_2o0yiljtp378/events \
  -H "Authorization: Bearer $LEGEND_QUERY_KEY"

# Long-poll for new events after cursor 1706900000
curl "https://prime-api.legend.xyz/accounts/acc_2o0yiljtp378/events?since=1706900000&poll=true" \
  -H "Authorization: Bearer $LEGEND_QUERY_KEY"
Response
{
  "events": [
    {
      "event_type": "activity_updated",
      "data": {
        "activity_id": 1,
        "activity_type": "quark_operation_executed",
        "activity_status": "confirmed"
      },
      "timestamp": 1706900001
    }
  ],
  "cursor": 1706900001
}

Response fields

FieldTypeDescription
eventsarrayList of event objects
events[].event_typestringType of event
events[].dataobjectEvent-specific data
events[].timestampintegerUnix timestamp of the event
cursorintegerCursor value — pass as since in the next request

Long-polling pattern

For real-time monitoring, use a long-polling loop:
let cursor = 0;

while (true) {
  const { events, cursor: newCursor } = await client.accounts.events(
    "acc_2o0yiljtp378",
    { since: cursor, poll: true }
  );

  for (const event of events) {
    console.log(event.event_type, event.data);
  }

  cursor = newCursor;
}

Errors

StatusCodeDescription
404account_not_foundAccount doesn’t exist