Project Audit Trail

Beta
Who changed this project's access or its lifecycle state, and when. Newest first. Covers the last 90 days; paginate by passing `cursor` from the previous response. Each entry names the SUBJECT (whose access changed) and the ACTOR (who changed it), with the role the actor held at the time. When a change was made by Speechify support acting on the workspace's behalf, the entry also carries that admin's email, so a support-initiated change never reads as one a colleague made. Requires `members.manage_project_scope` (owner or admin): who widened a member's access is a stronger fact than who currently holds it. Returns 404 for missing or foreign-workspace projects.

Authentication

AuthorizationBearer

Enter your API key with the Bearer prefix, e.g. ‘Bearer sk_…’.

Path parameters

project_idstringRequired

Project id (prefixed external id, proj_...).

Headers

Speechify-VersionstringOptional

Query parameters

cursorstringOptional
Opaque pagination cursor from a previous response.
limitintegerOptional1-200Defaults to 50

Max items per page (default 50, max 200).

Response headers

Speechify-Request-IdstringOptional
Unique identifier for this request, present on every response (2xx and non-2xx alike). If the caller sends a `Speechify-Request-Id` request header the server echoes it back (sanitized and length-capped) so one logical request can be traced end-to-end; otherwise the server generates a fresh value. Log it on every response and quote it in support requests - it is the stable handle that ties your observation to Speechify's server-side logs, and it matches the `request_id` field in the error envelope. The legacy alias `X-Request-ID` carries the same value and is still accepted on requests, until 2027-07-24. Prefer the un-prefixed name (RFC 6648).

Response

One page of this project's audit trail.
next_cursorstring or null

Opaque keyset cursor for the next page. Pass back as the cursor request parameter. null when the caller has reached the end of the list (has_more is also false in that case).

has_moreboolean
True when more rows exist beyond this page.
eventslist of objects

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
503
Service Unavailable Error