Skip to main content
Version 2 keeps the base URL and your API keys. You choose the version on each request with the Pulse-Version header, so you can move one call at a time.
Two endpoints change names. Version 1’s /extract is version 2’s /parse, and version 1’s /schema is version 2’s /extract, which reads a parse_id instead of a document. Rename each call when you add the header.
You can’t create a version 1 saved pipeline on the hosted API anymore. A version 1 POST /pipeline is refused, because that path now runs version 2 pipelines. Saved pipelines you already have still run on version 1.

Move your calls

1

Send the header

Use a 2.x SDK, which sends Pulse-Version: 2 for you, or add the header to each raw HTTP call you move.
2

Rename the call

Rename the endpoint, move its options into config, and read the result from the job’s /result route. The tables below map each name.
3

Change the default, if you want

Once every call sends the header, an admin can make version 2 the default.

Which version serves a request

A request with Pulse-Version: 2 or Pulse-Version: 1 reaches that version, and any other value is refused with 400. A request without the header reaches your organization’s default version, its default_api_version. When the default is 2 but version 2 has no such route, version 1 serves it. A few requests don’t follow these rules:
  • A job’s routes follow its id. A parse-… id reaches version 2 with or without the header, and a version 1 job id, a bare UUID, reaches version 1.
  • Ids don’t cross versions. A version 2 id sent to version 1 is refused, and so is a version 1 extraction_id sent to version 2 as a parse_id.
  • Saved configs and /settings/org exist only in version 2. Without the header they reach version 2; with Pulse-Version: 1 they’re refused.

Change the default version

New organizations start with version 1 as their default. An organization admin can change it in the dashboard, under Organization Settings → Default API Version, or with a key whose creator is an organization admin:
The new default applies to requests within a minute.
Keep the default at 1 while you still use the 1.x SDKs, the MCP server or the CLI. They send no Pulse-Version, so with the default at 2, their calls to /extract, /split, /tables, /charts, /classify, POST /webhook and /usage reach version 2 and fail. In the 1.x SDKs, those calls are extract, split, tables, charts, classify, webhooks.create_webhook_link and usage.get.

Endpoints

Pay-per-request (MPP) keys also stay on version 1.

What changed on every endpoint

/extract becomes /parse

Every version 2 option below sits inside config. Parse describes the rest, such as spreadsheet options and extensions.

/schema becomes /extract

Split, Tables and Charts


SDKs

The 2.x Python SDK, pulse-ai, and the 1.x pulse-python-sdk both install the pulse module, so uninstall the 1.x package first:
TypeScript has the same calls in camelCase. The 2.x SDKs never retry a request on their own: SDKs shows how to retry safely.