Skip to main content
The reference lists each route’s inputs, outputs and errors. The conventions below apply to every route.

Base URL and headers

Every request goes to https://api.runpulse.com and carries two headers: This request sends both headers:
The SDKs send both headers for you.

Endpoints

Parse

POST /parse

Batch

POST /parse/batch

Extract

POST /extract

Split

POST /split

Tables

POST /tables

Charts

POST /charts

Classify

POST /classify

Pipeline

POST /pipeline
Three more groups cover your account:

Usage

GET /usage

Webhook

POST /webhook

Settings

GET /settings/org

Routes of an endpoint

Every endpoint that starts a job has the same four routes, and Batch has them too: A POST waits for its job to end, unless you send "async": true to get a 202 with the job’s id at once. A pipeline and a batch always run async. Each endpoint except Batch also has /{endpoint}/configs routes, which save a config to reuse by its config_id. See Saved configs.

Ids

Every id names the endpoint that made it, such as parse-<uuid>, extract-<uuid> or batch-<uuid>. Each route takes only its own endpoint’s ids: another endpoint’s id gets a 404. A config you save gets an id of the form <endpoint>-config-<uuid>. Each route returns its own id, such as classify_id or pipeline_id. Extract, Split, Tables and Charts read a parse by its parse_id:

Conventions

  • Bodies. A request body is JSON, or multipart form data when it uploads a file. A request that starts a job takes exactly one of config and a saved config_id. One that takes a single document takes exactly one of file and file_url.
  • Unknown fields. A request with a field the route doesn’t take is refused with a 400 that names the field.
  • Paging. The batch manifest pages with limit. While more entries remain, the Link header gives the next page’s URL.
  • Times. Times are ISO 8601 in UTC and end in Z, such as 2026-10-16T09:30:00Z.

Errors and retries

What each status means, and how to retry safely.

Pricing

What each endpoint costs, in credits.