Skip to main content

Use Case

Run batch data enrichment and automated processing pipelines. Workflows are ideal for processing many records through multi-step pipelines (e.g., validate emails, enrich companies, export to CSV) without manual intervention.

Core Concepts

The Workflows API models pipelines as directed acyclic graphs (DAGs):
TermDescription
WorkflowA reusable pipeline definition containing blocks and edges
BlockA processing step (e.g., webhook input, enrichment, filtering, export)
EdgeA connection between blocks that defines data flow
RunAn execution instance of a workflow
Job IDA unique identifier for tracking a workflow run

Execution Flow

  1. List workflows — Get available workflows in your organization
  2. Run workflow — Execute with input data; receive a job_id
  3. Poll live status — Monitor progress until completed, failed, cancelled, or timeout
  4. Download results — Get signed URLs for result files (CSV, NDJSON)
For workflows that start with a webhook block, see Incoming Webhooks.

Quick Start

Don’t want to write code? Use Sixtyfour’s Workflow Builder to create and manage your own workflows.
# 1. List available workflows
curl -X GET "https://api.sixtyfour.ai/workflows" \
  -H "x-api-key: YOUR_API_KEY"

# 2. Run a workflow with data
curl -X POST "https://api.sixtyfour.ai/workflows/run?workflow_id=WORKFLOW_ID" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook_payload": [
      {"company_name": "Acme Corp", "website": "acme.com"}
    ]
  }'

# 3. Check status (use job_id from step 2)
curl -X GET "https://api.sixtyfour.ai/workflows/runs/JOB_ID/live_status" \
  -H "x-api-key: YOUR_API_KEY"

# 4. Download results
curl -X GET "https://api.sixtyfour.ai/workflows/runs/JOB_ID/results/download-links" \
  -H "x-api-key: YOUR_API_KEY"

Uploading an input file

Workflows that start with a read_csv block read their rows from a file you upload first.
Enriching a list of people or companies? Use Bulk Intelligence — one call with file and config, no workflow or handle needed.
POST https://api.sixtyfour.ai/storage/csv/upload
Send the file as multipart/form-data with a single file part. Accepts .csv, .json, .jsonl, and .ndjson.
cURL
curl -X POST "https://api.sixtyfour.ai/storage/csv/upload" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "file=@leads.csv"
The response returns a handle_id:
{ "handle_id": "9b1f9d2e-..." }
Pass handle_id as specs_override.resource_handle_id when you call /workflows/run:
cURL
curl -X POST "https://api.sixtyfour.ai/workflows/run?workflow_id=WORKFLOW_ID" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "specs_override": { "resource_handle_id": "9b1f9d2e-..." } }'

NDJSON input & output

Inputs can be NDJSON or JSONL as well as CSV — upload them the same way (see Uploading an input file). For NDJSON output, add result_formats=ndjson when running. CSV is always produced regardless; NDJSON is added alongside it. Use NDJSON when you need typed values — numbers, booleans, and nested objects survive instead of being flattened to strings.
cURL
# Request NDJSON output (CSV is always included automatically)
curl -X POST "https://api.sixtyfour.ai/workflows/run?workflow_id=WORKFLOW_ID&result_formats=ndjson" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "specs_override": { "resource_handle_id": "9b1f9d2e-..." } }'

# Get the NDJSON download link — returns a JSON array of result objects, each with a download_url
curl -X GET "https://api.sixtyfour.ai/workflows/runs/JOB_ID/results/download-links?format=ndjson" \
  -H "x-api-key: YOUR_API_KEY"

# Fetch the file from the returned download_url
curl -X GET "DOWNLOAD_URL" \
  -H "x-api-key: YOUR_API_KEY" \
  -o results.ndjson
The format query parameter selects which output to link — csv (default), json, or ndjson. It defaults to csv, so pass format=ndjson to get the NDJSON links.