AgentMessage
Audit log

List audit log entries

GET
/v1/audit-log

Returns a paginated audit feed of events affecting your organization, newest first. The feed includes API-key creations, rotations, and revocations; subscription, plan, and add-on changes; retention setting changes; contact erasures; and any staff access to your message content.

Cursor pagination uses meta.next_cursor, which is null on the last page.

When an action was performed by AgentMessage staff acting on your organization, the entry renders with an actor kind of platform and a generic label; individual staff identities are not exposed through this feed.

The raw payload field is omitted by default because it may contain detail you have not asked for, such as before-and-after values. Pass ?include=payload to opt in. Any other value for include returns 422 VALIDATION_FAILED.

Requires the audit:read scope, which is granted to every customer role.

AuthorizationBearer <token>

Authenticate by sending your API key as a bearer token: Authorization: Bearer am_live_.... Every request is automatically scoped to the organization that owns the key and to the scopes granted to that key.

In: header

Query Parameters

cursor?string
limit?integer
Default50
Range1 <= value <= 200
action?string
resource_type?string
resource_id?string
Formatuuid
actor_kind?string
Value in"customer" | "platform"
since?string
Formatdate-time
until?string
Formatdate-time
include?string
Value in"payload"

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/audit-log"

{
  "success": true,
  "data": [
    {
      "id": "01HXJZ4Q3A0PZ4QH7JZK6S0R3M",
      "occurred_at": "2026-04-28T14:01:53Z",
      "actor": {
        "kind": "platform",
        "label": "platform"
      },
      "action": "platform.body_access",
      "resource": {
        "type": "message",
        "id": "8f3a2b1c-1c2d-4e5f-9a8b-0c1d2e3f4a5b"
      },
      "reason": "support ticket #1234, customer reported delivery dispute",
      "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
    },
    {
      "id": "01HXJZ3P2Z0PZ4QH7JZK6S0R2L",
      "occurred_at": "2026-04-28T13:30:00Z",
      "actor": {
        "kind": "customer",
        "label": "api_key:01HXJ-key-id (production)"
      },
      "action": "retention.update",
      "resource": {
        "type": "organization",
        "id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3b4"
      },
      "reason": null,
      "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3UM"
    }
  ],
  "meta": {
    "total": 0,
    "limit": 50,
    "offset": 0,
    "next_cursor": null
  }
}

{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "authentication failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "missing required scope",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "validation failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM",
    "details": {
      "to": "must be E.164",
      "body": "must be 1..1600 chars"
    }
  }
}