Request
curl -X GET "/v1/logs"
Response
Run the request to inspect the response.
Request
curl -X GET "/v1/logs/{id}"Response
Run the request to inspect the response.
Request
curl -X GET "/v1/logs/count"
Response
Run the request to inspect the response.
The Logs API exposes the ActivityLog table. Every POST/PATCH/DELETE
in the API is captured (with masked request/response bodies), and
the moments service writes its own rows for Moment and Tracking
activity.
Endpoints
| Method | Path | Scope |
|---|---|---|
GET | /v1/logs | workspaces.read |
GET | /v1/logs/{id} | workspaces.read |
GET | /v1/logs/count | workspaces.read |
Filtering
| Param | Type | Notes |
|---|---|---|
level | debug | info | warning | error | Exact match. |
source | api | auth | workspace | worker | cron | system | activity | Exact match. |
status | queued | started | success | failure | completed | cancelled | skipped | Exact match. |
action | string | Exact match. |
resourceType | string | Exact match. |
start / end | ISO-8601 | Inclusive range against createdAt. |
search | string | Case-insensitive contains across multiple fields. |
page / pageSize | integer | pageSize is capped at 50. |
Response shape
| 1 | { |
| 2 | "data": [ |
| 3 | { |
| 4 | "id": "log_…", |
| 5 | "timestamp": "2026-06-05T12:00:00.000Z", |
| 6 | "method": "POST", |
| 7 | "path": "/api/v1/moments", |
| 8 | "route_pattern": "v1/moments", |
| 9 | "status_code": 200, |
| 10 | "duration": 84, |
| 11 | "status": "success", |
| 12 | "level": "info", |
| 13 | "source": "api", |
| 14 | "action": "POST /v1/moments", |
| 15 | "message": "POST /v1/moments", |
| 16 | "resource_type": "request", |
| 17 | "resource_id": "v1/moments", |
| 18 | "workspace_id": "ws_…", |
| 19 | "actor_type": "user", |
| 20 | "actor_name": "Ada Lovelace", |
| 21 | "actor_email": "ada@example.com", |
| 22 | "token_id": "tok_…", |
| 23 | "user_id": "user_…", |
| 24 | "metadata": { "requestBody": { "…" : "…" }, "responseBody": { "…" : "…" } } |
| 25 | } |
| 26 | ], |
| 27 | "page": 1, |
| 28 | "pageSize": 20, |
| 29 | "total": 134, |
| 30 | "totalPages": 7 |
| 31 | } |
| 32 | |
token_id and user_id let you correlate each row with the API
key or user that produced it. metadata.requestBody and
metadata.responseBody contain the raw bodies (with sensitive
fields masked in the next P1 follow-up).
Retention
Activity log rows older than 90 days are pruned by the
/api/cron/cleanup/activity-logs cron handler. Webhook delivery
traces are surfaced via the webhook's own delivery history
endpoint (P1.6).
Spec
The full request and response shapes are in the OpenAPI spec at
/api/v1/openapi — see the
Logs tag and the Log, LogsList, and LogsCount components.

