17trust / 100

Parse

by Unsiloed AI in Documents & files

x402 APIFailing, checked 24 h ago

Creates a parse job for a PDF, JPEG, PNG, WEBP or PPTX document sent by URL or as a multipart upload, and returns the job id at once. Word, TIFF and other formats are converted to PDF first. Poll GET /parse/{job_id} for the ordered chunks with Markdown, HTML, OCR text, bounding boxes and confidence per segment. Options select the layout model, OCR engine, page range, output fields and exports. Excel workbooks go to POST /parse/excel. Usage is the page count of the document.

POST
https://agents.prod.visionapi.unsiloed.ai/parse
Price
$0.02
per call in USDC
Uptime
13.3%
last 30 days
Response time
832 ms
986 ms slowest 5%
Last check
Failed
24 h ago, next in 2 days

Run a free test callHow to call it

Reliability

All checks passedSome failedAll failedNot checked

Latest check failed 24 h ago: Connection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)

Status and outage history · Atom feed · Watch with other listings

How to call it

POST https://agents.prod.visionapi.unsiloed.ai/parse

Each call costs $0.02 in USDC on Base, paid with the request over x402.

Run a free test callOne unpaid request, the way an agent sends it. You see the payment challenge it gets back. Nothing is charged.

Example request

From the listing.

POST https://agents.prod.visionapi.unsiloed.ai/parse
content-type: application/json

{
  "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
}

Parameters

ParameterTypeRequiredDescription
agentic_ocrstringNoRe-reads each segment with an agentic OCR model after layout detection for higher accuracy; omit to disable. One of: standard, advanced.
detect_piibooleanNoRun a PII detection pass first. When PII at or above pii_block_severity is found the job is not created and the response says so. Default: false.
enhance_reading_orderbooleanNoReorder segments into natural reading order; recommended for multi-column layouts. No effect with page_by_page. Default: false.
error_handlingstringNoContinue skips segments that fail (for example a model refusal); Fail stops the job on the first error. One of: Continue, Fail. Default: "Continue".
export_formatarray of stringNoExport files to generate after parsing; their download links appear in the exports field of the result.
extract_colorsbooleanNoCarry text colour from the PDF text layer into the OCR results. Default: false.
extract_linksbooleanNoAttach hyperlink URLs from PDF annotations to the OCR results. Default: false.
extract_strikethroughbooleanNoKeep strikethrough formatting in the HTML and Markdown output. Default: false.
layout_analysisstringNoHow pages are segmented: smart_layout_detection finds headers, sections, tables and figures with bounding boxes; page_by_page treats each page as one segment (fastest); advanced_layout_detection runs a vision model for dense or unusual layouts. One of: smart_layout_detection, page_by_page, advanced_layout_detection. Default: "smart_layout_detection".
merge_batch_sizeintegerNoMost tables per merge group when merge_tables is on. Default: 20.
merge_tablesbooleanNoStitch tables that continue across page breaks into one table by matching headers and columns. Default: false.
ocr_enginestringNoOCR engine: Hawk for complex layouts and mixed content (the documented default), Beta for rotated or warped text, Storm for 50 plus languages. One of: UnsiloedHawk, UnsiloedBeta, UnsiloedStorm.
ocr_strategystringNoauto_detection runs OCR only where the page needs it; force_ocr runs it on every page. One of: auto_detection, force_ocr. Default: "auto_detection".
output_fieldsstringNoJSON-encoded object of booleans to drop fields from each segment: html, markdown, ocr, image, content, bbox, confidence, embed, chart_data. All default to true.
page_rangestringNoPages to process, for example 1-5, 2,4,6 or [1,3,5]. Defaults to all pages.
pii_block_severitystringNoSeverity that blocks the job when detect_pii is on: any finding, quasi-identifiers (names, dates, locations), contact details (email, phone), or direct identifiers only (SSN, passport, card numbers). One of: any, low, medium, high. Default: "any".
pii_enginestringNoPII detector: standard is the fast pattern engine, advanced has higher precision. One of: standard, advanced. Default: "standard".
response_profilestringNoslim returns only embed text, bbox, page number, segment id and type plus HTML for tables or Markdown for the rest; full returns everything; custom honours output_fields. One of: slim, full, custom.
segment_analysisstringNoJSON-encoded object setting, per segment type, whether HTML and Markdown come from a vision model (VLM) or straight from OCR (Auto), the model id, a custom prompt and optional translation. See the Unsiloed parse reference for the per-type defaults.
segment_filterstringNoComma-separated segment types to keep (table, picture, formula, text, sectionheader, title, listitem, caption, footnote, pageheader, pagefooter, keyvaluepair, signature, seal, page) or all. Default: "all".
segment_type_namingstringNoSegment type names: Unsiloed (PageHeader, ListItem, Picture) or Other (Header, List Item, Figure). One of: Unsiloed, Other. Default: "Unsiloed".
segmentation_versionstringNoLayout model. v2 is form-aware and also returns KeyValuePair, Signature and Seal segments; use it for forms and applications. One of: v1, v2. Default: "v1".
urlstring (uri)YesPublic or presigned URL of the document to process. To upload the file itself instead, send multipart/form-data with the file in the file field as the Unsiloed docs show; uploads above 10 MB must use a URL.
use_high_resolutionbooleanNoUse high-resolution page images for cropping and OCR. Better on poor scans, about 2 to 3 seconds more per page.
validate_segmentsstringNoJSON-encoded array of segment types to re-check with a vision model, for example ["Table","Formula","Picture"]. Defaults to Table and Picture.
xml_citationbooleanNoExtract the bibliography of a research PDF and hyperlink in-text citations in the Markdown. PDFs only. Default: false.

Example response

The listing has no example response.

Call it from code

The curl command shows the payment challenge. The JavaScript and Python versions pay and call, and never pay more than $0.02.

curl: see the payment challenge
# bash or zsh: see the payment challenge. Nothing is charged.
curl -sS -g -i -X POST 'https://agents.prod.visionapi.unsiloed.ai/parse' \
  -H 'content-type: application/json' \
  --data-raw '{"url":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"}'

# x402 v2 sends the challenge base64-encoded in the PAYMENT-REQUIRED header (v1 sends it in the body).
# To read the header:
curl -sS -g -o /dev/null -D - -X POST 'https://agents.prod.visionapi.unsiloed.ai/parse' \
  -H 'content-type: application/json' \
  --data-raw '{"url":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"}' \
  | grep -i '^payment-required:' | cut -d' ' -f2 | tr -d '\r' | base64 --decode
JavaScript: pay and call
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

// Pays at most $0.02 per call.
const client = new x402Client().setSpendControls({ maxAmountPerPayment: "$0.02" });
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.EVM_PRIVATE_KEY) });
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? ToolVet checks it first for $0.005. Pay for that from a separate
// client: this one is capped at $0.02 per payment. GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fagents.prod.visionapi.unsiloed.ai%2Fparse&method=POST
const res = await pay("https://agents.prod.visionapi.unsiloed.ai/parse", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
  }),
});
console.log(res.status, await res.text());
Python: pay and call
# pip install "x402[requests,evm]"
import os
from eth_account import Account
from x402 import x402ClientSync
from x402.http.clients import x402_requests
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

# Pays at most $0.02 per call.
client = x402ClientSync().set_spend_controls({"max_amount_per_payment": "$0.02"})
register_exact_evm_client(client, EthAccountSigner(Account.from_key(os.environ["EVM_PRIVATE_KEY"])))

with x402_requests(client) as session:
    res = session.post(
        "https://agents.prod.visionapi.unsiloed.ai/parse",
        json={
            "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
        },
    )
    print(res.status_code, res.text)

Security scan

No findings

We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
24 h agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
29 h agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
34 h agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
38 h agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
43 h agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
Show 10 older checks
2 days agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
2 days agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
2 days agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
3 days agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
3 days agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
3 days agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
3 days agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
3 days agoConnection failed (ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE)---
3 days agoPassed402986 ms$0.02
4 days agoPassed402832 ms$0.02