Skip to main content
All commands share a few conventions:
  • --json switches any command to raw, pipe-safe JSON on stdout.
  • --no-wait submits async work and prints the job_id instead of polling; resume with pulse jobs get.
  • --api-key overrides the stored credential for one invocation (also read from the PULSE_API_KEY environment variable).
  • -h after any command prints its full options.

pulse extract

Convert documents to markdown and JSON. Accepts any mix of file paths, directories (recursed for supported types), and URLs.
Each input produces <name>.pulse.md and <name>.pulse.json next to the source file (-o <dir> redirects; URL inputs land in the current directory). The output always includes the extraction_id you’ll need for follow-up commands. Add --schema to run extraction and structured output as one pipeline; the structured fields are written to <name>.pulse.schema.json:
Files up to 50 MB upload directly. Pass larger documents by URL. See supported file types.

pulse schema

Structured extraction against a previous extraction. (To extract and structure in one command, use pulse extract --schema above.)

pulse schema generate

AI-draft a JSON Schema from a plain-English description, or refine an existing one:

pulse schema apply

Run a schema against extracted content:

pulse split

Split a prior extraction into sections by topic:
Returns per-topic page ranges and content. The resulting split_id feeds pulse schema apply --split-id for per-topic structured extraction.

pulse tables

Pull tables out of a prior extraction:

pulse jobs

Every long-running command runs async under the hood and polls for you. Hand control back with --no-wait, or press Ctrl-C while polling (the job keeps running server-side), and resume any time:

pulse usage

Plan and usage for the current billing period: pages used vs. allowance, plus a breakdown by source (documents, pages, latency):

pulse open

Jump from the terminal to the platform:

pulse login / whoami / logout

Credential precedence on every command:
  1. --api-key <key> flag
  2. PULSE_API_KEY environment variable (recommended for CI)
  3. Stored credential from pulse login (OS keychain)
Treat your API key like a password. In CI, inject PULSE_API_KEY from your secret store rather than writing keys into scripts.
pulse login --base-url <url> points the CLI at a different engine (for example a VPC deployment).

Interactive mode

  • Bare pulse starts an interactive shell with the full command set and inline help.
  • pulse dashboard opens a full-screen account and usage view.

Scripting and output

  • Human-readable progress goes to the terminal; --json makes stdout pure JSON, so pulse extract report.pdf --json | jq .markdown just works.
  • File-writing commands echo every path they write plus the extraction_id.
  • Exit codes: 0 success, 1 failure (any document in a batch failing), 130 interrupted (job still running server-side).

Troubleshooting

Run pulse whoami to see which credential is active and where it came from. A flag or PULSE_API_KEY overrides the stored key, so a stale environment variable is the usual culprit. Re-run pulse login to refresh the stored key.
You passed --no-wait or interrupted polling. The job is still running server-side: pulse jobs get <job_id> --watch picks it back up.
pulse usage talks to the platform API rather than the extraction engine. Re-run pulse login (browser flow configures both), or set the platform URL with pulse login --platform-url https://platform.runpulse.com.
Direct uploads cap at 50 MB. Host the document somewhere reachable (a pre-signed S3 URL works) and pass the URL to pulse extract.
Your plan limit was reached. Check pulse usage, upgrade in the platform, or contact support.

Next steps

CLI overview

Install, login, and when to use the CLI.

API reference

The endpoints behind every command.