List team activity
const url = 'https://qinto-api.blotout.io/teams/7b8d1a52-6c1e-4b6f-9a30-2f8a54d1c3e9/activity?domainId=3f2a9c81-5d47-4e0b-8c66-91b2a7f04d15&category=domain_app&limit=50&cursorAt=2026-08-28T23%3A59%3A59.000Z&cursorId=9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5a';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://qinto-api.blotout.io/teams/7b8d1a52-6c1e-4b6f-9a30-2f8a54d1c3e9/activity?domainId=3f2a9c81-5d47-4e0b-8c66-91b2a7f04d15&category=domain_app&limit=50&cursorAt=2026-08-28T23%3A59%3A59.000Z&cursorId=9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5a' \ --header 'Authorization: Bearer <token>'Lists the team’s audit trail newest first: every change a person or a credential made, with who made it and what it named at the time.
How it works
Filter to one site with domainId, or to one resource kind with category. Page with cursorAt and cursorId from the previous response’s nextCursor; a null cursor means the last page. Names in metadata are snapshots, so an entry still reads correctly after the resource is renamed or deleted.
Required permissions
team:view_activity_log:readon the team
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Unique id (UUID) of the team that owns the addressed resources, as shown in the team settings on the Blotout platform.
Example
7b8d1a52-6c1e-4b6f-9a30-2f8a54d1c3e9Unique id (UUID) of the team that owns the addressed resources, as shown in the team settings on the Blotout platform.
Query Parameters
Section titled “Query Parameters”List one site’s entries only. Team-level changes carry no site and are then left out.
Example
3f2a9c81-5d47-4e0b-8c66-91b2a7f04d15List one site’s entries only. Team-level changes carry no site and are then left out.
List one resource kind only — the segment of action before the first dot.
Example
domain_appList one resource kind only — the segment of action before the first dot.
How many entries to return, 1–200.
Example
50How many entries to return, 1–200.
Continue after this entry’s instant, from a previous response’s cursor.
Example
2026-08-28T23:59:59.000ZContinue after this entry’s instant, from a previous response’s cursor.
Continue after this entry’s id, from a previous response’s cursor. Send it with cursorAt.
Example
9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5aContinue after this entry’s id, from a previous response’s cursor. Send it with cursorAt.
Responses
Section titled “Responses”The page of entries.
object
The page of entries, newest first.
One recorded change in a team’s audit trail.
object
Id of this entry.
The site the change belongs to; null for a team-level one.
Who made the change; null for an automated one.
That person’s email as it was at the time.
The credential the change came through, when it was not a browser session.
What happened, as <resource>.<change>.
Names and labels snapshotted at the time, so the entry still reads after a rename.
object
When it happened, as an ISO 8601 UTC timestamp.
Where the next page starts, or null on the last one.
object
Pass as cursorAt.
Pass as cursorId.
Example
{ "records": [ { "activityLogId": "9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5a", "domainId": "3f2a9c81-5d47-4e0b-8c66-91b2a7f04d15", "actorUserId": "2b7f1a5c-8d34-4e9a-b012-3c4d5e6f7a8b", "actorEmail": "ada@example.com", "actorApiTokenName": "CI token", "action": "domain_app.tool_disabled", "metadata": { "appSlug": "facebook-capi", "toolName": "emqReport" }, "createdAt": "2026-08-28T10:04:31.000Z" } ], "nextCursor": { "at": "2026-08-28T23:59:59.000Z", "id": "9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5a" }}invalid_params — A path parameter failed validation (for example a malformed UUID); details pinpoints the offending parameter.
object
Machine-readable error slug; switch on this value rather than on the HTTP status alone.
Field-level validation errors: a tree keyed by input property, each node carrying an errors array of human-readable messages. Render it to help the caller correct the request.
object
Example
{ "error": "invalid_params", "details": { "errors": [], "properties": { "teamId": { "errors": [ "Invalid UUID" ] } } }}unauthenticated — The Authorization: Bearer token is missing, malformed, or no longer valid. Generate a team API token or obtain a new OAuth access token.
object
Machine-readable error slug; switch on this value rather than on the HTTP status alone.
Example
{ "error": "unauthenticated"}forbidden — The bearer credential lacks the required permission or belongs to another team, or its user lacks the organization role a developer operation needs. Update its policies, use a credential bound to the addressed team, or ask an organization owner for the role; message states the reason when one is known.
object
Machine-readable error slug; switch on this value rather than on the HTTP status alone.
Human-readable reason for this specific failure, intended for display — do not parse it programmatically.
Example
{ "error": "forbidden", "message": "The Cloudflare API token is invalid or expired."}internal — Unexpected server error. Nothing is guaranteed to have been persisted; idempotent operations are safe to retry.
object
Machine-readable error slug; switch on this value rather than on the HTTP status alone.
Example
{ "error": "internal"}