Skip to main content
Complete Python examples using the requests library.

Installation

pip install requests

Configuration

import requests
import time
import os

API_KEY = os.environ.get("DOCINTELL_API_KEY")
BASE_URL = "https://api.docintell.com"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

Upload a Document

def upload_document(file_path: str, retention_years: int = 7) -> dict:
    """Upload a PDF document for extraction."""
    with open(file_path, "rb") as f:
        response = requests.post(
            f"{BASE_URL}/v1/documents",
            headers=headers,
            files={"file": f},
            data={"retention_years": retention_years}
        )

    response.raise_for_status()
    return response.json()

# Usage
result = upload_document("invoice.pdf")
print(f"Job ID: {result['job_id']}")

Wait for Completion

def wait_for_job(job_id: str, timeout: int = 120) -> dict:
    """Poll until job completes or times out."""
    start = time.time()

    while time.time() - start < timeout:
        response = requests.get(
            f"{BASE_URL}/v1/jobs/{job_id}",
            headers=headers
        )
        response.raise_for_status()
        job = response.json()

        if job["status"] == "completed":
            return job
        elif job["status"] == "failed":
            raise Exception(f"Job failed: {job.get('error_message')}")

        time.sleep(2)

    raise TimeoutError(f"Job {job_id} did not complete")

# Usage
job = wait_for_job(result["job_id"])

Complete Example

import requests
import time
import os

API_KEY = os.environ["DOCINTELL_API_KEY"]
BASE_URL = "https://api.docintell.com"
headers = {"Authorization": f"Bearer {API_KEY}"}

def process_document(file_path: str) -> dict:
    """Complete workflow: upload and wait for extraction."""

    # 1. Upload
    with open(file_path, "rb") as f:
        response = requests.post(
            f"{BASE_URL}/v1/documents",
            headers=headers,
            files={"file": f}
        )
    response.raise_for_status()
    upload_result = response.json()

    print(f"Uploaded: {upload_result['job_id']}")

    # 2. Wait for completion
    job_id = upload_result["job_id"]
    while True:
        response = requests.get(
            f"{BASE_URL}/v1/jobs/{job_id}",
            headers=headers
        )
        job = response.json()

        if job["status"] == "completed":
            break
        elif job["status"] == "failed":
            raise Exception(job["error_message"])

        time.sleep(2)

    print(f"Extraction completed in {job['processing_time_seconds']}s")
    return job

# Run
if __name__ == "__main__":
    result = process_document("invoice.pdf")
    print(f"Document ID: {result['document_id']}")