Skip to main content

Python SDK for the 0xPdf PDF-to-JSON API

Project description

oxpdf

Python SDK for the 0xPdf PDF-to-JSON API.

Installation

pip install "oxpdf @ git+https://github.com/risha-max/oxpdf-python.git@main"

Quick Start

from oxpdf import Client

client = Client(api_key="your_api_key")

# Parse with a built-in template
result = client.parse("invoice.pdf", schema_template="invoice")
print(result["data"])

# Parse with a custom schema
result = client.parse("doc.pdf", schema={
    "type": "object",
    "properties": {
        "title": {"type": "string"},
        "amount": {"type": "number"}
    }
})

# Stream parse with real-time progress
for event in client.parse_stream("large.pdf", schema_template="invoice"):
    if event["event"] == "page":
        print(f"Progress: {event['data'].get('message')}")
    elif event["event"] == "complete":
        print("Done!", event["data"])

# Queue async processing and wait for completion
queued = client.upload("invoice.pdf", schema_id="your_schema_id")
status = client.wait_for_job(
    queued["job_id"],
    interval_seconds=2.0,
    timeout_seconds=180.0,
)
print(status["status"])

Error Handling

from oxpdf import Client, OxPDFError

client = Client(api_key="your_api_key")

try:
    result = client.parse("doc.pdf", schema_template="invoice")
except OxPDFError as e:
    print(f"API error: {e} (status: {e.status_code})")
except FileNotFoundError:
    print("PDF file not found")

Full API Reference

Client

Client(
  api_key,
  base_url="https://api.0xpdf.io/api/v1",
  timeout=120,
  max_retries=2,
  retry_delay=0.5,
  backoff_multiplier=2.0
)

PDF Parsing

Method Description
parse(file_path, *, schema, schema_template, schema_id, use_ocr, ocr_engine, pages) Sync parse — returns structured JSON
parse_stream(file_path, *, schema, schema_template, schema_id, use_ocr, ocr_engine, pages, batch_size) Streaming parse via SSE — yields events
validate(file_path, *, schema_id, schema_name) Dry-run validation without processing

Async Jobs

Method Description
upload(file_path, *, schema_id, schema_name, use_ocr, ocr_engine) Queue PDF for background processing
job_status(job_id) Poll async job status
wait_for_job(job_id, *, interval_seconds, timeout_seconds) Poll until completed/failed

Image Extraction

Method Description
extract_images(file_path, *, pages, min_width, min_height, use_ocr, ocr_engine) Extract images from a PDF
list_images(*, limit, offset) List extracted images
get_image_url(image_id, *, expiration_seconds) Get/refresh presigned URL
delete_image(image_id) Delete a specific image
delete_all_images() Delete all images

File Management

Method Description
list_files() List uploaded PDFs
get_file(pdf_id) Get PDF metadata + download URL
delete_file(pdf_id) Delete an uploaded PDF

Schema CRUD

Method Description
list_schemas() List saved schemas
get_schema(schema_id) Get schema with full definition
create_schema(name, schema, *, is_default) Create a new schema
update_schema(schema_id, name, schema, *, is_default) Update existing schema
delete_schema(schema_id) Delete a schema
set_default_schema(schema_id) Set as default
generate_schema(description, *, refinement, current_schema, selected_text) AI-generate a schema

Templates

Method Description
list_templates() Parse templates (invoice, receipt, etc.)
list_schema_templates() Schema editor templates
get_schema_template(template_id) Get template with full schema

Analytics & Pricing

Method Description
get_analytics() Usage analytics
submit_feedback(feedback) Submit feedback
get_pricing(*, billing_cycle) Get pricing tiers
get_current_tier() Current subscription & quota

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oxpdf-0.1.3.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oxpdf-0.1.3-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file oxpdf-0.1.3.tar.gz.

File metadata

  • Download URL: oxpdf-0.1.3.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for oxpdf-0.1.3.tar.gz
Algorithm Hash digest
SHA256 04e5b49590e419bd785275fcc5ce98ae124d2853e9adc37f9ea9b178498cbed0
MD5 d2ddc220ddbc0346ba012865b82c35e1
BLAKE2b-256 28c1c0f38a7bb4c6f259dfa94517496f34e109159cdc674c5490376b690ebae0

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxpdf-0.1.3.tar.gz:

Publisher: publish.yml on risha-max/oxpdf-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxpdf-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: oxpdf-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for oxpdf-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fa8fe041157dd28451621fd445d69d460373b9c2c71d1f134a7b436b80d78ba8
MD5 0cea742b1a9f8863ca6fdd3b72307221
BLAKE2b-256 174c09bbd834e303ecde97a5e042b46aa083dc7c735257114353ae9acbb9138e

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxpdf-0.1.3-py3-none-any.whl:

Publisher: publish.yml on risha-max/oxpdf-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page