SDKs

Typed clients for TypeScript and Python that handle the base URL and bearer token for you.
View as Markdown

CloudRaker ships typed SDKs for TypeScript and Python: @cloudraker/api on npm and cloudraker on PyPI. Both wrap the same API. They set the Authorization header from a token you provide and default to the Production base URL. Method names map to the API reference.

The SDKs target https://api.cloudraker.com out of the box. There is no base URL to configure.

As of 0.3.0 both SDKs cover the whole /v1 surface, alongside the rest of the API. This includes the six capability verbs, batch extraction, the run lifecycle including GET /v1/runs, files, templates, actions, and webhooks.

The six verbs are top-level methods on the client, not a namespace: extract, extractBatch, parse, redact, fill, sign, pipeline (snake_case in Python: extract_batch).

TypeScript — @cloudraker/api

Uses native fetch. Ships precompiled CJS + ESM, so no build step is necessary.

Install

npm install @cloudraker/api

Use

import { CloudRakerClient, CloudRakerEnvironment } from "@cloudraker/api";
const client = new CloudRakerClient({
environment: CloudRakerEnvironment.Production, // the default — you can omit this
token: process.env.CLOUDRAKER_API_KEY!, // string, or a () => string supplier
});
// health check (no auth required)
await client.health();
// current identity
const me = await client.me.getMe();
// list spaces
const spaces = await client.spaces.listSpaces();

Extract, end to end

import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: process.env.CLOUDRAKER_API_KEY! });
const run = await client.extract({
file: { url: "https://www.irs.gov/pub/irs-pdf/fw9.pdf", name: "w9.pdf" },
citations: true, // off by default; ask for the evidence
schema: {
type: "object",
properties: {
business_name: { type: ["string", "null"] },
tax_classification: { type: ["string", "null"] },
},
},
});
if (run.status === "processed") {
console.log(run.output?.value); // the extracted object
console.log(run.output?.citations); // JSON path -> fileId + page + bbox; absent unless citations were asked for
} else {
// still running past the wait window — poll by id
const latest = await client.runs.getRun({ id: run.id });
console.log(latest.status);
}

The call holds open until the run finishes, up to wait seconds (default 60, max 120, 0 returns immediately). See runs for the polling and webhook paths.

Resource namespaces on the client: actions, authorization, dataObjects, files, home, installedActions, me, ontology, organizationSettings, organizationTemplates, playbooks, process, runs, search, spaceFiles, spaceRuns, spaces, templates, webhooks — plus the top-level health(), extract(), extractBatch(), parse(), redact(), fill(), sign() and pipeline(). The full per-endpoint method list lives in the SDK’s dist/reference.md.

Python — cloudraker

Sync and async clients, built on httpx + pydantic. Requires Python 3.9+.

Install

pip install cloudraker

Use (sync)

import os
from cloudraker.client import CloudRaker
from cloudraker.environment import CloudRakerEnvironment
client = CloudRaker(
environment=CloudRakerEnvironment.PRODUCTION, # the default — you can omit this
token=os.environ["CLOUDRAKER_API_KEY"], # str, or a Callable[[], str] supplier
)
client.health()
me = client.me.get_me()
spaces = client.spaces.list_spaces()

Extract, end to end

import os
from cloudraker.client import CloudRaker
client = CloudRaker(token=os.environ["CLOUDRAKER_API_KEY"])
run = client.extract(
file={"url": "https://www.irs.gov/pub/irs-pdf/fw9.pdf", "name": "w9.pdf"},
citations=True, # off by default; ask for the evidence
schema={
"type": "object",
"properties": {
"business_name": {"type": ["string", "null"]},
"tax_classification": {"type": ["string", "null"]},
},
},
)
if run.status == "processed":
print(run.output.value) # the extracted object
print(run.output.citations) # JSON path -> fileId + page + bbox; absent unless citations were asked for
else:
# still running past the wait window — poll by id
print(client.runs.get_run(id=run.id).status)

The call holds open until the run finishes, up to wait seconds (default 60, max 120, 0 returns immediately). See runs for the polling and webhook paths.

Async

from cloudraker.client import AsyncCloudRaker # same signature, awaitable methods
client = AsyncCloudRaker(
environment=CloudRakerEnvironment.PRODUCTION,
token=os.environ["RAKERONE_API_KEY"],
)
me = await client.me.get_me()

The constructor also accepts base_url, headers, timeout (default 60s), max_retries (default 2), follow_redirects (default True), and httpx_client. Resource namespaces mirror the TypeScript client (snake_case): actions, authorization, data_objects, files, home, installed_actions, me, ontology, organization_settings, organization_templates, playbooks, process, runs, search, space_files, space_runs, spaces, templates, webhooks — plus the top-level health(), extract(), extract_batch(), parse(), redact(), fill(), sign() and pipeline(). The full method list is in the SDK’s src/cloudraker/reference.md.

Authentication

The token you pass is an organization API key or a session JWT. Both go in the Authorization: Bearer header, which the SDK sets for you. Pass a () => string supplier to rotate the token without rebuilding the client.

Where to go next