Query Parameters
- qstring
Search entry descriptions, endpoint subdomains, and team names. Case-insensitive.
- actorstring
Only entries made by this user or API key. Use an id from /v0/activity_logs/filters.
- typestring
Only entries about this kind of thing: endpoint, team, member, role, billing, add_on, or api_key.
- endpoint_idstring
Only entries about this endpoint, by endpoint ID.
- fromstring
Only entries at or after this time. ISO 8601 date or date-time.
- tostring
Only entries at or before this time. ISO 8601 date or date-time.
- limitinteger
Page size. Defaults to 20, maximum 100; larger values return 100.
- offsetinteger
Number of entries to skip. Defaults to 0.
Returns
- dataarray
Array of activity log entries, newest first.
- idstring
Stable UUID for the entry.
- occurred_atstring
When the change happened, in ISO 8601 UTC format.
- actionstring
What happened, such as created, updated, deleted, paused, invited, member_removed.
- descriptionstring
Human-readable summary, the same text the dashboard shows.
- targetobject
What was changed.
- idstring
ID of the thing that changed.
- kindstring
One of: endpoint, team, member, role, billing, add_on, api_key.
- labelstring
Display name of the kind.
- namestring | null
Current name where there is one; null otherwise.
- actorobject
Who made the change.
- idstring | null
User UUID or API key ID; null for quicknode or deleted_user.
- typestring
One of: user, api_key, quicknode, deleted_user.
- namestring | null
Member's name or Quicknode; null for api_key.
- emailstring | null
Member's email; null for api_key, quicknode, deleted_user.
- paginationobject
Pagination metadata.
- totalinteger
Total count of entries matching the filters.
- limitinteger
Page size used.
- offsetinteger
Number of entries skipped.
- errorstring | null
Error message on failure; null on success.
1{2"data": [3{4"id": "01a13ae8-87c2-7af5-96ac-c1d61531eb5a",5"occurred_at": "2026-10-14T14:45:40.055Z",6"action": "paused",7"description": "Endpoint paused",8"target": {9"id": "1",10"kind": "endpoint",11"label": "Endpoint",12"name": "my-eth-endpoint"13},14"actor": {15"id": "1af8529d-1a97-4bfa-aa21-3705bac01433",16"type": "user",17"name": "Ada Lovelace",18"email": "ada@example.com"19}20},21{22"id": "01a13ae7-de8d-78d0-b408-e0df5f11cdba",23"occurred_at": "2026-10-14T14:43:56.737Z",24"action": "created",25"description": "Team Infra created",26"target": {27"id": "104",28"kind": "team",29"label": "Team",30"name": "Infra"31},32"actor": {33"id": "0b2c6f1e-7a2d-4c1e-9f3a-5d8e2a1b4c6d",34"type": "api_key",35"name": null,36"email": null37}38}39],40"pagination": {41"total": 309,42"limit": 2,43"offset": 044},45"error": null46}
1{2"data": [3{4"id": "01a13ae8-87c2-7af5-96ac-c1d61531eb5a",5"occurred_at": "2026-10-14T14:45:40.055Z",6"action": "paused",7"description": "Endpoint paused",8"target": {9"id": "1",10"kind": "endpoint",11"label": "Endpoint",12"name": "my-eth-endpoint"13},14"actor": {15"id": "1af8529d-1a97-4bfa-aa21-3705bac01433",16"type": "user",17"name": "Ada Lovelace",18"email": "ada@example.com"19}20},21{22"id": "01a13ae7-de8d-78d0-b408-e0df5f11cdba",23"occurred_at": "2026-10-14T14:43:56.737Z",24"action": "created",25"description": "Team Infra created",26"target": {27"id": "104",28"kind": "team",29"label": "Team",30"name": "Infra"31},32"actor": {33"id": "0b2c6f1e-7a2d-4c1e-9f3a-5d8e2a1b4c6d",34"type": "api_key",35"name": null,36"email": null37}38}39],40"pagination": {41"total": 309,42"limit": 2,43"offset": 044},45"error": null46}
Query parameter details
Search with q
Matches anywhere in the description, plus the current subdomain of an endpoint and the current name of a team.
# Everything that mentions "rate limit"
curl -s "https://api.quicknode.com/v0/activity_logs?q=rate%20limit" -H "x-api-key: $QN_API_KEY"
# Every change to an endpoint by its subdomain
curl -s "https://api.quicknode.com/v0/activity_logs?q=my-eth-endpoint" -H "x-api-key: $QN_API_KEY"
Filter by type
| type | Covers |
|---|---|
endpoint | Endpoint settings, status, security, rate limits, method filters, tags |
team | Teams, and the members, endpoints, and API keys assigned to them |
member | Invitations, members joining, and members being removed |
role | Custom roles |
billing | Subscriptions, plan changes, coupons, top-ups, Select Chains |
add_on | Marketplace add-ons, on the account or on an endpoint |
api_key | API keys |
Time range with from and to
Both accept an ISO 8601 date (2026-10-14) or date-time (2026-10-14T14:45:00Z). A bare date covers the whole day in UTC.
# One day
curl -s "https://api.quicknode.com/v0/activity_logs?from=2026-10-14&to=2026-10-14" -H "x-api-key: $QN_API_KEY"
# The last hour (macOS)
curl -s "https://api.quicknode.com/v0/activity_logs?from=$(date -u -v-1H +%Y-%m-%dT%H:%M:%SZ)" -H "x-api-key: $QN_API_KEY"
Pagination with limit and offset
Entries are ordered newest first. Use offset to paginate through results.
# Second page of 50
curl -s "https://api.quicknode.com/v0/activity_logs?limit=50&offset=50" -H "x-api-key: $QN_API_KEY"
Combining filters
Filters narrow each other.
# Team changes made by one API key during October
curl -s "https://api.quicknode.com/v0/activity_logs?type=team&actor=0b2c6f1e-7a2d-4c1e-9f3a-5d8e2a1b4c6d&from=2026-10-01&to=2026-10-31" \
-H "x-api-key: $QN_API_KEY"
Error responses
Invalid query parameters return 400 Bad Request with a readable error message:
- Invalid
type: An unrecognized type value returns400. - Negative
offset: A negative offset value returns400. - Invalid date format: A malformed
fromortovalue returns400. limit=0: Returns an emptydataarray (not an error, but no entries are returned).