Skip to navigation

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