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"
}
}