xberg-io-sdk
Official Python client for the Xberg Enterprise and Xberg Pro document-processing APIs — one client, two targets.
- httpx-based, sync (
XbergClient) and async (AsyncXbergClient) surfaces - One client speaks to both products: shared extraction/jobs/presets/auto-tune/RAG surface, plus capability-gated tier-specific methods (Pro auth and control plane; Enterprise uploads/usage/document diff/enrichment)
- Generated from two OpenAPI 3.1 specs (Enterprise + Pro), then wrapped in ergonomic helpers
- Configurable retry engine (honors
Retry-After, exponential backoff) - Type-annotated end to end,
py.typedshipped
Install
pip install xberg-io-sdk
# or
uv add xberg-io-sdk
Requires Python 3.10+.
Quickstart
Sync — single file with explicit API key
from pathlib import Path
from xberg_io_sdk import XbergClient
# Enterprise (base_url defaults to https://api.xberg.io)
with XbergClient(api_key="kz_...") as client:
job = client.extract_and_wait(file=Path("invoice.pdf"))
if job.result is not None:
print(job.result.content)
Connecting to Xberg Pro
Pro is self-hosted and has no default URL — pass base_url (and, to skip the
/healthz tier probe, target="pro"):
from xberg_io_sdk import XbergClient
with XbergClient(api_key="kz_...", base_url="https://pro.internal", target="pro") as client:
config = client.auth_config() # Pro-only
presets = client.list_saved_presets() # both tiers; the path spelling follows the tier
Saved presets are served by both products under different spellings —
/v1/saved_presets on Enterprise, /v1/saved-presets on Pro. The client
renders the right one from the resolved tier, so the same call works against
either target.
Async — batch extract with parallel waits
import asyncio
from pathlib import Path
from xberg_io_sdk import AsyncXbergClient
async def main() -> None:
async with AsyncXbergClient(api_key="kz_...") as client:
jobs = await client.extract_batch([Path("a.pdf"), Path("b.pdf"), Path("c.pdf")])
results = await client.wait_for_jobs([str(j.id) for j in jobs])
for job in results:
print(job.filename, job.status)
asyncio.run(main())
Public API
One XbergClient (sync) / AsyncXbergClient (async) serves both products.
Constructor: (api_key=None, base_url=None, target=None, timeout=30, headers=None, retries=0, retry_on=..., retry_backoff="exponential").
Shared methods (both tiers):
| Method | Purpose |
|---|---|
extract(file=..., options=..., webhook=...) |
Submit one document, get back a Job. |
extract_batch(files, options=...) |
Submit many documents in ONE multipart request. |
get_job(job_id) |
Fetch current job status / result. |
wait_for_job(job_id, timeout=300, ...) |
Poll until terminal (raises on failed/cancelled). |
wait_for_jobs(job_ids, ...) |
Wait for multiple jobs. |
extract_and_wait(file=..., ...) |
Submit + wait in one call. |
get_job_result(job_id) |
Fetch a job's stored JobResult envelope. |
list_jobs(...), audit(...) |
List jobs / read the audit log. |
cancel_job(job_id) |
Cancel a job (idempotent — also 204s if already terminal). |
list_rag_collections(), rag_retrieve(name, body), get_rag_job(job_id), … |
RAG collections/documents/retrieval. |
delete_rag_documents(name, body) |
Delete documents from a collection by ID list or metadata filter. |
presets(), get_preset(id), get_preset_sample(id, name) |
Curated managed presets. |
list_saved_presets(...), create_saved_preset(body), get_saved_preset(id), update_saved_preset(id, body), delete_saved_preset(id) |
Project-owned saved presets (path spelling follows the tier). |
list_auto_tune_jobs(...), submit_auto_tune(request, files), get_auto_tune_status(id), get_auto_tune_result(id), delete_auto_tune_job(id) |
Auto-tune runs (submit_auto_tune is multipart). |
get_auto_tune_capabilities(), promote_auto_tune_profile(id, body) |
Discover tunable knobs; promote a run to a named profile. |
list_tuning_profiles(...), get_tuning_profile(id), delete_tuning_profile(id) |
Promoted tuning profiles. |
Tier-specific methods are capability-gated — calling one against the wrong tier raises a clear error instead of a raw 404:
- Pro only:
login,auth_config,get_rag_config/set_rag_config - Pro only (control plane):
list_projects/create_project,list_api_keys/create_api_key/revoke_api_key,list_integrations/create_integration/get_integration/delete_integration,connect_integration/disconnect_integration,list_integration_documents/fetch_integration_document - Enterprise only:
versions,get_document,diff/get_diff_job,presign_upload/confirm_upload,usage,list_extraction_events,get_job_page(rawimage/pngbytes),submit_enrich/get_enrich_status,stream_crawl_events(a generator of Server-Sent Events)
Deliberately not exposed
Three documented routes have no client method, on purpose:
GET /readyz— an infrastructure readiness probe for orchestrators, not caller-facing API surface.GET /healthzis exposed indirectly: it is the tier probe behindtarget=None.GET /v1/oauth/callback(Pro) — a browser redirect leg of the OIDC flow. The provider calls it, not an API client.DELETE /auth/account(Pro) — a session-cookie account-deletion flow, not API-key surface.POST /auth/loginis exposed because it mints the session JWT this client can then send as a bearer token.
Errors are raised as one of:
XbergError (base), AuthError (401 and 403), ValidationError,
NotFoundError, RateLimitError (carries retry_after), ServerError,
TimeoutError.
Documentation
- SDK docs: https://docs.sdks.xberg.io
- Full reference and guides: https://enterprise.xberg.io
License
MIT — © Kreuzberg, Inc.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
File details
Details for the file xberg_io_sdk-0.4.0.tar.gz.
File metadata
- Download URL: xberg_io_sdk-0.4.0.tar.gz
- Upload date:
- Size: 516.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c609c1a407e69449e322267b7d13c85d6a9ecb96488cbbd5caec38fab0d17ef9
|
|
| MD5 |
4a090a3fedcdb353af839df38c63678a
|
|
| BLAKE2b-256 |
11d3bc756c1974e45f89d45e9d22b72fa08c23e6d9ee29db3f9bf4636b4da0fa
|
Provenance
The following attestation bundles were made for xberg_io_sdk-0.4.0.tar.gz:
Publisher:
publish.yaml on xberg-io/sdks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xberg_io_sdk-0.4.0.tar.gz -
Subject digest:
c609c1a407e69449e322267b7d13c85d6a9ecb96488cbbd5caec38fab0d17ef9 - Sigstore transparency entry: 2741966007
- Sigstore integration time:
-
Permalink:
xberg-io/sdks@2d10e1c47a037bd95762881a2838714d9ee56edd -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/xberg-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@2d10e1c47a037bd95762881a2838714d9ee56edd -
Trigger Event:
push
-
Statement type:
File details
Details for the file xberg_io_sdk-0.4.0-py3-none-any.whl.
File metadata
- Download URL: xberg_io_sdk-0.4.0-py3-none-any.whl
- Upload date:
- Size: 1.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
655475187a56196722967f4089a4a6bdf315377e3c65fac2fb256976ab406e45
|
|
| MD5 |
a17edfd549ab6443f1cf17ef8a505e75
|
|
| BLAKE2b-256 |
788e7212c077569cf072bedd2a266937a3fe18fae032593635703ef4d77af090
|
Provenance
The following attestation bundles were made for xberg_io_sdk-0.4.0-py3-none-any.whl:
Publisher:
publish.yaml on xberg-io/sdks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xberg_io_sdk-0.4.0-py3-none-any.whl -
Subject digest:
655475187a56196722967f4089a4a6bdf315377e3c65fac2fb256976ab406e45 - Sigstore transparency entry: 2741966066
- Sigstore integration time:
-
Permalink:
xberg-io/sdks@2d10e1c47a037bd95762881a2838714d9ee56edd -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/xberg-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@2d10e1c47a037bd95762881a2838714d9ee56edd -
Trigger Event:
push
-
Statement type: