Skip to main content

Official Python SDK for the Iteration Layer API

Project description

Iteration Layer Python SDK

Official Python SDK for the Iteration Layer API.

Installation

pip install iterationlayer

Usage

from iterationlayer import IterationLayer

client = IterationLayer(api_key="il_your_api_key")

Document Extraction

Extract structured data from documents using AI.

result = client.extract_document(
    files=[{"type": "url", "name": "invoice.pdf", "url": "https://example.com/invoice.pdf"}],
    schema={
        "fields": [
            {"type": "TEXT", "name": "company_name", "description": "The company name"},
            {"type": "CURRENCY_AMOUNT", "name": "total", "description": "The invoice total"},
        ]
    },
)

print(result["company_name"]["value"])       # "Acme Corp"
print(result["company_name"]["confidence"])  # 0.95

Website Extraction

Extract structured data from public website pages. Static fetching is used by default; set should_render_javascript when a page needs browser rendering.

result = client.extract_website(
    file={
        "type": "url",
        "url": "https://example.com/pricing",
        "fetch_options": {"should_render_javascript": True},
    },
    schema={
        "fields": [
            {"type": "TEXT", "name": "plan_name", "description": "The pricing plan name"},
            {"type": "CURRENCY_AMOUNT", "name": "price", "description": "The monthly price"},
        ]
    },
)

print(result["plan_name"]["value"])  # "Pro"

Image Transformation

Resize, crop, convert, and apply effects to images.

result = client.transform_image(
    file={"type": "url", "name": "photo.jpg", "url": "https://example.com/photo.jpg"},
    operations=[
        {"type": "resize", "width_in_px": 800, "height_in_px": 600, "fit": "cover"},
        {"type": "convert", "format": "webp", "quality": 85},
    ],
)

import base64
image_bytes = base64.b64decode(result["buffer"])

Image Generation

Compose images from layer definitions.

result = client.generate_image(
    dimensions={"width_in_px": 1200, "height_in_px": 630},
    layers=[
        {"type": "solid-color", "index": 0, "hex_color": "#1a1a2e"},
        {
            "type": "text",
            "index": 1,
            "text": "Hello World",
            "font_name": "Inter",
            "font_size_in_px": 48,
            "text_color": "#ffffff",
            "position": {"x_in_px": 50, "y_in_px": 50},
            "dimensions": {"width_in_px": 1100, "height_in_px": 530},
        },
    ],
    output_format="png",
)

import base64
image_bytes = base64.b64decode(result["buffer"])

Document Generation

Generate PDF, DOCX, EPUB, or PPTX from structured data.

result = client.generate_document(
    format="pdf",
    document={
        "metadata": {"title": "Invoice #123"},
        "page": {
            "size": {"preset": "A4"},
            "margins": {"top_in_pt": 36, "bottom_in_pt": 36, "left_in_pt": 36, "right_in_pt": 36},
        },
        "styles": {
            "text": {"font_family": "Helvetica", "font_size_in_pt": 12, "line_height": 1.5, "color": "#000000"},
            "headline": {"font_family": "Helvetica", "font_size_in_pt": 24, "color": "#000000", "spacing_before_in_pt": 12, "spacing_after_in_pt": 6},
            "link": {"color": "#0066cc"},
            "list": {"indent_in_pt": 18, "spacing_between_items_in_pt": 4},
            "table": {
                "header": {"background_color": "#f0f0f0", "font_family": "Helvetica", "font_size_in_pt": 12, "color": "#000000", "padding_in_pt": 6},
                "body": {"font_family": "Helvetica", "font_size_in_pt": 12, "color": "#000000", "padding_in_pt": 6},
            },
            "grid": {"gap_in_pt": 12},
            "separator": {"color": "#cccccc", "thickness_in_pt": 1, "margin_top_in_pt": 12, "margin_bottom_in_pt": 12},
            "image": {"alignment": "center", "margin_top_in_pt": 8, "margin_bottom_in_pt": 8},
        },
        "content": [
            {"type": "headline", "level": "h1", "text": "Invoice #123"},
            {"type": "paragraph", "markdown": "Thank you for your business."},
        ],
    },
)

import base64
pdf_bytes = base64.b64decode(result["buffer"])

Sheet Generation

Generate CSV, Markdown, or XLSX spreadsheets from structured data.

result = client.generate_sheet(
    format="xlsx",
    sheets=[
        {
            "name": "Invoices",
            "columns": [
                {"name": "Company", "width": 20},
                {"name": "Total", "width": 15},
            ],
            "rows": [
                [
                    {"value": "Acme Corp"},
                    {"value": 1500.50, "format": "currency", "currency_code": "EUR"},
                ],
            ],
        },
    ],
)

import base64
sheet_bytes = base64.b64decode(result["buffer"])

Webhooks (Async)

Use the *_async methods to receive results via webhook instead of waiting for the response.

result = client.extract_document_async(
    files=[{"type": "url", "name": "invoice.pdf", "url": "https://example.com/invoice.pdf"}],
    schema={
        "fields": [
            {"type": "CURRENCY_AMOUNT", "name": "total", "description": "The invoice total"},
        ]
    },
    webhook_url="https://your-app.com/webhooks/extraction",
)

Context Manager

The client can be used as a context manager to ensure the underlying HTTP connection is closed.

with IterationLayer(api_key="il_your_api_key") as client:
    result = client.extract_document(...)

Error Handling

from iterationlayer import IterationLayerError

try:
    result = client.extract_document(...)
except IterationLayerError as e:
    print(e.status_code)     # 422
    print(e.error_message)   # "Validation error: ..."

Documentation

Full documentation is available at https://iterationlayer.com/docs.

Issues & Feedback

Please report bugs and request features in the issues repository.

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

iterationlayer-2.0.3.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

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

iterationlayer-2.0.3-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file iterationlayer-2.0.3.tar.gz.

File metadata

  • Download URL: iterationlayer-2.0.3.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for iterationlayer-2.0.3.tar.gz
Algorithm Hash digest
SHA256 2dd4d4ba4a2c7dfd422feb42e2036d7a8b5c0a4f44b205cf43d9d9d6a3b38918
MD5 c9c7f7dfbabba5d43d176f3619780ee9
BLAKE2b-256 e633742b37e7f6d3c46d440a490e123a22472d07ba1a02f4d5de1048013a15b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for iterationlayer-2.0.3.tar.gz:

Publisher: publish.yml on iterationlayer/sdk-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 iterationlayer-2.0.3-py3-none-any.whl.

File metadata

  • Download URL: iterationlayer-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for iterationlayer-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 77cdf88928116abfbfa55e009c60b8e6ab1212049a9b67c2ccc8c257eafe35e3
MD5 52804956afef7aeb1b218b8535d64c28
BLAKE2b-256 22e9a12c60ca3dd99bc2e39bfc35d62bbb31a375a22a50ce196333fb3dccc50f

See more details on using hashes here.

Provenance

The following attestation bundles were made for iterationlayer-2.0.3-py3-none-any.whl:

Publisher: publish.yml on iterationlayer/sdk-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