Event logs

Fetch a page of recent events for your account. The default view returns the most recent events with the latest at the bottom, ready to append to a feed. Use the cursor to page forward through history.

Endpoint

GET /v1/events

Query parameters

NameTypeDescription
cursorstring · optionalID to read after. Use next_cursor from the previous response to page forward.
limitinteger · optionalNumber of events to return, default 100 (max 100).
filteredboolean · optionalApply your account's muted event patterns. Default false.
device_codestring · optionalFilter to events from a specific device (e.g. 2AC61214).
categorystring · optionalFilter by category (e.g. mining, travel, ami).
eventstring · optionalFilter by event name (e.g. mining.started).
afterstring · optionalReturn events at or after this time. ISO 8601 format; naive timestamps are treated as your account timezone.
beforestring · optionalReturn events before this time. Same format rules as after.

Example

GET /v1/events 200 OK
$ curl "https://api.replicant.space/v1/events?category=mining&limit=3" \
    -H "Authorization: Bearer $API_KEY"
response response
{
  "events": [
    {
      "id": "1784292742869-0",
      "version": 1,
      "category": "mining",
      "event": "mining.started",
      "replicant_code": "BC6F680D",
      "device_code": "32763CDF",
      "device_type": "mining_drone",
      "star": "ABOTEIN",
      "location": "ABOTEIN-BELT-1",
      "payload": {
        "availability": "high",
        "belt": "ABOTEIN-BELT-1",
        "cycle_time_seconds": 52,
        "density": "moderate",
        "designation": "ABOTEIN-BELT-1-SITE-0",
        "location": "ABOTEIN-BELT-1",
        "location_type": "belt",
        "resource_type": "structural",
        "site": "ABOTEIN-BELT-1-SITE-0"
      },
      "created_at": "2026-07-17T13:52:22+01:00"
    },
    {
      "id": "1784292762940-0",
      "version": 1,
      "category": "mining",
      "event": "mining.stopped",
      "replicant_code": "BC6F680D",
      "device_code": "32763CDF",
      "device_type": "mining_drone",
      "star": "ABOTEIN",
      "location": "ABOTEIN-BELT-1",
      "payload": {
        "belt": "ABOTEIN-BELT-1",
        "location": "ABOTEIN-BELT-1",
        "quantity_mined": 0,
        "resource_type": "structural"
      },
      "created_at": "2026-07-17T13:52:42+01:00"
    }
  ],
  "next_cursor": "1784292762940-0"
}

Pagination

Without a cursor, the endpoint returns the most recent limit events in chronological order - latest at the bottom. When the response includes a next_cursor, pass it as the cursor query parameter on your next request to fetch the next page. When next_cursor is null, there are no more events to read.

Event envelope

Every event shares a common envelope. The payload field varies by event type - see the event catalogue for the full list.

FieldTypeDescription
idstringEvent ID. Use as a cursor value.
versionintegerEnvelope version (currently 1).
categorystringEvent category (e.g. mining, travel, device).
eventstringDotted event name (e.g. mining.started).
replicant_codestringReplicant that owns the device or triggered the action.
device_codestring?Device code, if the event relates to a specific device.
device_typestring?Device type, when device_code is set.
starstring?Star system designation.
locationstring?Specific location code (planet, belt, moon, etc.).
payloadobjectEvent-specific data. Shape varies by event name.
created_atstringISO 8601 timestamp, localised to your account timezone.

Muted events

You can configure mute patterns via account settings to suppress noisy event types. Patterns use * as a wildcard for one dot-separated segment (e.g. mining.* mutes mining.started and mining.stopped). Set filtered=true on this endpoint to apply your mute list. AMI digest events are never muted.

The SSE stream at /v1/events/stream always applies your mute list. Filters are compiled when the connection opens, so if you change your muted patterns you will need to reconnect the stream for the new filters to take effect.