Python SDK for the Infratex document intelligence API
Project description
Infratex Python SDK
Official Python client for the Infratex document intelligence API. Parse PDFs, build search indexes, and generate AI-powered answers grounded in your documents.
Installation
pip install infratex
Quick start
from infratex import Infratex
client = Infratex(api_key="infratex_sk_...")
# Upload and parse a PDF
doc = client.documents.upload("report.pdf")
print(doc.id, doc.status, doc.page_count)
# Index for search
index = client.documents.index(doc.id, method="vector")
# Search
results = client.searches.create(query="revenue growth", document_ids=[doc.id])
for r in results:
print(r.score, r.content[:100])
# AI response (streamed)
for event in client.responses.create(message="Summarize the key findings", document_ids=[doc.id]):
if event.type == "text":
print(event.content, end="")
elif event.type == "sources":
print("Sources:", event.content)
Authentication
Pass your API key directly or set the INFRATEX_API_KEY environment variable:
# Explicit
client = Infratex(api_key="infratex_sk_...")
# From environment
import os
os.environ["INFRATEX_API_KEY"] = "infratex_sk_..."
client = Infratex()
Resources
Documents
# Upload
# The SDK keeps this ergonomic one-call flow even though the raw HTTP API
# now creates the document first and polls until parsing is complete.
doc = client.documents.upload("report.pdf")
doc = client.documents.upload("report.pdf", method="standard", collection_id="col-id")
# List
docs = client.documents.list(limit=50, offset=0, collection_id="col-id")
print(docs.total)
for d in docs:
print(d.filename)
# Get
doc = client.documents.get("doc-id")
# Download markdown
md = client.documents.markdown("doc-id")
# Delete
client.documents.delete("doc-id")
# Index
index = client.documents.index("doc-id", method="hybrid")
Searches
results = client.searches.create(
query="What is the EBITDA?",
method="vector",
limit=5,
document_ids=["doc-id"],
)
for r in results:
print(r.score, r.content[:200])
Responses (streaming)
for event in client.responses.create(
message="Summarize the report",
method="hybrid",
limit=5,
document_ids=["doc-id"],
):
if event.type == "text":
print(event.content, end="")
elif event.type == "sources":
print("Sources:", event.content)
elif event.type == "done":
print("\n--- Done ---")
# Managed multi-turn thread with persisted scope
conv = client.conversations.create(
title="Quarterly Analysis",
collection_id="col-id",
)
for event in client.responses.create(
message="How does that compare with the previous quarter?",
method="hybrid",
model="pro",
conversation_id=conv.id,
):
if event.type == "text":
print(event.content, end="")
Collections
col = client.collections.create(name="Q3 Reports")
cols = client.collections.list()
col = client.collections.get("col-id")
client.collections.update("col-id", name="Q4 Reports")
client.collections.delete("col-id")
Conversations
conv = client.conversations.create(title="Analysis", collection_id="col-id")
convs = client.conversations.list()
conv = client.conversations.get("conv-id") # includes messages
client.conversations.delete("conv-id")
Account & Billing
account = client.account.get()
print(account.tenant["email"])
billing = client.billing.get()
print(billing.balance_micros)
Error handling
from infratex import Infratex, InfratexError
client = Infratex(api_key="infratex_sk_...")
try:
doc = client.documents.get("nonexistent-id")
except InfratexError as e:
print(e.status_code) # 404
print(e.code) # error code from the API
print(str(e)) # human-readable message
Configuration
client = Infratex(
api_key="infratex_sk_...",
base_url="https://api.infratex.io", # custom base URL
timeout=60.0, # request timeout in seconds
)
# Use as a context manager
with Infratex(api_key="infratex_sk_...") as client:
doc = client.documents.upload("report.pdf")
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
infratex-0.4.0.tar.gz
(9.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
infratex-0.4.0-py3-none-any.whl
(15.2 kB
view details)
File details
Details for the file infratex-0.4.0.tar.gz.
File metadata
- Download URL: infratex-0.4.0.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
880ede9db6c6e3331c5411ec8501e2e7fb1b142bfab1bdb003075f7c3e569ff8
|
|
| MD5 |
9e7306d7b9bb2e48d2c6a642f77191c4
|
|
| BLAKE2b-256 |
f6b7fdfae67719f1f2a5dfb687613c01753d04650a8b49b0cec43b0cd9d34e99
|
File details
Details for the file infratex-0.4.0-py3-none-any.whl.
File metadata
- Download URL: infratex-0.4.0-py3-none-any.whl
- Upload date:
- Size: 15.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2eefe81e2a64b3c493bc422a200c173ceb88aa23ea04ff2f5a54559f3d3d24f
|
|
| MD5 |
0b59fb5740bbbdcb5751ac4e44564999
|
|
| BLAKE2b-256 |
3cf58f994da456382e6b9bcec8cb54c7fdb1c2d7644e326d3595fd8f02af67f6
|