To enrich a list with People or Company Intelligence and nothing else, Bulk Intelligence needs no workflow.
Run a batch in the editor
- Open the workflow and click Run. The run dialog shows the estimated cost.
- Click Runs in the editor header to follow progress block by block.
- 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.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.