Skip to content

Audit Logs

Query and search your own tenant's audit trail — one entry per API request your tenant made against this service (payments queries, schedule/webhook management, export run polling, and MCP tool calls). Self-service only: results are always scoped to the authenticated caller's tenant, the same as every other endpoint. There is no cross-tenant or admin lookup.


GET /audit-logs

Returns cursor-paginated audit log entries for your tenant, most recent first.

Query Parameters

Parameter Type Description
from string (date-time) Filter to entries at or after this timestamp.
to string (date-time) Filter to entries at or before this timestamp.
endpoint string Filter to entries for an exact route path, e.g. /schedules.
statusCode integer Filter to entries with this exact HTTP status code.
scheduleId string Filter to entries associated with this schedule.
action string Filter to entries with this exact action classification, e.g. payments.queried, schedule.created. Absent on entries written before this field existed.
q string Free-text search (case-insensitive substring), up to 200 characters, across endpoint, action, and known metadata fields (scheduleId, webhookId, runId, source, mcpTool, status).
cursor string Opaque cursor token from a previous response. Omit to start from the most recent entry.
limit integer Rows per page, 1–100000. Defaults to 500.

Status Codes

Status Description
200 Query executed. Returns paginated entries.
400 Validation error (e.g. invalid from/to, q over 200 characters, non-integer limit/statusCode).
401 Missing or invalid API key.

Example Request

curl "https://ext.arc-aegis.billtrust.com/api/v1/remittance-export/audit-logs?action=payments.queried&limit=50" \
  -H "X-API-Key: <your-api-key>"

Example Response — 200

{
  "data": [
    {
      "id": "59",
      "method": "POST",
      "endpoint": "/v1/payments/query",
      "action": "payments.queried",
      "statusCode": 200,
      "metadata": { "source": "iandp", "rowCount": 42 },
      "tenantId": "acme-corp",
      "timestamp": "2026-07-29T14:32:00.000Z"
    }
  ],
  "pagination": {
    "cursor": "eyJpZCI6IjU4In0",
    "hasMore": true,
    "rowCount": 50
  }
}

Pass pagination.cursor back as cursor in the next request to fetch the next (older) page. A null cursor means all matching results have been returned.

Example Response — 400

{
  "error": {
    "code": "BAD_REQUEST",
    "message": "q cannot exceed 200 characters"
  }
}