Official Python SDK for the Iteration Layer API.
pip install iterationlayerfrom iterationlayer import IterationLayer
client = IterationLayer(api_key="il_your_api_key")Extract structured data from documents using AI.
result = client.extract(
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.95Resize, crop, convert, and apply effects to images.
result = client.transform(
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"])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"])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"])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"])Use the *_async methods to receive results via webhook instead of waiting for the response.
result = client.extract_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",
)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(...)from iterationlayer import IterationLayerError
try:
result = client.extract(...)
except IterationLayerError as e:
print(e.status_code) # 422
print(e.error_message) # "Validation error: ..."Full documentation is available at https://iterationlayer.com/docs.
Please report bugs and request features in the issues repository.