Documentation Index
Fetch the complete documentation index at: https://docs.unsiloed.ai/llms.txt
Use this file to discover all available pages before exploring further.
Instead of uploading a file with multipart form data, you can point /parse at a presigned URL using the url field. This is the right pattern when your documents already live in cloud storage (S3, GCS, Azure Blob, Supabase, etc.) — no need to download them locally first.
The submit-and-poll flow is identical to the upload path; only the request body differs.
import os
import requests
import time
API_KEY = os.environ["UNSILOED_API_KEY"]
BASE_URL = "https://prod.visionapi.unsiloed.ai"
document_url = "https://example.com/path/to/your/document.pdf"
response = requests.post(
f"{BASE_URL}/parse",
headers={"api-key": API_KEY},
data={"url": document_url},
)
response.raise_for_status()
job_id = response.json()["job_id"]
print(f"Job submitted: {job_id}")
while True:
result = requests.get(
f"{BASE_URL}/parse/{job_id}",
headers={"api-key": API_KEY},
).json()
print(f"Status: {result['status']}")
if result["status"] == "Succeeded":
break
if result["status"] == "Failed":
raise RuntimeError(result.get("message", "parse job failed"))
time.sleep(5)
print(f"Total chunks: {result['total_chunks']}")
for chunk in result["chunks"]:
print(chunk["embed"][:100])