requests library.
Installation
Copy
pip install requests
Configuration
Copy
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
Copy
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
Copy
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
Copy
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']}")