LoguDocs
Open Logu

Activity · listActivity

Activity log

GET /v1/activity

Who did what in the workspace, newest first: asks created and decided (and by whom), API keys created and revoked, members invited and joined, delivery changes. Never secrets. Page with cursor: pass the previous page's nextCursor until it is null (before, the last entry id, still works). An invalid cursor is a 400 (bad_request).

Who may call it
humans: every member
Server
https://api.logu.dev

Parameters#

NameInTypeRequiredDescription
limitqueryintegeroptionalHow many to return (1–200). · e.g. 50
beforequerystringoptionalThe last entry id of the previous page (act_…, or aud_… for entries before the rename). Prefer cursor; not with it. · e.g. act_01K7DQ3M2W0J2L4N6Q8S0U2W4Y
cursorquerystringoptionalWhere this page starts: the nextCursor of the previous page, unchanged. Leave it out (or empty) for the first page. · e.g. YWN0aXZpdHk6MTc5MTgxMzk0MjAwMDphY3RfMDFLN0RRM00yVzBKMkw0TjZROFMwVTJXNFk
Logu-WorkspaceheaderstringoptionalHumans only: the workspace to act in (default: your personal workspace). Agents always act in their API key's workspace. · e.g. wsp_01K7D7Y8Z0B2D4F6H8K0M2P4R6

Example#

curl -s "https://api.logu.dev/v1/activity" \
  -H "Authorization: Bearer $LOGU_SESSION_TOKEN"

Responses#

200

Entries, newest first, and where the next page starts (null at the end).

{
  "entries": [
    {
      "id": "act_01K7DQ3M2W0J2L4N6Q8S0U2W4Y",
      "workspaceId": "wsp_Xq3bY7tLmN2pR8sV",
      "action": "ask.decided",
      "actor": {
        "kind": "human",
        "user": {
          "id": "Xq3bY7tLmN2pR8sV",
          "name": "Ana"
        }
      },
      "target": {
        "type": "ask",
        "id": "ask_01K7DQ3M2V8H4N6R9T1W3Y5B7C"
      },
      "data": {
        "project": "shop",
        "optionId": "approve"
      },
      "createdAt": "2026-10-12T14:05:42.000Z"
    }
  ],
  "nextCursor": "YWN0aXZpdHk6MTc5MTgxMzk0MjAwMDphY3RfMDFLN0RRM00yVzBKMkw0TjZROFMwVTJXNFk"
}
Response fields
FieldTypeRequiredNotes
entriesActivityEntry[]required
entries[].idstringrequired
entries[].workspaceIdstringrequired
entries[].action"ask.created" | "ask.decided" | "ask.withdrawn" | "ask.timed_out" | "ask.escalated" | "agent.created" | "agent.updated" | "agent.deleted" | "agent.connected" | "api_key.created" | "api_key.revoked" | "device.registered" | "device.removed" | "browser_push.enabled" | "browser_push.disabled" | "telegram.connected" | "telegram.disconnected" | "slack.connected" | "slack.disconnected" | "whatsapp.connected" | "whatsapp.disconnected" | "preferences.updated" | "delivery.tested" | "project.muted" | "project.unmuted" | "project.routing_changed" | "rule.created" | "rule.deleted" | "metric.deleted" | "alert.created" | "alert.deleted" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.secret_rotated" | "webhook.redelivered" | "webhook.disabled" | "workspace.created" | "workspace.create_refused" | "workspace.renamed" | "workspace.suspended" | "workspace.unsuspended" | "member.invited" | "member.joined" | "member.role_changed" | "member.removed" | "invitation.revoked" | "sign_in_method.added" | "sign_in_method.removed" | "session.revoked" | "billing.checkout_started" | "billing.subscribed" | "billing.updated" | "billing.canceled" | "billing.payment_failed" | "billing.quota_warning" | "billing.quota_reached" | "billing.ceiling_reached" | "delivery.capped" | "account.deletion_requested" | "account.restored" | "account.exported"required
entries[].actorobjectrequired
entries[].targetobject | nullrequired
entries[].target.typestringrequired
entries[].target.idstringrequired
entries[].dataobject | nullrequired
entries[].createdAtstringrequireddate-time
nextCursorstring | nullrequiredPass as cursor for the next page, unchanged; null at the end of the list.

Errors#

Every error is {"error":{"code","message","hint","docUrl","requestId"}}: branch on code. See Errors.

StatusCodeMeaning
400bad_requestThe request is malformed or a field is invalid (see issues).
401unauthorizedNo credentials, or the API key or session is invalid or revoked.
403forbiddenThe caller is authenticated but may not do this (wrong role, or an API key on a human-only endpoint).
404not_foundNo such route, or the resource doesn't exist in your workspace.
500internal_errorSomething went wrong on Logu's side.