List workflows
curl -X GET 'https://api.justcrawl.io/api/v1/workflows?status=published' \ -H 'Authorization: Bearer $JUSTCRAWL_API_KEY'import os, requestsr = requests.get( 'https://api.justcrawl.io/api/v1/workflows', headers={'Authorization': f'Bearer {os.environ["JUSTCRAWL_API_KEY"]}'}, params={'status': 'published'},)r.raise_for_status()workflows = r.json()const res = await fetch('https://api.justcrawl.io/api/v1/workflows?status=published', { headers: { Authorization: `Bearer ${process.env.JUSTCRAWL_API_KEY}` },});if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);const workflows = await res.json();Returns the latest version per logical workflow in the current org.
Each item is enriched with costPerThousand (derived from the org’s
vendor-cost table) and a smart block when the workflow has a
smart-workflow config attached. When ?domain= is set without an
explicit ?status=, the gateway defaults status=published so the
response matches what resolveWorkflowForUrl actually picks at
dispatch time — drafts inherited from version bumps are not the
running workflow and would mislead UI consumers.
Use workflowId, not id, to address a workflow. Each item carries
both, and they are different uuids — workflowId is the stable logical
id every other workflow endpoint takes, while id is the primary key of
the returned version row and is accepted nowhere. Passing id to
GET /api/v1/workflows/{id} returns 404.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Filter workflows by status.
Narrow to workflows routed to this domain (route=“domain:X” or default “*”); domain-specific routes sorted first.
Responses
Section titled “Responses”An array of workflows (latest version each), enriched with cost + smart-workflow config.
object
Primary key of this specific VERSION row. Changes every time the workflow is edited, and is not accepted by any endpoint. Useful only for correlating a response with the exact version it came from — pass workflowId, not this, to /api/v1/workflows/{id}.
Stable logical identifier for the workflow, constant across every version. THIS is the value every /api/v1/workflows/{id} route expects (get, update, delete, clone, publish, unpublish, routing, versions) and the value jobs and schedules reference.
object
object
object
object
object
Example
[ { "status": "draft", "dag": { "nodes": [ { "type": "entry" } ], "edges": [ { "type": "default" } ] }, "smart": { "strategy": "success", "mode": "auto" } }]Validation failed — request body or query is missing/invalid
object
Example
{ "error": "Missing or invalid \"url\" field"}Missing or invalid authentication token
object
Example
{ "error": "Missing or invalid authentication token"}Insufficient permissions for this operation
object
Example
{ "error": "No organization. Complete onboarding first."}Unexpected server error. Logs and PostHog $exception capture
object
Example
{ "error": "Something went wrong"}