List workflow runs
List a Revnu workflow's runs through the API, newest first. Inspect run status, per-step outcomes, and counts of leads, contacts and people found by each run.
curl -H "Authorization: Bearer $REVNU_API_TOKEN" "https://revnu.com/api/v1/workflows/h97…/runs?limit=10"Query
| Param | Meaning |
|---|---|
limit |
1 to 50. Default 10. |
Response
{ "runs": [run, …] }, newest first, each with its per-step outcomes. 404 for an unknown or another account's workflow.
A run's status is queued (started with POST /workflows/{id}/runs and not picked up yet), running, done, failed or abandoned (it never started or never reported back).
Each run has found: { leads, contacts, people }: how many leads and contacts this run created, and how many people it added to a company's research list without saving them as contacts. Counting started on 2026-10-02, so runs before then show zero. List them with GET /leads?workflowRunId=<run id>.
Frequently Asked Questions
How do I tie a lead back to the run that found it?
Every lead and contact carries workflowRunId: the workflow run that created it, or null when it was created outside a workflow (for example in chat) or before 2026-10-02. A run that saves a company again does not take it over, so each lead counts once. A later run is credited with new people it adds to that company: the company appears in that run's list with runCreatedLead: false, the new contacts in runContactIds and the new people on its research list who are not contacts in runPeople. A run that returns people the company already had lists that company too, with those people in runPeople marked alreadyKnown: true; they don't count in found.people.
Which scope does this need?
results:read. A token without it gets 403 with requiredScope in the body. GET /me shows a token's scopes.
Are responses cached?
No. Every response is Cache-Control: no-store, so what you read is current.