Skip to main content

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])
For the full set of parameters accepted by /parse, see the Parse API reference.