API overview
REST over HTTPS, multipart uploads, JSON responses, X-API-Key auth, RFC 3339 timestamps, opaque string ids. Every endpoint is scoped to the key's workspace.
Base URL
https://api.us.idpforge.cloud/v1The API endpoint card on a pipeline's Versions tab shows the full job submission URL for your workspace.
Walkthrough
This click-through runs a pipeline from the API Playground, then follows the result through the Jobs screen and into a document — the same path this API drives. It runs in your browser and loads nothing until you press play.
The API Playground, Jobs, and Documents end to end — submit a job, watch it run, and read the extracted data.
Resources
| Resource | Description |
|---|---|
jobs | One file run through one pipeline. Owns processing status, per-stage progress and the result. |
documents | The documents a job produces — lifecycle, lineage, event history and extracted data. |
pipelines | Pipeline definitions and their versions. |
webhooks | Outbound endpoints bound to pipeline stages, with HMAC-signed delivery. |
Errors
Most errors return a flat envelope. error is a stable machine-readable code; message is for humans and may change.
{
"error": "PIPELINE_NOT_PUBLISHED",
"message": "Pipeline 0191f3a1-5d2e-7c40-8b1a-2f3e4d5c6b7a has no published version — cannot submit a job against it.",
"timestamp": "2026-09-11T06:12:44.512Z"
}Authentication failures and job lookups nest the code instead:
{
"error": {
"code": "unauthorized",
"message": "Invalid API key"
}
}Branch on the HTTP status first, then on the code.
Billing
Every job reserves credits when it is submitted and settles to what it used. A submission against an insufficient balance returns 402 Payment Required and creates no job. Jobs tagged test consume credits exactly like production jobs. See Credits.
Pagination
GET /v1/jobs is cursor-paginated. Pass limit (1–100, default 25) and, for every page after the first, cursor set to the page.next_cursor value from the previous response. page.has_more is false on the last page.
Other list endpoints, such as GET /v1/pipelines and GET /v1/webhooks, are page-numbered with page and page_size.
Duplicate submissions
Job submission is not idempotent. There is no idempotency key: sending the same file twice creates two jobs and reserves credits twice. client_reference_id is stored on the job and echoed back so you can correlate it with your own records — it is not used to detect duplicates.
Rate limits
The API does not rate-limit job submission. There is no per-day job cap and no per-minute request throttle, on any plan.
What does bound throughput is credits: every submission reserves credits before the job is queued, and a workspace without enough credits is rejected with 402 PAYMENT_REQUIRED. See Credits.