Skip to main content

v0/activity_logs REST API Endpoint

Returns activity log entries, newest first, with filters and pagination.

Updated on
Oct 27, 2026
This method requires an Admin API key and the activity log to be enabled for your account. See the Activity Logs overview for more information.

Query Parameters

q
string

Search entry descriptions, endpoint subdomains, and team names. Case-insensitive.

actor
string

Only entries made by this user or API key. Use an id from /v0/activity_logs/filters.

type
string

Only entries about this kind of thing: endpoint, team, member, role, billing, add_on, or api_key.

endpoint_id
string

Only entries about this endpoint, by endpoint ID.

from
string

Only entries at or after this time. ISO 8601 date or date-time.

to
string

Only entries at or before this time. ISO 8601 date or date-time.

limit
integer

Page size. Defaults to 20, maximum 100; larger values return 100.

offset
integer

Number of entries to skip. Defaults to 0.

Returns

data
array

Array of activity log entries, newest first.

id
string

Stable UUID for the entry.

occurred_at
string

When the change happened, in ISO 8601 UTC format.

action
string

What happened, such as created, updated, deleted, paused, invited, member_removed.

description
string

Human-readable summary, the same text the dashboard shows.

target
object

What was changed.

id
string

ID of the thing that changed.

kind
string

One of: endpoint, team, member, role, billing, add_on, api_key.

label
string

Display name of the kind.

name
string | null

Current name where there is one; null otherwise.

actor
object

Who made the change.

id
string | null

User UUID or API key ID; null for quicknode or deleted_user.

type
string

One of: user, api_key, quicknode, deleted_user.

name
string | null

Member's name or Quicknode; null for api_key.

email
string | null

Member's email; null for api_key, quicknode, deleted_user.

pagination
object

Pagination metadata.

total
integer

Total count of entries matching the filters.

limit
integer

Page size used.

offset
integer

Number of entries skipped.

error
string | null

Error message on failure; null on success.

Request
Response
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": null
37
}
38
}
39
],
40
"pagination": {
41
"total": 309,
42
"limit": 2,
43
"offset": 0
44
},
45
"error": null
46
}
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": null
37
}
38
}
39
],
40
"pagination": {
41
"total": 309,
42
"limit": 2,
43
"offset": 0
44
},
45
"error": null
46
}
Don't have an account yet?
Create your Quicknode endpoint in seconds and start building
Get started for free

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​

typeCovers
endpointEndpoint settings, status, security, rate limits, method filters, tags
teamTeams, and the members, endpoints, and API keys assigned to them
memberInvitations, members joining, and members being removed
roleCustom roles
billingSubscriptions, plan changes, coupons, top-ups, Select Chains
add_onMarketplace add-ons, on the account or on an endpoint
api_keyAPI 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 returns 400.
  • Negative offset: A negative offset value returns 400.
  • Invalid date format: A malformed from or to value returns 400.
  • limit=0: Returns an empty data array (not an error, but no entries are returned).