Skip to content

List an agent's activity

The agents.activity operation: GET /api/v1/agents/{id}/activity in the REST API and the agents_activity tool in the MCP server.

GET/api/v1/agents/{id}/activity

The agent's activity feed, newest first, from the audit log: every change it made (outcome: "succeeded"), every call that asked for approval instead of running (approval_requested, with the approval's current status), and every run a person approved (ran_after_approval), each with the operation, its target, the mode, the entity or brand, the surface (via) and the OAuth client it came through. Reads aren't in the audit log, so they aren't listed. Both modes are listed; usage is today's use (UTC) of its daily limits in the request's mode. Paginate with limit (1–100, default 10) and starting_after.

At a glance

  • REST: GET /api/v1/agents/{id}/activity
  • MCP tool: agents_activity
  • Operation ID: agents.activity
  • Scope: Organization
  • Permission: audit:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the audit:read scope
  • Since: M10

Request

Path parameters

FieldTypeDescription
idagt_… ID

Query parameters

FieldTypeRequiredDescription
limitinteger (1 to 100)No
starting_afteraud_… IDNo

Response

200 OK with a JSON object, a page of the list (newest first):

FieldTypeDescription
object"list"
dataarray of object
data[].idaud_… ID
data[].object"activity_entry"
data[].atstring
data[].actionstring
data[].operationIdstring or null
data[].targetstring
data[].livemodeboolean or null
data[].entityIdent_… ID or null
data[].brandIdbrd_… ID or null
data[].viaone of console, api, mcp, assistant, portal, job or null
data[].clientIdstring or null
data[].onBehalfOfUserIdstring or null
data[].appInstallationIdains_… ID or null
data[].outcomeone of succeeded, approval_requested, ran_after_approval
data[].approvalobject or null
has_moreboolean
next_cursoraud_… ID or null
usageobject
usage.daystring
usage.livemodeboolean
usage.mutationsinteger
usage.amountsarray of object
usage.amounts[].operationIdstring
usage.amounts[].amountmoney

Examples

A refund above the daily limit, approved and run

HTTP
GET /api/v1/agents/agt_01m4ttwd3veh9apbewxheq5xh8/activity
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "object": "activity_entry",
      "livemode": false,
      "entityId": "ent_01m4ttwd3veh9apbewxheq5xh4",
      "brandId": "brd_01m4ttwd3veh9apbewxheq5xh5",
      "via": "mcp",
      "clientId": "ocl_01m4ttwd3veh9apbewxheq5xh9",
      "onBehalfOfUserId": null,
      "appInstallationId": null,
      "id": "aud_01m4ttwd3veh9apbewxheq5xhh",
      "at": "2026-10-26T15:02:11.000Z",
      "action": "refunds.create",
      "operationId": "refunds.create",
      "target": "re_01m4ttwd3veh9apbewxheq5xhj",
      "outcome": "ran_after_approval",
      "approval": {
        "id": "apr_01m4ttwd3veh9apbewxheq5xhk",
        "status": "executed",
        "approvedBy": ["usr_01m4ttwd3veh9apbewxheq5xh7"]
      }
    },
    {
      "object": "activity_entry",
      "livemode": false,
      "entityId": "ent_01m4ttwd3veh9apbewxheq5xh4",
      "brandId": "brd_01m4ttwd3veh9apbewxheq5xh5",
      "via": "mcp",
      "clientId": "ocl_01m4ttwd3veh9apbewxheq5xh9",
      "onBehalfOfUserId": null,
      "appInstallationId": null,
      "id": "aud_01m4ttwd3veh9apbewxheq5xhf",
      "at": "2026-10-26T14:30:00.000Z",
      "action": "approvals.request",
      "operationId": "refunds.create",
      "target": "apr_01m4ttwd3veh9apbewxheq5xhk",
      "outcome": "approval_requested",
      "approval": {
        "id": "apr_01m4ttwd3veh9apbewxheq5xhk",
        "status": "executed",
        "approvedBy": ["usr_01m4ttwd3veh9apbewxheq5xh7"]
      }
    },
    {
      "object": "activity_entry",
      "livemode": false,
      "entityId": "ent_01m4ttwd3veh9apbewxheq5xh4",
      "brandId": "brd_01m4ttwd3veh9apbewxheq5xh5",
      "via": "mcp",
      "clientId": "ocl_01m4ttwd3veh9apbewxheq5xh9",
      "onBehalfOfUserId": null,
      "appInstallationId": null,
      "id": "aud_01m4ttwd3veh9apbewxheq5xhg",
      "at": "2026-10-26T14:10:00.000Z",
      "action": "refunds.create",
      "operationId": "refunds.create",
      "target": "re_01m4ttwd3veh9apbewxheq5xhm",
      "outcome": "succeeded",
      "approval": null
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "usage": {
    "day": "2026-10-26",
    "livemode": false,
    "mutations": 2,
    "amounts": [
      {
        "operationId": "refunds.create",
        "amount": {
          "amount": "450000000",
          "currency": "EUR"
        }
      }
    ]
  }
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400limit or starting_after is invalid.Fix the fields listed in details.issues and send the request again.
resource_not_found404No agent with this ID exists in the organization.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
permission_denied403You can't read the organization's audit log.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, dry_run_not_supported, rate_limited, internal_error.