Free
For developers exploring paperwork automation.
- 15,000 credits/mo, no card required
- All capabilities for 2 weeks
- 25 requests/min · best effort concurrency
- Cancel anytime, no contract
- Email support
One REST API for extraction, parsing, fill, forms, and e-signature, for platform teams shipping document workflows, and engineering teams tired of maintaining a parsing stack in-house.
POST /v1/extract 200 OK Extract grounded fields, fill the form, send it for signature. Copy it, paste it, run it against the real API.
import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
// 1 - Extract the fields you need, grounded to the source
const data = await client.extract({
body: {
file: { url: "https://www.irs.gov/pub/irs-pdf/fw9.pdf" },
schema: {
type: "object",
properties: {
business_name: { type: ["string", "null"] },
tax_classification: { type: ["string", "null"] },
},
},
citations: true,
},
});
// 2 - Fill the template from your source documents
const filled = await client.fill({
body: {
template: { url: "https://www.irs.gov/pub/irs-pdf/fw9.pdf", name: "w9.pdf" },
files: [{ id: "a04d6597-4e34-4a99-94ea-964c289a4c68" }],
instructions: "Use the legal entity name, not the trade name.",
},
});
// 3 - Send the result out for signature
const run = await client.sign({
body: {
file: { url: filled.output?.file?.url },
signers: [{ name: "Jane Doe", email: "jane@example.com" }],
message: "Please sign the completed W-9.",
},
});
console.log(run.status); // "needs_input" - signers get emailed their linksfrom cloudraker import (
V1FillBodyFilesItemId,
V1FillBodyTemplateName,
V1SignBodyFileName,
V1SignBodySignersItem,
)
from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
# 1 - Extract the fields you need, grounded to the source
data = client.extract(
file={"url": "https://www.irs.gov/pub/irs-pdf/fw9.pdf"},
schema={
"type": "object",
"properties": {
"business_name": {"type": ["string", "null"]},
"tax_classification": {"type": ["string", "null"]},
},
},
citations=True,
)
# 2 - Fill the template from your source documents
filled = client.fill(
template=V1FillBodyTemplateName(url="https://www.irs.gov/pub/irs-pdf/fw9.pdf", name="w9.pdf"),
files=[V1FillBodyFilesItemId(id="a04d6597-4e34-4a99-94ea-964c289a4c68")],
instructions="Use the legal entity name, not the trade name.",
)
# 3 - Send the result out for signature
run = client.sign(
file=V1SignBodyFileName(url=filled.output.file.url),
signers=[V1SignBodySignersItem(name="Jane Doe", email="jane@example.com")],
message="Please sign the completed W-9.",
)
print(run.status) # "needs_input" - signers get emailed their linksReal calls from the official SDKs — pip install cloudraker, npm install @cloudraker/api. Call them individually or combine them to build end-to-end paperwork workflows.
import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
// Split a PDF into one file per page
const pages = await client.tools.splitFilePages({
ref: "file_01JQ8ZKMRT4V6WXYZ0ABCDEF",
});
for (const page of pages.data) {
console.log(page.id, page.name); // invoice.p1.pdf, invoice.p2.pdf, ...
}from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
# Split a PDF into one file per page
pages = client.tools.split_file_pages(
ref="file_01JQ8ZKMRT4V6WXYZ0ABCDEF",
)
for page in pages.data:
print(page.id, page.name) # invoice.p1.pdf, invoice.p2.pdf, ...import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
const run = await client.parse({
body: {
file: { url: "https://www.irs.gov/pub/irs-pdf/fw9.pdf", name: "w9.pdf" },
},
output: "inline",
});
console.log(run.output?.markdown); // clean markdown, straight from the PDFfrom cloudraker import V1ParseBodyFileName
from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
run = client.parse(
file=V1ParseBodyFileName(url="https://www.irs.gov/pub/irs-pdf/fw9.pdf", name="w9.pdf"),
output="inline",
)
print(run.output.markdown) # clean markdown, straight from the PDFimport { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
const run = await client.extract({
body: {
file: { url: "https://example.com/inbound-document.pdf" },
schema: {
type: "object",
properties: {
document_type: {
type: ["string", "null"],
enum: ["invoice", "contract", "receipt", "tax_form", null],
},
},
},
},
});
console.log(run.output?.value);from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
run = client.extract(
file={"url": "https://example.com/inbound-document.pdf"},
schema={
"type": "object",
"properties": {
"document_type": {
"type": ["string", "null"],
"enum": ["invoice", "contract", "receipt", "tax_form", None],
}
},
},
)
print(run.output.value)import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
const run = await client.extract({
body: {
file: { url: "https://www.irs.gov/pub/irs-pdf/fw9.pdf" },
schema: {
type: "object",
properties: {
business_name: { type: ["string", "null"] },
tax_classification: { type: ["string", "null"] },
},
},
citations: true,
},
});
console.log(run.output?.value);from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
run = client.extract(
file={"url": "https://www.irs.gov/pub/irs-pdf/fw9.pdf"},
schema={
"type": "object",
"properties": {
"business_name": {"type": ["string", "null"]},
"tax_classification": {"type": ["string", "null"]},
},
},
citations=True,
)
print(run.output.value)import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
const run = await client.redact({
body: {
file: { url: "https://example.com/w9.pdf" },
categories: ["ssn", "ein"],
mode: "targeted",
},
});
console.log(run.output.files[0].url); // the redacted PDFfrom cloudraker import V1RedactBodyFileName
from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
run = client.redact(
file=V1RedactBodyFileName(url="https://example.com/w9.pdf"),
categories=["ssn", "ein"],
mode="targeted",
)
print(run.output.files[0].url) # the redacted PDFimport { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
const run = await client.fill({
body: {
template: { url: "https://www.irs.gov/pub/irs-pdf/fw9.pdf", name: "w9.pdf" },
files: [{ id: "a04d6597-4e34-4a99-94ea-964c289a4c68" }],
instructions: "Use the legal entity name, not the trade name.",
},
});
console.log(run.status, run.output?.file?.url);from cloudraker import V1FillBodyFilesItemId, V1FillBodyTemplateName
from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
run = client.fill(
template=V1FillBodyTemplateName(url="https://www.irs.gov/pub/irs-pdf/fw9.pdf", name="w9.pdf"),
files=[V1FillBodyFilesItemId(id="a04d6597-4e34-4a99-94ea-964c289a4c68")],
instructions="Use the legal entity name, not the trade name.",
)
print(run.status, run.output.file.url)import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
await client.compose.create({
template: "invoice",
data: { customer: "Acme Manufacturing Co.", number: "0042", total: 1240 },
});from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
client.compose.create(
template="invoice",
data={"customer": "Acme Manufacturing Co.", "number": "0042", "total": 1240},
)import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
// Convert a registered Word doc into a PDF
const pdf = await client.tools.convertFileToPdf({ ref: "msa.docx" });
console.log(pdf.id);from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
# Convert a registered Word doc into a PDF
pdf = client.tools.convert_file_to_pdf(ref="msa.docx")
print(pdf.id)import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
const merged = await client.tools.stitchFiles({
files: ["contract-part1.pdf", "contract-part2.pdf"],
});
console.log(merged.id, merged.name); // contract-part1.merged.pdffrom cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
merged = client.tools.stitch_files(
files=["contract-part1.pdf", "contract-part2.pdf"],
)
print(merged.id, merged.name) # contract-part1.merged.pdfimport { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
// Open a redlining session on a Word document (tracked changes)
const session = await client.tools.redlineFile({
ref: "msa.docx", // file id or file name in your corpus
body: { ttl: 86400 }, // session lifetime in seconds
});
console.log(session.id); // e.g. "rdl_01K9Z6P2R4"from cloudraker.client import CloudRaker
client = CloudRaker(token="YOUR_API_KEY")
# Open a redlining session on a Word document (tracked changes)
session = client.tools.redline_file(
ref="msa.docx", # file id or file name in your corpus
ttl=86400, # session lifetime in seconds
)
print(session.id) # e.g. "rdl_01K9Z6P2R4"import { CloudRakerClient } from "@cloudraker/api";
const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
const run = await client.sign({
body: {
file: { url: "https://example.com/msa.pdf" },
signers: [{ name: "Jane Doe", email: "jane@example.com" }],
message: "Please sign the master services agreement.",
},
});
console.log(run.status); // "needs_input" — signers get emailed their linksfrom cloudraker.client import CloudRaker
from cloudraker import V1SignBodySignersItem, V1SignBodyFileName
client = CloudRaker(token="YOUR_API_KEY")
run = client.sign(
file=V1SignBodyFileName(url="https://example.com/msa.pdf"),
signers=[
V1SignBodySignersItem(name="Jane Doe", email="jane@example.com"),
],
message="Please sign the master services agreement.",
)
print(run.status) # "needs_input" — signers get emailed their linksDeploy it your way, prove it to the people who have to sign off, and never lose sight of what's running underneath.
Build on CloudRaker. Authenticate, process documents, and automate your workflows over the API.
The CloudRaker gateway API: spaces, files, actions, workflows, objects, and knowledge graphs. One tenant per token.
See how CloudRaker automates paperwork across real business processes, from data extraction and document review to forms, signatures, and end-to-end workflows.
Follow the latest CloudRaker updates, from new capabilities and improvements to fixes and platform changes.
Research, comparisons, news, and insights on paperwork automation, AI, and the technologies shaping how businesses work.
For developers exploring paperwork automation.
For teams running paperwork workflows.
For businesses running multiple workflows.
For advanced automation needs.
Same capabilities underneath. Pick whichever surface fits how you work.
Self-serve signup, a working response in a couple minutes, and you're building. No credit card to start. No commitment to keep building.