The agent storefront at https://agents.unsiloed.ai/llms.txt?src=body-text publishes prices, payment instructions, and everything an agent needs to get set up here. Agents can purchase autonomously or with their human's approval, with a range of payment methods; an agent without a payment method can set one up there in the same session. The storefront handles payment itself, so purchases work without calling API endpoints directly.
Send a PDF and JSON Schema to /v2/extract to receive schema-shaped values with a confidence score on each field. Enable citations when you also need source-page coordinates.
The values that matter are often computed from the ones that are — something like f(g(h(x₁, x₂, x₃))). Instead of extracting raw fields and hand-writing a computation pipeline for every document type, describe the answer you need. Extract builds the graph, writes the math as deterministic code, and returns the result.
Your request becomes a directed acyclic graph. Leaf nodes are values extracted from the document; compute nodes are calculated from other nodes.
The graph is topologically sorted, so no node runs before its inputs are ready.
A model writes a deterministic function for each compute node. A second model checks it against the calculation it's meant to perform.
The full graph compiles into a single executable script. The model interprets; code computes. When a layout changes, leaves are re-extracted and the graph regenerated — no per-template pipeline to maintain.
Extract takes a PDF and valid JSON Schema, then returns values that follow the requested structure. Each field includes a confidence score, and optional citations link values to their location in the source PDF.
Teams automating invoices, contracts, claims, and onboarding workflows that need consistent fields from documents with varied layouts.
Prompt-only extraction can change shape between runs and provides little evidence for verification. Extract constrains the response to your schema and can return source coordinates alongside the values.
Return vendor details, totals, line items, and payment terms in one consistent schema across varied invoice layouts.
Parties, dates, renewal terms, and governing law pulled into a consistent shape for review.
Extract balance-sheet and filing figures with per-field scores that can drive review thresholds.
ID fields, claim amounts, and applicant details captured with citations for audit.
Represent repeated rows as schema-defined arrays instead of flattening them into a single text field.
Apply the same schema to a document batch so each response follows the same field structure.
Define field names, types, required values, arrays, and nested objects before the job runs.
Use each field’s score to set review thresholds based on the risk and document type in your workflow.
Enable citations when reviewers need to trace a value to its position in the PDF.
Model line items, parties, transactions, and other repeated structures directly in the schema.
Set required fields and disable additional properties when downstream systems need a fixed response shape.
The document pipeline can read image-only and scanned PDF pages before extracting the requested values.
POST pdf_file and schema_data to /v2/extract with your api-key header, add enable_citations when you need source coordinates, and capture the returned job ID.
The service locates a value for each requested field and calculates its confidence score.
GET /extract/{job_id} until the status is completed or failed.
Read extracted values from result and, when citations are enabled, use each field’s bbox and page to trace them to the 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 schema = { 7 "type": "object", 8 "properties": { 9 "vendor": {"type": "string"},10 "amount": {"type": "number"}11 },12 "required": ["vendor", "amount"],13 "additionalProperties": False14 }15 16 with open("invoice.pdf", "rb") as file:17 response = requests.post(18 f"{BASE}/v2/extract", headers=HEADERS,19 files={"pdf_file": file},20 data={21 "schema_data": json.dumps(schema),22 "enable_citations": "true"23 }24 )25 response.raise_for_status()26 job_id = response.json()["job_id"]27 28 for _ in range(60):29 response = requests.get(30 f"{BASE}/extract/{job_id}", headers=HEADERS)31 response.raise_for_status()32 job = response.json()33 if job["status"] in ("completed", "review"): break34 if job["status"] == "failed":35 raise RuntimeError(job.get("error", "Extract failed"))36 time.sleep(5)37 else:38 raise TimeoutError("Extract did not finish in 5 minutes")39 40 print(job["result"])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.
Extract 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 team, then pick a time.
Bring a sample document and we’ll show you structured output on it 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