Skip to content

Read the audit log

GET
/v1/audit
curl --request GET \
--url 'https://api.pealboard.com/v1/audit?cursor=MDAwMS0y&limit=50&action=api_key.issued&since=-30d' \
--header 'Authorization: Bearer <token>'

Every write made in this workspace, newest first, with the actor, the credential kind, the API key when one was used, the request id, and the before and after of anything that changed.

Filter by action for one kind of event, or by since for a window. What happened to a single issue is GET /v1/issues/{issueId}/activity, which every member can read; this is the workspace’s own record and is limited to admins.

Access. Requires the admin role or above (admin, owner). The audit log names who did what with which credential, which is administrative information about people. API-key scope: workspace:read.

cursor

The nextCursor from the previous page, unchanged. Omit it to start at the beginning.

string
Example
MDAwMS0y

The nextCursor from the previous page, unchanged. Omit it to start at the beginning.

limit

How many rows to return. At most 100.

integer
default: 50 >= 1 <= 100

How many rows to return. At most 100.

action

Exactly one action, such as member.role_changed.

string
Example
api_key.issued

Exactly one action, such as member.role_changed.

since

An ISO 8601 instant, or a window such as -7d.

string
Example
-30d

An ISO 8601 instant, or a window such as -7d.

One page of the log.

Media typeapplication/json
object
data
required
Array<object>
object
id
required

A UUID this API issued.

string format: uuid
action
required

The object, then what happened to it: member.role_changed.

string
actor
required

Who did it, and with which credential — a session or a named API key.

object
key
additional properties
target
required
object
type
required
string
id
required
string
before
required
object | null
after
required
object | null
requestId
required

The X-Request-Id of the request that made the change.

string | null
createdAt
required
string format: date-time
nextCursor
required

Pass this back as cursor for the next page. Null on the last page.

string | null
Examplegenerated
{
"data": [
{
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"action": "example",
"actor": {
"additionalProperty": "example"
},
"target": {
"type": "example",
"id": "example"
},
"before": "example",
"after": "example",
"requestId": "example",
"createdAt": "2026-04-15T12:00:00Z"
}
],
"nextCursor": "example"
}

No valid credentials.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

Authenticated, but not permitted.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

No such resource, or it is not visible to you.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

The request conflicts with the current state.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

The request did not match the expected shape.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

Rate limited. Retry after the interval in the header.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

GitHub or another dependency refused or did not answer. Nothing in the workspace changed.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}