Process API
The /process API is a one-call ingestion pipeline. You send files and an optional list of actions in one multipart request. CloudRaker parses each file and runs the actions. It holds the results for a TTL you choose, then purges everything. You get a processing id to poll. You can also receive signed webhooks as each event happens.
This is the fastest way to turn documents into structured data from your backend. You do not set up spaces or manage files.
Authorization is org-level. The caller must be an org API key or an org admin.
The flow
Start a pipeline
POST /process takes multipart/form-data: one part named options (JSON) plus one part per file you declare.
The options part
files[]— one entry per file.fieldmust match the name of a multipart part that carries the file’s bytes.processingKindis optional.actions[]— the installed actions to run against the ingested files. Each entry is an installed action’s id or its per-organization slug. The two are interchangeable everywhere the API takes an installed action. Optional; defaults to none.callbackUrl— a receiver for signed webhook events. Optional.durationSeconds— the time results live before auto-purge. Default 24h, max 7 days.
processingKind is one of:
Request
Response — 201
Pipeline order: CloudRaker ingests and parses each file. It dispatches the declared actions and collects the results. It emits webhooks, holds everything until the TTL, then purges it.
The platform caps the request body at approximately 100 MB. For large files, register them into a space with the presigned upload flow instead. That flow streams directly to object storage.
Possible errors: 400 (malformed multipart or manifest), 403 (caller is not an org admin and not an org API key).
Poll for status and results
Query parameters
include— comma-separated list ofcontent,results,evidence. The API inlines these heavier payloads only when you request them.format—json(default) ormarkdown.
ProcessStatus response
content (per file), results (per action), and evidence appear only when you request them with include.
Audio files have no markdown byproduct. include=content&format=markdown returns null for audio content. Use format=json.
Action results
actions[].result arrives with include=results, once that action’s status is done. Its shape depends on what the action produces.
Actions that extract data (extract) return the grounded result. docs[] holds one entry per source file, data holds the extracted fields, and evidence cites them. Citations are heavy, so they appear only with include=results,evidence.
Actions that produce a file (redact, fill, sign, generate, split) return output and files. output is the action’s own report. files resolves the ids in output.documentIds to download links valid about one hour — fetch them before they expire, or poll again for fresh ones.
Actions that return neither — classify, connector-call — carry output alone, with no files.
When there is no result
result: null and resultError are distinct. Do not treat a missing result as an error, and do not treat a read failure as an empty result.
Poll responses
Purge early
Cancels in-flight work immediately. Deletes files, runs, and stored results. Returns 204.
TTL and lifecycle
A pipeline lives until expiresAt (durationSeconds from creation; default 24h, max 7 days). At expiry, CloudRaker cancels runs, purges outputs, and deletes the files. It emits a processing.expired webhook. The id then answers 410 for a short grace window (~24h), then 404 after the hard wipe. Fetch everything you need before expiresAt, or set a longer TTL at creation.