Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.docintell.com/llms.txt

Use this file to discover all available pages before exploring further.

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']}")