Overview
The batch endpoints let you run any step of the Pulse pipeline across many documents at once. Each batch call is fully asynchronous — it returns immediately with an ID to poll, and orchestrates parallel workers behind the scenes./batch/schema, /batch/tables, and /batch/split always return a batch_job_id, polled via GET /job/batch_job_id for real-time progress including per-item completion status and individual child job IDs. /batch/extract returns one of two different ID fields depending on which request shape you use — see below.
Batch endpoints mirror the individual pipeline steps. Each child call goes through the exact same code path as calling the individual endpoint directly — batch is orchestration, not a separate implementation.
POST /batch/extract accepts two request shapes at the same path, and Pulse picks the right one automatically based on your request body:- Source and destination —
input/output/extract_options/workers. Returnsbatch_job_id; poll viaGET /job/{'{'}id{'}'}. - URL list — a top-level
urlsarray. Backed by a durable, distributed queue built for very large batches (up to ~1,000,000 documents). Returnsbatch_id; poll viaGET /batch/{'{'}id{'}'}for O(1) status, with pagination, cancellation, and a downloadable result manifest.
/batch/schema, /batch/tables, and /batch/split accept a batch_job_id from either shape via batch_extract_id.Pipeline
Batch endpoints can be chained together, just like their single-document counterparts: Each step takes the output of a previous step as input, either via abatch_extract_id / batch_split_id that references the parent batch job, or via an explicit list of individual IDs.
Workers
Workers process items in parallel. You can control concurrency with theworkers parameter on every batch endpoint.
Batch Extract
Enumerate files from an input source and extract content from each one.POST /batch/extract accepts either request shape below at the same path. A top-level urls array selects URL-list processing; input and output select source/destination processing.
See Extract for details on
extract_options (pages, figure processing, extensions, etc.).Source and destination request
POST /batch/extract
Multipart file uploads (
-F "file=@...") are also accepted at this same path instead of a JSON body — see Input Sources.
Source and destination response (202)
The
batch_job_id from a batch extract can be used in two ways:- Batch Schema — Pass it as
batch_extract_idtoPOST /batch/schemato apply the same schema to each document independently (one result per document). - Multi-Extraction — Pass it as
extraction_idtoPOST /schemato combine all documents and apply the schema to the composite (one merged result). See Multi-Extraction Mode.
URL-list request
POST /batch/extract
Built for very large batches (up to ~1,000,000 documents) via a durable, distributed queue rather than in-process workers. URL-only — no S3 prefix, inline base64, or multipart upload input.
There is no separate
output field for this shape — results are managed by Pulse and retrieved via the result manifest (see URL-list batch status below), not written to a caller-specified destination.
URL-list response (202)
Example — S3 Source
Example — Upload Files from Folder
Example — URL list (large batches)
A top-level
urls array selects URL-list processing automatically. Shown here as curl; check the SDK changelog for native urls= support in your language.Batch Schema
Apply the same schema to each document independently, producing one result per extraction. Supports two modes, inferred from input:- Single mode — Provide
extraction_idsorbatch_extract_idwithschema_config - Split mode — Provide
split_idsorbatch_split_idwithsplit_schema_config
See Schema for details on
schema_config, split_schema_config, and the difference between single and split modes.Request — POST /batch/schema
Response (202)
Example — Single Mode
Example — Split Mode
Batch Tables
Extract tables from multiple existing extractions.See Tables for details on
tables_config (merge, table format, etc.).Request — POST /batch/tables
Response (202)
Example
Batch Split
Split multiple extractions into topics.See Split for details on
split_config (topic definitions with names and descriptions).Request — POST /batch/split
Response (202)
Example
Input and Output
Input Sources
Batch Extract accepts one of the following input sources via JSON body:
Alternatively, you can upload files directly via multipart form data instead of a JSON body:
Output Destinations
Every batch endpoint writes results to an output destination. You can specify one or both:Source/destination batch status
Use this flow for a source/destination request that returned
batch_job_id. For a URL-list request, use URL-list batch status instead. GET /job/{'{'}id{'}'} does not accept a batch_id.result object with structured progress:
job_id can be polled individually for detailed results.
Polling Example
URL-list batch status
For batches created with a URL-list request, status is O(1) regardless of batch size — no need to page through per-item results just to check overall progress.GET /batch/{'{'}batch_id{'}'}
curl
GET /batch/{'{'}batch_id{'}'}/jobs?status=&cursor=
Paginated per-document drill-down (100 per page). status optionally filters to one of pending, processing, completed, failed, canceled. Keep following next_cursor until it’s null.
curl
Cancellation
Use
DELETE /job/{'{'}batch_job_id{'}'} for source/destination batches. Use POST /batch/{'{'}batch_id{'}'}/cancel for URL-list batches.POST /batch/{'{'}batch_id{'}'}/cancel (URL list)
Pending children are canceled outright; children already processing run to natural completion rather than being force-killed.
curl
Full Pipeline Example
Process a folder of SEC filings: extract all files, apply a schema, extract tables, split by topic, and apply per-topic schemas.Related Endpoints
Extract
Individual file extraction — config options apply to Batch Extract
Schema
Single/split schema extraction — config options apply to Batch Schema
Tables
Table extraction — config options apply to Batch Tables
Split
Topic splitting — config options apply to Batch Split
Poll Job
Poll batch job progress
Cancel Job
Cancel a batch job and all child jobs