Define document categories, send a PDF to /splitter, and receive separate downloadable PDFs with a confidence score for each result. Use it to separate mixed intake batches before downstream processing.
Split classifies pages against categories you define and creates separate PDF files from the result. Each returned file includes a category-based name, download URL, and confidence score.
Teams processing combined statements, mailroom scans, and intake batches that need to separate document types before routing or extraction.
Mixed PDFs force downstream systems to handle unrelated document types together. Split separates the batch first so each output file can follow the workflow for its category.
Separate invoices, receipts, contracts, and other document classes from one scanned PDF.
Divide a merged statement package into labeled outputs for account- or document-specific processing.
Separate forms, identification, evidence, and supporting documents before extraction.
Route labs, referrals, notes, and administrative pages to the workflow for each category.
Split agreements and supporting exhibits into files that can be reviewed or processed separately.
Turn scanned bundles into labeled PDFs before indexing and retention workflows run.
Define each category with a name and optional description so the classification criteria travel with the request.
The completed job returns a file name and download URL for each split result.
Use the returned confidence score to decide which files continue automatically and which require review.
Submit the PDF once, then poll the job while the service classifies pages and creates the output files.
Page classification uses document content rather than relying only on bookmarks or filenames.
Send each downloaded PDF to the parsing, extraction, storage, or review workflow for its category.
POST the file and a JSON categories array to /splitter with your api-key header.
Split assigns pages to the supplied categories using the page content and layout.
GET /splitter/{job_id} until the status is completed or failed.
Read each result from result.files and use full_path to download the generated PDF.
1 import os, json, time, requests 2 3 BASE = "https://prod.visionapi.unsiloed.ai" 4 HEADERS = {"api-key": os.environ["UNSILOED_API_KEY"]} 5 6 categories = [ 7 {"name": "invoice", 8 "description": "Invoices with payment details"}, 9 {"name": "contract",10 "description": "Agreements and legal terms"}11 ]12 13 with open("mixed_documents.pdf", "rb") as file:14 response = requests.post(15 f"{BASE}/splitter", headers=HEADERS,16 files={"file": file},17 data={"categories": json.dumps(categories)}18 )19 response.raise_for_status()20 job_id = response.json()["job_id"]21 22 for _ in range(60):23 response = requests.get(24 f"{BASE}/splitter/{job_id}", headers=HEADERS)25 response.raise_for_status()26 job = response.json()27 if job["status"] == "completed": break28 if job["status"] == "failed":29 raise RuntimeError(job.get("error", "Split failed"))30 time.sleep(5)31 else:32 raise TimeoutError("Split did not finish in 5 minutes")33 34 for file in job["result"]["files"]:35 print(file["name"], file["full_path"])Use the same submit-and-poll workflow from prototype through production. Page-based pricing starts with a free tier, with managed, VPC, on-premises, and air-gapped deployment options for larger workloads.
Read the docsuptime target on enterprise plans.
Split uses the same authentication and billing as every other capability. Combine it with Parse, Extract, Split, and Classify, or call it on its own.
Tell us a little about your workflow and share a sample document.
We’ll use it to show you a structured output during the call.
The accuracy, especially on tables, is meaningfully better than anything we tested. We evaluated over 15 solutions and Unsiloed was the only one that worked reliably.
Head of AI
Fortune 150 Bank, NY