Skip to main content
Batch processing sends every row of a list through one workflow and returns the enriched results as files. Build the workflow once in the Workflow Editor or as JSON, then feed it rows. To enrich a list with People or Company Intelligence and nothing else, Bulk Intelligence needs no workflow.

Run a batch in the editor

  1. Open the workflow and click Run. The run dialog shows the estimated cost.
  2. Click Runs in the editor header to follow progress block by block.
  3. Download the results from the run, or deliver them with a Send Results block such as Append to Notebook or Outgoing Webhooks.

Send rows in the request

Runs started through the API follow three steps: POST /workflows/run?workflow_id=WORKFLOW_ID starts the run. For a workflow whose source block is Incoming Webhooks, pass the rows in webhook_payload: a list of objects, one per row, or a single object for one row. For an Upload Data (read_csv) source, upload the input file and pass its handle_id as specs_override.resource_handle_id in the request body. Workflows that start with other source blocks run with no body. The run is asynchronous. Poll live_status every 10 seconds or slower while overall_status is queued, running, or finalizing, then request download links. The list has one file per block; the final results are the file named {job_id}.csv. Each download_url expires after 15 minutes and needs your x-api-key header.
Run response
Live status (abridged)
Download links (abridged)
CSV downloads are spreadsheet-safe by default: formula-like cells, such as ones that start with =, +, or @, get a leading ', so +14155550123 becomes '+14155550123. Add ?spreadsheet_safe=false to the download_url for the file exactly as stored, or run with result_formats=ndjson when code reads the results. See Spreadsheet-safe CSV.
Retrying POST /workflows/run with the same Idempotency-Key header returns the existing run instead of starting a new one. Cancellation, failed-row details, JSON and NDJSON result formats, and every response field are documented in Workflow Execution. For credit costs, see Credit Costs. For error responses, see Handling Errors.

Tips

  • Filter before enrichment. Fewer rows means faster runs and fewer credits.
  • Use Deduplicate with Notebook on recurring batches so each run saves only new rows.
  • Define only the return fields you need in enrichment blocks.
  • Add an Outgoing Webhooks block to receive results when the run completes instead of polling.