List an automation's runs
The automation's runs, newest first, with the contact's id and email, the step each is on, when it moves next and why it left.
https://app.usenotix.dev/api/v1/automations/{id}/runsFull access and read only keys can call this. Sending access keys cannot. Key permissions lists the extra rules some calls have.
The automation's runs, newest first, with the contact's id and email, the step each is on, when it moves next and why it left. Filter by status: one stored status (ACTIVE, COMPLETED, EXITED, FAILED), or a comma-separated list of the Runs screen's statuses (running, completed, failed, cancelled, quota_exceeded). With those, or with since and until, each run also carries runStatus and its path in words. Page with cursor and limit (default 50, max 100). Any key but a sending-only one can read it. A team can read runs and people 60 times a minute.
Path parameters
Query parameters
Only runs with this status. Either one of ACTIVE, COMPLETED, EXITED, FAILED (the stored status), or a comma-separated list of running, completed, failed, cancelled, quota_exceeded (the Runs screen's statuses: failed includes people who left because an email bounced or was marked as spam; quota_exceeded is a run waiting on a reached send limit).
Only runs started at or after this time (ISO 8601).
Only runs started before this time (ISO 8601).
Runs per page, 1 to 100. Defaults to 50.
Minimum 1. Maximum 100. Default 50.
The nextCursor of the previous page.
Headers
Bearer followed by your API key.
Errors
The cursor is not a run of this journey, or a filter is not valid.
No journey with this id for the calling team (or, for a pinned key, on its domain).
The read took longer than 30 seconds.
The team read journey runs and people 60 times in the last minute.
Every error has the same shape. See all error codes.
curl -X GET "https://app.usenotix.dev/api/v1/automations/<id>/runs" \
-H "Authorization: Bearer $NOTIX_API_KEY"
import { Notix } from "notix-js";
const notix = new Notix(process.env.NOTIX_API_KEY);
const { data, error } = await notix.automations.listRuns("jrn_123", { status: "ACTIVE", limit: 50 });
const next = data?.nextCursor; // pass back as cursor for the next page
{
"data": [
{
"id": "cm1x8f3k20001qz7v5b9d2e4a",
"contactId": "cm1x8f3k20001qz7v5b9d2e4a",
"contact": {
"id": null,
"email": null
},
"status": "ACTIVE",
"currentStepIndex": 1,
"nextRunAt": "2026-10-01T09:00:00Z",
"exitReason": "UNSUBSCRIBED",
"createdAt": "2026-10-01T09:00:00Z",
"updatedAt": "2026-10-01T09:00:00Z"
}
],
"nextCursor": "string"
}